码迷,mamicode.com
首页 > 其他好文 > 详细

mybatis 自己实现dao

时间:2020-03-14 10:38:50      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:tst   input   修改   但我   imp   name   理解   自己   build   

当我们遵守以下3条时,我们就不需要写dao接口的实现类:

  1. mybatis的映射配置文件必须和dao接口的包结构相同
  2. 映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类型
  3. 映射配置文件的操作(select,update),id属性的取值必须是dao接口的方法名

但我们仍然可以自己写dao接口的实现类,来加深理解使用mybatis,当然这不是一定要这么做的。

在xml项目的基础上稍加更改:

1、在dao包下创建impl.UserDaoImpl.java

技术图片
 1 public class UserDaoImpl implements IUserDao {
 2 
 3     private SqlSessionFactory factory;
 4     //由于要用到SqlSessionFactory,所以需要实例化的时候,把参数传递进来
 5     public UserDaoImpl(SqlSessionFactory factory){
 6         this.factory = factory;
 7     }
 8     public List<User> findAll() {
 9         //使用工厂创建SqlSession对象
10         SqlSession session = factory.openSession();
11         //使用session执行查询方法
12         //statement:就是配置文件的namespace+id
13         List<User> users = session.selectList("com.mantishell.dao.IUserDao.findAll");
14         session.close();
15         return users;
16     }
17 }
View Code

2、修改测试代码

技术图片
 1 //1、读取配置
 2         InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
 3         //2、创建SqlSessionFactory工厂
 4         SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();//创建工厂  mybatis使用了构建者模式,构建者模式:把对象的创建细节隐藏,使使用者直接调用方法即可拿到对象。
 5         SqlSessionFactory factory = builder.build(in);//builder就是构建者
 6         //3、使用工厂创建Dao对象
 7         IUserDao userDao = new UserDaoImpl(factory);
 8         //4、使用代理对象执行方法
 9         List<User> users = userDao.findAll();
10         for (User user : users) {
11             System.out.println(user);
12         }
13         //5、释放资源
14         in.close();
View Code

 

mybatis 自己实现dao

标签:tst   input   修改   但我   imp   name   理解   自己   build   

原文地址:https://www.cnblogs.com/mantishell/p/12490574.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!