Service业务逻辑层

Service业务逻辑层

业务逻辑层代表用户完成的一个功能,有一个或多个Dao的调用组成。一个功能可能需要多个数据库操作,就要多个Dao层的方法。

软件提供的每一个功能都叫业务,比如转账(包括存款和取款两个方法)

 

业务层:

package com.qf.person;

public class PersonServiceImpl {
   //1.注册,一个业务功能由多个Dao的访问操作组成.
   public void register(Person person){
       PersonDaoImpl personDao = new PersonDaoImpl();
       //1.查询用户是否存在
       Person persons = personDao.select(person.getName());
       //2.用户不存在,则新增。
       if(persons==null){
           personDao.insert(person);
           System.out.println("注册成功!");
      }else
      {
           //存在,就返回已经注册
           System.out.println("该用户已存在");
      }
  }

}

实体类;

package com.qf.person;

import java.util.Date;

/**
*
* id INT PRIMARY KEY AUTO_INCREMENT,
*     NAME VARCHAR(20) NOT NULL,
*     age INT NOT NULL,
*     bornDate DATE,
*     email VARCHAR(20),
*     address VARCHAR(20)
*/
public class Person {
   private int id;
   private  String name;
   private int age;
   //date是java.util类型,不是java.sql
   private Date date;
   private String email;
   private String address;

   //构造方法
   public Person(){

  }

   public Person(String name, int age, Date date, String email, String address) {
       this.name = name;
       this.age = age;
       this.date = date;
       this.email = email;
       this.address = address;
  }

   public Person(int id, String name, int age, Date date, String email, String address){
       this.id=id;
       this.name=name;
       this.age=age;
       this.date=date;
       this.email=email;
       this.address=address;

  }

   @Override
   public String toString() {
       return "Person{" +
               "id=" + id +
               ", name='" + name + '\'' +
               ", age=" + age +
               ", date=" + date +
               ", email='" + email + '\'' +
               ", address='" + address + '\'' +
               '}';
  }

   public int getId() {
       return id;
  }

   public void setId(int id) {
       this.id = id;
  }

   public String getName() {
       return name;
  }

   public void setName(String name) {
       this.name = name;
  }

   public int getAge() {
       return age;
  }

   public void setAge(int age) {
       this.age = age;
  }

   public Date getDate() {
       return date;
  }

   public void setDate(Date date) {
       this.date = date;
  }

   public String getEmail() {
       return email;
  }

   public void setEmail(String email) {
       this.email = email;
  }

   public String getAddress() {
       return address;
  }

   public void setAddress(String address) {
       this.address = address;
  }
}

dao层;

package com.qf.person;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class PersonDaoImpl {
   //dao层只做数据库访问操作,不做数据库逻辑判断
   //新增
   //dao层其实就是实现对数据库一张表的操作的复用,每个用户对一张表的操作都可以通过这个类完成
   public int insert(Person person1){
       Connection connection = null;
       PreparedStatement preparedStatement = null;
       String sql = "insert into person(name,age,borndate,email,address)values(?,?,?,?,?);";
       try {
           connection = DBUtils1.getConnection();
           preparedStatement=connection.prepareStatement(sql);
           preparedStatement.setString(1,person1.getName());
           preparedStatement.setInt(2,person1.getAge());
           //setDate,set的是sql.Date类型的,而在java应用层getborndate拿到的是util.Date类型的
           //把person.getdate拿到的数句用自己创建的日期工具类进行转化即可
           preparedStatement.setDate(3,DateUtils.utilToSql(person1.getDate()));
           preparedStatement.setString(4,person1.getEmail());
           preparedStatement.setString(5,person1.getAddress());
           int result = preparedStatement.executeUpdate();
           return result;

      } catch (SQLException e) {
           e.printStackTrace();
      }finally {
           DBUtils1.closeAll(connection,preparedStatement,null);

      }

       return 0;
  }
   //修改
   public int update(Person person){
   Connection connection =null;
   PreparedStatement preparedStatement = null;
   String sql ="update person set name=?,age=?,borndate=?,email=?,address=?where id=?";
       try {
           preparedStatement =connection.prepareStatement(sql);
           preparedStatement.setString(1,person.getName());
           preparedStatement.setInt(2,person.getAge());
           preparedStatement.setDate(3,DateUtils.utilToSql(person.getDate()));
           preparedStatement.setString(4,person.getEmail());
           preparedStatement.setString(5,person.getAddress());
           preparedStatement.setInt(6,person.getId());
           int result = preparedStatement.executeUpdate();
           return result;
      } catch (SQLException e) {
           e.printStackTrace();
      }finally {
           DBUtils1.closeAll(connection,preparedStatement,null);

      }
       return 0;
  }
   //删除
   public int delete(int id){
       Connection connection = null;
       PreparedStatement preparedStatement = null;
       String sql ="delete from person where id=?;";
       connection = DBUtils1.getConnection();
       try {
           preparedStatement = connection.prepareStatement(sql);
           preparedStatement.setInt(1,id);
           int result = preparedStatement.executeUpdate();
           return  result;
      } catch (SQLException e) {
           e.printStackTrace();
      }finally {
           DBUtils1.closeAll(connection,preparedStatement,null);
      }
       return 0;
  }
   //查单个
   public Person select(int id){
      Connection connection = null;
      PreparedStatement preparedStatement = null;
       ResultSet resultSet = null;
       String sql = "select * from person where id=?";
       Person person = null;//创建一个Person类型的值,默认为空,方便创建对象
       try {
           connection= DBUtils1.getConnection();
           preparedStatement=connection.prepareStatement(sql);
           preparedStatement.setInt(1,id);
           resultSet = preparedStatement.executeQuery();
           //因为查到的结果是单行数据,所以if循环优于while循环
           if(resultSet.next()){
               person=new Person();//new一个Person对象
               int pid = resultSet.getInt("id");
               String name = resultSet.getString("name");
               int age = resultSet.getInt("age");
               Date bornDate = resultSet.getDate("borndate");
               String email = resultSet.getString("email");
               String address= resultSet.getString("address");
               person.setId(pid);
               person.setName(name);
               person.setAge(age);
               person.setDate(bornDate);
               person.setEmail(email);
               person.setAddress(address);

          }
      } catch (SQLException e) {
           e.printStackTrace();
      }finally {
           DBUtils1.closeAll(connection,preparedStatement,resultSet);
      }
       return null;
  }
   //查所有
   public List<Person> selectAll(){
       Connection connection = null;
       PreparedStatement preparedStatement = null;
       ResultSet resultSet = null;
       Person person1= null;
       List<Person> person1List = new ArrayList<>();
       try {
           connection = DBUtils1.getConnection();
           preparedStatement = connection.prepareStatement("select * from person1");
           resultSet = preparedStatement.executeQuery();
           while (resultSet.next()){//每查询到一行数据,就把这行数据封装到person对象里,然后把这一行对象的数据存放在集合中。
               int pid = resultSet.getInt("id");
               String name = resultSet.getString("name");
               int age = resultSet.getInt("age");
               Date bornDate = resultSet.getDate("borndate");
               String email = resultSet.getString("email");
               String address= resultSet.getString("address");
               person1 = new Person(pid,name,age,bornDate,email,address);
           person1List.add(person1);
          }
           return person1List;
      } catch (SQLException e) {
           e.printStackTrace();
      }
       return null;
  }
   public Person select(String name){
       Connection connection = null;
       PreparedStatement preparedStatement = null;
       ResultSet resultSet = null;
       String sql = "select * from person where name =?";
       Person person = null;//创建一个Person类型的值,默认为空,方便创建对象
       try {
           connection= DBUtils1.getConnection();
           preparedStatement=connection.prepareStatement(sql);
           preparedStatement.setString(1,name);
           resultSet = preparedStatement.executeQuery();
           //因为查到的结果是单行数据,所以if循环优于while循环
           if(resultSet.next()){
               person=new Person();//new一个Person对象
               int pid = resultSet.getInt("id");
               String pname = resultSet.getString("name");
               int age = resultSet.getInt("age");
               Date bornDate = resultSet.getDate("borndate");
               String email = resultSet.getString("email");
               String address= resultSet.getString("address");
               person.setId(pid);
               person.setName(pname);
               person.setAge(age);
               person.setDate(bornDate);
               person.setEmail(email);
               person.setAddress(address);

          }
           return person;
      } catch (SQLException e) {
           e.printStackTrace();
      }finally {
           DBUtils1.closeAll(connection,preparedStatement,resultSet);
      }
       return null;
  }
}

测试类;

package com.qf.person;

import java.sql.SQLOutput;

public class TestRegister {
   public static void main(String[] args) {
       PersonServiceImpl personService = new PersonServiceImpl();
       Person person = new Person("marry",12,DateUtils.strToUtil("1989-01-02"),"123@.com","漯河市");
       personService.register(person);
  }
}

运行结果:

注册成功!

posted on 2023-02-03 10:36  张铁蛋666  阅读(117)  评论(0编辑  收藏  举报

导航