java jdbc封装_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 packagecom.Wuchuang.entiy;2
3 public classStudent {4
5 private intid;6 privateString name;7 private intage;8 privateString sex;9
10
11 publicStudent() {12 }13
14 public Student(int id, String name, intage, String sex) {15 this.id =id;16 this.name =name;17 this.age =age;18 this.sex =sex;19 }20
21 public intgetId() {22 returnid;23 }24
25 public void setId(intid) {26 this.id =id;27 }28
29 publicString getName() {30 returnname;31 }32
33 public voidsetName(String name) {34 this.name =name;35 }36
37 public intgetAge() {38 returnage;39 }40
41 public void setAge(intage) {42 this.age =age;43 }44
45 publicString getSex() {46 returnsex;47 }48
49 public voidsetSex(String sex) {50 this.sex =sex;51 }52
53 @Override54 publicString toString() {55 return "Student{" +
56 "id=" + id +
57 ", name='" + name + '\'' +
58 ", age=" + age +
59 ", sex='" + sex + '\'' +
60 '}';61 }62 }
第三步:创建一个工具类。
1 packagecom.Wuchuang.util;2
3 importjava.sql.Connection;4 importjava.sql.DriverManager;5 importjava.sql.PreparedStatement;6 importjava.sql.SQLException;7
8 public classDBUtil {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 staticConnection 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 *@paramString sql 要执行的sql33 *@paramObject[] obj 对象类型的数组 里面存放着 sql执行的占位符参数34 * Object... 可变参数35 **/
36 public static booleanexecuteUpdate(String sql,Object... args){37 PreparedStatement ps = null;38
39 try{40 ps =getConnection().prepareStatement(sql);41 for (int i = 0;i0)return true;46 } catch(SQLException e) {47 e.printStackTrace();48 }finally {
close(conn,ps,null);
}
49 return false;50 }51 }
1 //c查询的通用方法
2 public static List>executeQuery(String sql,Object... args){3 Connection conn = null;4 PreparedStatement ps = null;5 ResultSet set = null;6 try{7 conn =DBUtil.getConnection();8 ps =conn.prepareStatement(sql);9 /*有可能有参数*/
10 for (int i=0;i
14 set =ps.executeQuery();15 /*需要将所有数据都存放到 List中 每一行 用一个 map存放*/
16 List> list = new ArrayList<>();17 /*获取本次查询结果集有多少列*/
18 int count =set.getMetaData().getColumnCount();19
20 while(set.next()){21 Map map = new HashMap<>();//一行数据 用一个map 接收
22
23 for(int i=0;i
28 list.add(map);29 }30 returnlist;31 } catch(Exception e) {32 e.printStackTrace();33 }finally{34 close(conn,ps,set);35 }36 return null;37 }38
39 / /关闭的通用方法40 private static voidclose(Connection conn,PreparedStatement st,ResultSet set){41 try{42 if(set!=null){43 set.close();44 }45 if(st!=null){46 st.close();47 }48 if(conn != null){49 conn.close();50 }51 }catch(Exception e){52 e.printStackTrace();53 }54 }55 }
第四步:在dao层创建一个接口。
1 packagecom.Wuchuang.dao;2
3 importcom.Wuchuang.entiy.Student;4
5 public interfaceIStudentDAO {6 /**
7 * 添加新学生8 * insert into student (name,age,sex) values (?,?,?);9 * 两个以上的参数 全用对象传参10 *@param学生对象 里面存放当着需要添加的学生信息11 *@returnboolean 成功返回 true 失败 返回 false12 */
13 booleanadd (Student s);14
15
16 /**
17 * 根据id删除学生,所以返回值可以直接填写id的数据类型和id18 * delete from student where id = ?19 */
20 boolean delete(intid);21
22
23 /**
24 * 根据id修改学生25 * update student set name = ?,age= ? where id = ?26 */
27 booleanupdate(Student s);28 }
第五步:创建一个接口实现类。
1 packagecom.Wuchuang.dao.Impl;2
3 importcom.Wuchuang.dao.IStudentDAO;4 importcom.Wuchuang.entiy.Student;5 importcom.Wuchuang.util.DBUtil;6
7 public class StudentDAOImpl implementsIStudentDAO {8 @Override9 public booleanadd(Student s) {10 String sql = "insert into Student (name,age,sex) values (?,?,?)";11
12 returnDBUtil.executeUpdate(sql,s.getName(),s.getAge(),s.getSex());13 }14
15 @Override16 public boolean delete(intid) {17 String sql = "delete from Student where id = ?";18
19 returnDBUtil.executeUpdate(sql,id);20 }21
22 @Override23 public booleanupdate(Student s) {24 String sql = "update Student set name = ?,age = ?,sex = ? where id = ?";25
26 returnDBUtil.executeUpdate(sql,s.getName(),s.getAge(),s.getSex(),s.getId());27
28 }29 }
第六步:进行测试。
1 packagecom.Wuchuang.servlet;2
3 importcom.Wuchuang.dao.IStudentDAO;4 importcom.Wuchuang.dao.Impl.StudentDAOImpl;5 importcom.Wuchuang.entiy.Student;6 importorg.junit.Test;7
8 public classServletTest{9 @Test10 public voidtest(){11 Student s = new Student(1,"吃饭",38,"男");12
13 IStudentDAO dao = newStudentDAOImpl();14
15 dao.add(s);16 }17
18 }
2019年4月11日17:22:31
java jdbc封装_JDBC封装-Java(新手)相关推荐
- java jdbc 增删改封装_JAVA JDBC 常规增删改查简单封装
JAVA JDBC 常规增删改查简单封装,可满足大多基本要求 作用: 1, 查询列表是直接返回List对象,不必再遍历: 2, 单条查询直接返回对象: 3, 执行sql仅需一个方法搞定: packag ...
- jdbc与java数据库编程_JDBC与JAVA数据库编程
一.JDBC的概念 1. JDBC (Java DataBase Connectivity) Java数据库连接 a) 主要提供java数据库应用程序的API支持 2. JDBC的主要功能 a) 创建 ...
- Java JDBC连接Oracle,java面试题,java初级笔试题
写在最前面,我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家.扫码加微信好友进[程序员面试学习交流群],免费领取.也欢迎各位一起在群里探讨技术. 1. ...
- java jdbc 工具_JDBC 工具类
经过上面的学习,会发现增删改查都有很多共同点,不同之处只是SQL语句和接收返回值的方式不同,那么为了使程序的复用性更好,我们通常把相同的代码提取出来.下面的代码演示一个通过提取出来的工具类进行新增操作 ...
- java jdbc脚本_关于java:使用MySQL和JDBC运行.sql脚本
我开始使用MySQL和JDBC. Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnectio ...
- java jdbc 连接mysql数据库,Java 通过JDBC连接Mysql数据库
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口 ...
- java rds 数据库_JDBC(java数据库连接)和阿里云RDS数据库
这两天挖洞的时候,拿到了一个配置生产环境的源码,看一下就能看出来是配置 首先给大家看下源码: 因为我暂时还没有学过java,所以刚看到这个,就没有这个概念,只以为是配置个 首先我们来了解下JDBC:J ...
- Java JDBC中,MySQL字段类型到JAVA类型的转换
转载自:https://www.cnblogs.com/waterystone/p/6226356.html 1. 概述 在使用Java JDBC时,你是否有过这样的疑问:MySQL里的数据类型到底该 ...
- java jdbc mysql_java jdbc
Java工程师必知词汇:JDBC |名词定义| Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接 ...
最新文章
- 用于python环境下的数据操作_数据分析(一):环境搭建,以及初步操作文件
- Python中使用高德API实现经纬度转地名
- vs2005常用的调试方法
- Python升级至2.7方法
- 返回一个一维整数数组中最大子数组的和
- mysql基本命令总结
- 5.Knockout.Js(自定义绑定)
- 一个小型的中文文本分类系统(项目链接文末)——《ML算法原理和实践》学习笔记
- python你!_你都用 Python 来做什么?
- davinci项目服务器无法,【工程管理】为达芬奇建一个项目管理服务器 多人协同调色...
- Linux 私房菜 笔记(完结)
- 张老师面试题讲解——交通信号灯
- 第一篇:零基础入门金融风控之风控指标体系清单
- 英语听力采用计算机化考试,高考英语复习资料及听力机考特点与应对建议
- 杀戮尖塔java启动_slay the spire杀戮尖塔无法启动
- iOS11.3 beta5专为提升苹果X速度?网友:iPhone6S的我们怎么办
- 利用计算图计算公积金余额
- 罗克韦尔AB PLC ControlLogix PLC的介绍和选型
- 黄灯闪烁c语言程序,模拟交通灯C程序,用定时器0,如何实现黄灯闪烁功能
- 远程桌面协助的计算机名是什么意思,windows远程桌面和远程协助有什么区别