邹瑞20201118
总结
流程
总结:我们不难看出无论是创建代理对象还是直接使用提供的CRUD方法,其本质都是得到Connection 对象,执行对应的sql语句,最终返回封装结果集。只是注解方式和xml方式在传递sql语句和返回值类 型的方式上有区别而已。
mybatis 环境搭建步骤
- 创建 maven 工程
- 导入相关依赖
- 编写代码(实体类和持久层接口)
- 编写映射配置文件
- 编写 SqlMapConfig.xml
- 编写测试类
创建日志文件
在mybatis中可以使用log4j来记录执行日志,并输出。在src/resources目录下创建 log4j.properties 文件,具体如下:
#日志级别为debug log4j.rootLogger=debug,stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
#写文件,我们目前不需要,注释掉 #log4j.appender.file=org.apache.log4j.RollingFileAppender #log4j.appender.file.MaxFileSize=1MB #log4j.appender.file.MaxBackupIndex=1024 #log4j.appender.file.File=c:/eshop.html #log4j.appender.file.layout=org.apache.log4j.HTMLLayout #log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%c]-[%-5p] %m%n%n
基于代理 Dao 实现 CRUD 操作
原理差不多
- 在持久层接口中添加 方法
UserInfoModel findById(String id);
- 在用户的映射配置文件中配置
- 在测试类添加测试
public class IUserInfoDaoTest {
private InputStream in ;
private SqlSessionFactory factory;
private SqlSession session;
private IUserInfoDao userDao;
@Before//在测试方法执行之前执行
public void init()throws Exception {
//1.读取配置文件
in = Resources.getResourceAsStream("SqlMapConfig.xml");
//2.创建构建者对象
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//3.创建 SqlSession 工厂对象
factory = builder.build(in);
//4.创建 SqlSession 对象
session = factory.openSession();
//5.创建 Dao 的代理对象
userDao = session.getMapper(IUserInfoDao.class);
}
@Test
public void findById() {
//6.执行操作
String id = "34a2d2ab2ee946a49ab4a87e7f16cfb6";
UserInfoModel user = userDao.findById(id);
System.out.println(user);
}
}
近期评论