时间:2021-07-01 10:21:17 帮助过:33人阅读
前言: 本文主要讲述JDBC的基本开发步骤,以及简单知识点,不会涉及其他或底层乱七八糟的,用于给笔者梳理知识体系与总结 本文数据库类型为MySQL
Java Database Connectivity: 简称JDBC 简单地说就是使用Java对数据库进行操作
1.连接问题: 使用 MySQL的connetion.jar包进行操作
i.使用反射加载驱动, Class.forName("com.mysql.jdbc.Driver");
ii.通过加载好的驱动获取连接: Connetion connect = DriverManager.getConnetion("URL","USER","PASSWORD");
ps:使用反射的时候会加载该类信息,而类信息中的静态块会使用DriverManager 里的静态方法 往驱动管理类内传一个 new Driver() 的实例,然后再使用驱动管理类获取连接,至于
为什么使用反射而不是直接new 出来是因为如果实例化出来了就会对这个类产生一个具体的依赖,只要换驱动就得改代码,而使用反射就只用在配置文件里改驱动和url就好了,目的还是为了解耦
2.操作问题: 使用java.sql 里的各种类往已经建立好的connection内传送数据,以此来对数据库进行操作
i.PreparedStatement 该类是笔者目前使用的类,使用?在sql语句里进行占位,然后传送参数进行操作,防止sql注入
该类的方法: setObject() 这个用于传参数,当然还有其他的, executeUpdate() 用于执行DML语句 返回类型为 int 值是该语句对数据库影响的行数 executeQuery() 用于执行DQL语句 返回值为ResultSet类也就是一个结果集,使用next()方法后 接收一行的数据, 值得注意的是 使用完毕后不能往回取,用了就是用了 getString() 等进行操作
ii.使用 close()方法 对 连接 语句类 结果集 进行关闭
1. 分为三层: dao层 service层 view层
dao层对数据库进行直接操作
service层不允许直接触碰数据库 而是对dao层提供的方法对数据库进行间接的操作,然后实现各种业务逻辑
view层是用户使用层,里面有mian方法
用户在view层进行要求和数据的传入,service层使用dao层提供的方法为view层需要的业务进行实现,数据提供
2.一般来说JDBC的包有:
1.entity包: 用于存放数据库对于Java的实体类,是一种映射,由数据库列映射为该类的属性 使用get/set方法进行操作
2.utils包 : 存放各种类 如: JDBCUtil 连接 的操作工具 , ServiceUtil 事务的操作工具
3.dao包: 存放Dao层的类,如BaseDao 里面有基础的查询方法 基础的增删改方法 可以当作父类 , xxxDao 接口 用于规范Dao的实体类 , 里面还有个包 放xxxDaoImpl 继承基础Dao然后实现Dao接口
4.service包: 存放service层的类,xxxService 接口 规范业务层实现类,同样有个实现类包
5.view包: 放视觉层的类,用户使用的类只有这个类有main方法入口
1.DML操作:只用写SQL语句
2.DQL操作:可以把结果转为List Array Set等集合
使用QueryRunner 的实体类进行下列方法的使用
查询方法:query(String sql, ResultSetHandler rsh, Object… params)
i.单行单列结果: 使用ScalarHandler 进行转化
ii.单行多列结果: 使用BeanHandler 进行转化
iii.多行多列结果: 使用BeanListHandler 进行转化
增删改方法:update(String sql, Object… params)
1.将properties配置文件当作参数传入DruidDataSourceFactory.createDataSource()方法内 强转 为DruidDataSource后获取一个DruidDataSource的实例
2.将上方获得的实例调用getConnection()方法
3.配置文件内可设置最小链接最大连接, 类似于线程池
[JavaEE基础] JDBC
标签:pre 文件 uid 反射 common sql 一般来说 commons 要求