JDBC封装-Java(新手)

JDBC封装-Java(新手)

 

 

JDBC的封装,自己总结的自己总结的自己总结的

 


 

dao (代码分层)命名规范:


    1、com.XXX.dao    存放dao相关的类型 例如 StudentDAOImpl 处理 数据库的链接 存取数据


    2、com.XXX.servlet    存放servlet相关的类 例如:StudentServlet 处理 与浏览器交互的类


    3、com.XXX.entity     存放实体类 例如 Student 接受数据库对象模型


    4、com.XXX.util         存放工具类 例如 DBUtil

 


操作步骤: 


首先,创建一个数据库表单,起名为Studetn。内有:id、name、age、sex四个属性。将id设为主键并且设置自动递增。


 

第二,在数据库建立完表单之后,在Java中创建一个数据库表单的实体类。(类名和表名一致)

内有:

    1、表单的属性值和属性的基本数据类型。

    2、无参的构造函数。

    3、有参的构造函数。

    4、Get和Set方法。

    5、toString方法。


 

第三:创建一个工具类。

内有:

    1、写一个静态代码块。将注册驱动写入其中。

       原因:驱动只需要加载一次即可,

          所以写在静态代码段中(static),类的静态代码块,随着类的加载,只执行一次。

    2、将建立连接进行封装。

    3、将增删改的通用方法也一并进行封装。


 

第四,先在dao层创建一个接口

内有:

    1、返回值类型和方法名、参数。

    1.1、可根据增删改分为不同的写法。

    1.2、两个以上的参数,全部使用对象传参。


 

第五:在dao层下创建一个包,命名为Impl,在这个包内创建一个接口实现类。

内有:

    1、写入SQL语句,要增删改的内容可用占位符代替。

    2、返回在工具类里给增删改通用方法设定的调用方法。

    3、在返回调用方法里加入占位符所代表的对象。


 

第六:在servlet里创建测试类。

内有:

    1、通过创建的实体类来赋值。

    2、通过实现类来调用接口里的方法。

    3、调用方法。


 

 

实例:

 


第一步:创建数据库表单。

 

    

 

 


 

 第二步: 创建一个数据库表单的实体类。

     

 1 package com.Wuchuang.entiy;
 2 
 3 public class Student {
 4 
 5     private int id;
 6     private String name;
 7     private int age;
 8     private String sex;
 9 
10 
11     public Student() {
12     }
13 
14     public Student(int id, String name, int age, String sex) {
15         this.id = id;
16         this.name = name;
17         this.age = age;
18         this.sex = sex;
19     }
20 
21     public int getId() {
22         return id;
23     }
24 
25     public void setId(int id) {
26         this.id = id;
27     }
28 
29     public String getName() {
30         return name;
31     }
32 
33     public void setName(String name) {
34         this.name = name;
35     }
36 
37     public int getAge() {
38         return age;
39     }
40 
41     public void setAge(int age) {
42         this.age = age;
43     }
44 
45     public String getSex() {
46         return sex;
47     }
48 
49     public void setSex(String sex) {
50         this.sex = sex;
51     }
52 
53     @Override
54     public String toString() {
55         return "Student{" +
56                 "id=" + id +
57                 ", name='" + name + '\'' +
58                 ", age=" + age +
59                 ", sex='" + sex + '\'' +
60                 '}';
61     }
62 }

 


第三步:创建一个工具类。

    

 1 package com.Wuchuang.util;
 2 
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.PreparedStatement;
 6 import java.sql.SQLException;
 7 
 8 public class DBUtil {
 9     //注册驱动,驱动只需要加载一次即可
10     //所以写在静态代码段中(static)
11     //类的静态代码块,随着类的加载,只执行一次。
12     static {
13         try {
14             Class.forName("com.mysql.jdbc.Driver");
15         } catch (ClassNotFoundException e) {
16             e.printStackTrace();
17         }
18     }
19     //建立链接。需要单独创建一个方法。
20     //通过返回值返回链接对象。
21     //链接每次用完之后就会关闭。
22     public static Connection getConnection() {
23         try {
24             return DriverManager.getConnection("jdbc:mysql:///test?characterEnconding=UTF-8", "数据库账户", "密码");
25         } catch (SQLException e) {
26             e.printStackTrace();
27         }
28         return null;
29     }
30 
31     /** 增删改的通用方法
32      * @param  String sql       要执行的sql
33      * @param  Object[] obj    对象类型的数组  里面存放着 sql执行的占位符参数
34      *         Object...       可变参数
35      * */
36     public  static  boolean executeUpdate(String sql,Object... args){
37         PreparedStatement ps = null;
38 
39         try {
40             ps = getConnection().prepareStatement(sql);
41             for (int i = 0;i<args.length;i++){
42                 ps.setObject(i+1,args[i]);
43             }
44             int i = ps.executeUpdate();
45             if (i>0)return true;
46         } catch (SQLException e) {
47             e.printStackTrace();
48         }
49         return  false;
50     }
51 }

 


第四步:在dao层创建一个接口。

 1 package com.Wuchuang.dao;
 2 
 3 import com.Wuchuang.entiy.Student;
 4 
 5 public interface IStudentDAO {
 6     /**
 7      * 添加新学生
 8      * insert  into student  (name,age,sex) values (?,?,?);
 9      * 两个以上的参数 全用对象传参
10      * @param  学生对象 里面存放当着需要添加的学生信息
11      * @return  boolean  成功返回 true  失败 返回 false
12      */
13         boolean add (Student s);
14 
15 
16     /**
17      * 根据id删除学生,所以返回值可以直接填写id的数据类型和id
18      * delete from student where id = ?
19      */
20         boolean  delete(int  id);
21 
22 
23     /**
24      * 根据id修改学生
25      * update student set name = ?,age= ? where id = ?
26      */
27         boolean update(Student s);
28 }

 


 

第五步:创建一个接口实现类。

 1 package com.Wuchuang.dao.Impl;
 2 
 3 import com.Wuchuang.dao.IStudentDAO;
 4 import com.Wuchuang.entiy.Student;
 5 import com.Wuchuang.util.DBUtil;
 6 
 7 public class StudentDAOImpl implements IStudentDAO {
 8     @Override
 9     public boolean add(Student s) {
10         String sql = "insert into Student (name,age,sex) values (?,?,?)";
11 
12         return DBUtil.executeUpdate(sql,s.getName(),s.getAge(),s.getSex());
13     }
14 
15     @Override
16     public boolean delete(int id) {
17         String sql = "delete from Student where id = ?";
18 
19         return DBUtil.executeUpdate(sql,id);
20     }
21 
22     @Override
23     public boolean update(Student s) {
24         String sql = "update Student set name = ?,age = ?,sex = ? where id = ?";
25 
26         return DBUtil.executeUpdate(sql,s.getName(),s.getAge(),s.getSex(),s.getId());
27 
28     }
29 }

 


 

第六步:进行测试。

 1 package com.Wuchuang.servlet;
 2 
 3 import com.Wuchuang.dao.IStudentDAO;
 4 import com.Wuchuang.dao.Impl.StudentDAOImpl;
 5 import com.Wuchuang.entiy.Student;
 6 import org.junit.Test;
 7 
 8 public class ServletTest{
 9     @Test
10     public void test(){
11         Student s = new Student(1,"吃饭",38,"男");
12 
13         IStudentDAO dao =  new StudentDAOImpl();
14 
15         dao.add(s);
16     }
17 
18 }

 


2019年4月11日17:22:31 

posted @ 2019-04-11 17:19 浪子。 阅读( ...) 评论( ...) 编辑 收藏
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值