• Mybatis 系列3-自己实现dao


    当我们遵守以下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
  • 相关阅读:
    .net NEST7.17.0 ES客户端帮助类
    .net5 根据类型注入所有的继承关系
    ANSI控制码 cmd echo设置字体、背景色、前景色
    windows racketmq部署
    c# 运行时判断是否为DEBUG模式
    .net minio 帮助类 minio4.0.1
    获取解决方案中所有的程序集
    spoonweb保存400问题解决
    关于kettle环境初始化 KettleEnvironment.init() 报错的解决
    PythonMutableDict使用范例
  • 原文地址:https://www.cnblogs.com/mantishell/p/12490574.html
Copyright © 2020-2023  润新知