MyBatis- 第二章
Dao接口引入
1. 修改mapper文件的 namespace, 对应接口类的全路径
2. 创建BookDao.java 接口类
3. 接口方法名对应mapper的SQL id
4. 定义反参和入参(如有)
Service引入
1. 创建service, serviceImpl 结构包,对应BookService, BookServiceImpl
2. 获取连接
3. 代理功能
通过SqlSession的代理功能,调用Dao层接口方法
插入示例
1. 书写mapper 的SQL
2. 书写dao层,注意方法名要和mapper里的id保持一致
3. 参数数量和类型保持一致,并使用注解@Param("bookName")对应mapper的参数名
如果只有一个入参,可以不写@Param注解,但不建议
4. 书写Service层代码
MyBatis工具类引入
package com.gxy.util;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MyBatisUtil {
private static SqlSessionFactory factory;
//保证service层 进行多次dao操作,公用一个SqlSession对象
private static ThreadLocal<SqlSession> tl = new ThreadLocal<SqlSession>();
static{
try {
String resouce = "mybatis-config.xml"; //代表总配置文件的路径
InputStream is = Resources.getResourceAsStream(resouce);//使用输入流读取配置文件
factory = new SqlSessionFactoryBuilder().build(is);//facotry只需要创建一个
} catch (Exception e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession(){
SqlSession session = tl.get();
if(session == null) {
session = factory.openSession();
tl.set(session);
}
return session;
}
public static void close(){
SqlSession session = tl.get();
if(session != null){
session.close();
tl.set(null);
}
}
}
全程公用一个SqlSessionFactory
1. 复制MyBatisUtil工具类到util包
2. 修改service配置
插入并查询示例
生命周期2
1. 首先加载mybatis-config.xml总配置文件,根据development的参数配置连接数据库;查询mappers映射关系,找到mapper.xml配置文件
2. 执行mapper.xml文件,该文件记录了运行SQL
3. 在dao接口层,dao的方法名对应mapper.xml的ID
一个表 对应 一个实体 对应 一个mapper 对应 一个dao
4. 在service层,通过工具类获取连接;通过代理模式(反射)获取dao接口对象
5. 调用dao接口方法,执行SQL语句
6. 关闭SqlSession
完成修改,删除示例