MyBatis
MyBatis 是轻量级的数据库访问API,封装了常用JDBC
操作,可以实现实体对象的CRUD访问功能
SqlSession 封装了Mapper的创建,和JDBC的CRUD
配置文件:SqlMapConfig.xml 主配置文件
声明了数据库连接参数,引用了映射文件
映射文件: 每个实体一个映射文件
映射文件与 Mapper接口对应。
映射文件中:
每个Mapper接口中的方法,对应映射文件中的
SQL语句。
使用MyBatis
1 导入包
2 创建配置文件
3 创建实体和Mapper接口,已经映射文件
4 使用 工厂创建SqlSession
5 创建Mapper接口对象,执行接口方法
1 SqlSession 支持直接Sql语句执行
关于Mapper接口 要求不能重复
参数只能有一个,多个参数使用值对象
查询才有返回值值。
所以Mapper不是DAO
没有Dao灵活方便!
DeptMapper{
addDept(Dept)
}
EmpMapper{
addEmp(Emp)
}
2 关于ID的处理
1 使用 Sequence
2 自增类型(MySql SqlServer DB2 Derby):
<insert id="addDept" useGeneratedKeys="true"
keyProperty="deptno"
parameterType="com.tarean.entity.Dept">
insert into T_DEPT(dname, loc)
values (#{dname},#{loc})
</insert>
3 MyBatis与Spring的整合
SqlSessionFactoryBean 创建和管理SqlSessionFactory
对象
MapperFactorBean 创建和管理 Mapper Bean对象
管理一个 MapperBean
MapperScannerConfigurer 也是创建和管理
Mapper Bean对象,采用包扫描方式,效率高
1) 默认全部包扫描
2) 使用 注解将指定Mapper进行扫描 *
要自定义 注解
Mapper 接口 不是DAO 没有Dao灵活
如果软件中必须使用Dao接口,MyBatis-Spring
提供了一个组件:SqlSessionTemplate
专门用于 MyBatis实现DAO接口
1) 如果软件直接使用Mapper 是不需要SqlSessionTemplate
2) 如果软件必须使用DAO层,使用SqlSessionTemplate
可以加快DAO的开发。
SqlSessionTemplate 有什么功能?
实体对象的CRUD
如何使用:
1) 导入包
2) 在Spring 配置文件中声明SqlSessionTemplate
Bean
3) 在DAO接口的实现来中,注入SqlSessionTemplate
Bean
4) 在实现DAO接口的方法中使用