以BaseDao作为公共类可以有效解决大片代码重复的问题;但是依然有很多sql语句重复
在BaseDao里手写一个通用的增删改sql语句.
拼接sql语句
-
通过反射获取emp有7个字段,有一个是另一个对象 ; 相要写通用sql
- 就要把关联字段排除
-
排除的方法
- 通过`注解+返射的方式排除关联的属性
- 写一个anno包
- @Target给字段用
- @Retention设置生命周期
- 反射读取注解
- 打了注解的会在运行阶段忽略
-
以上通过注解加方射的方式类似于框架
可以使用commons-utils.jar完成数据库封装
------------>
数据库连接对象是非常宝贵的资源
- DriverManager.getConnection(url,user,password)
- //数据库连接对象创建是非常复杂的
- 通过类似线程池的池装载数据库连接
- 目前比较成熟的连接池技术 :推荐使用阿里巴巴(druid); dbcp;c3p0
- druid()的使用
- 引入jar包;用druid()创建数据库连接
-
- 新的获取数据库连接方法
- 提供一个新的数据库俩连接对象;所有的连接池对象都实现了java.sql
- 提供的DataSourcs(数据源)接口
- 这个接口是由JDBC提供的一个统一的规范,所有的数据库连接池都遵循这规范
- 通过静态代码块读取配置文件的信息连接文件;改写JDBCUtils
- 通过prop对象加载properties :
- dataSource = DruidDataSourceFactory.creatDataSource(prop)
- return dataSource.getConnection();
- druid关闭数据库连接 JDBCUtil.realease(, ,):重新还给连接池
- JDBCUtils:
DButils:的使用;单表查询
- Commons DButild 是apache提供的一个对JDBC进行简单封装的开源工具,
- 导入jar包 commons-dbutils
- 在dao类创建queryRunner对象并传入数据库连接池
- 调用queryRunner 的update或者 query 方法;
- 使用DButils必须满足ORM映射关系;
- 没有按照orm关系映射的: new(一个resultSetHandler)重写之后手动更改.
- JDBCUtil中获取连接池
- DaoImpl拿到连接池
- 查询所有
- 查询一个byId
- 查询部门的员工人数,返回整形人数
- 新增一个员工
- test新增方法
不遵循orm的解决办法:
- test新增方法
-