目录
引言
1.Mybatis框架概念:是持久层框架,封装了JDBC,解决了DAO中通用问题
2.JDBC开发的DAO存在的问题:
a)手工的ORM,产生大量冗余代码
b)手工进行日期处理:java.util.Date----java.sql.Date
c)JDBC没有缓存:查询效率低
3.Mybatis的好处:
- 自动进行ORM映射,减少冗余代码
- 自动进行日期转换
- mybatis提供缓存机制,提高查询效率
- mybatis对于多表操作可以进行关系的维护
- mybatis提供动态sql机制,减少DAO方法的开发
4.MyBatis实现DAO的原理:MyBatis实现DAO接口采用的是Mapper文件,文件中实现DAO中的方法采用的是标签,这些标签是sql的关键字
一、mybatis结构文件
环境搭建
- 引入相关jar+配置文件
1. Mybatis的核心jar :mybatis-3.2.2.jar
ojdbc5.jar 数据库的驱动jar
log4j-1.2.16.jar :配合配置文件,用于日志输出
2.引入相关配置
- Mapper文件:是DAO接口的实现,拷贝一个mapper文件的模板保存在src中,方便使用,具体实现DAO的mapper文件保存在dao包下。
- mybatis-config.xml :Mybatis的核心(主)配置文件,作用:配置Mybatis的运行环境,mapper文件的注册,保存的位置随意、文件名随意,建议文件保存在src
- log4j.properties : (可选) 用于日志输出,名称不能改变,保存在src中
3.初始化配置
在mybatis-config.xml中配置:mybatis的运行环境+Mapper文件注册,文件内容如下
框架开发DAO
1.建表、2.实体、3.DAO接口、
4.采用mapper文件实现DAO接口:
5.mapper文件注册
mybatis核心API
- Resources :作用获得资源,用于读取MyBatis的核心配置文件,加载MyBatis的运行工厂
- SqlSession :
- 作用1 :内部封装一个Connection对象,一个SqlSession对象和一个Connection对象一一对应,用于事务控制
Select 操作:不用控制事务
DML:必须进行事务控制
2.. 结合mapper文件创建DAO的实现(代理)
3、SqlSessionFactory:sqlSession工厂,生成SqlSession对象,这个组件是一个重量级组件,线程安全,一个应用创建一个 SqlSessionFactory对象就可以。
public void test(){
//1.读取Mybaits的核心配置文件
InputStream is=Resource.getResourceAsStream("mybatis-config.xml");
//2.创建SqlSessionFactory
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
//3.创建SqlSession对象
SqlSession sqlSession = factory.openSession();
//4.创建DAO:通过sqlSession对象,结合mapper文件创建DAO的实现
IAccountDAO dao = sqlSession.getMapper(IAccountDAO.class);
//调用DAO方法
dao.selectById(1);
//5.关闭
is.close();
sqlSession.close();
}
注意事项:
sql语句必须测试:在mapper文件中不要有 (;)
mapper文件注册时,路径需要拷贝,保留src的下一级,不要”/”
二、单表查询操作
三、业务层
四、Struts2+Mybatis整合
五、多参处理
六、ResultMap结果映射
七、多表查询操作
八、动态sql标签
动态sql :简化mapper文件和DAO接口
常用标签有:
<sql>片段、<where>、<trim>、<foreach>
九、$和#的区别