07-MyBatis Dao代理实现数据库操作
2022/1/12 19:06:04
本文主要是介绍07-MyBatis Dao代理实现数据库操作,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.相关介绍
public class UserDaoImpl implements UserDao { @Override public List<User> getAllUser() { SqlSession session = MyBatisUtil.getSqlSession(); //执行数据库操作, namespace.id的方式确定使用哪个sql语句 List<User> userList = session.selectList("com.limi.dao.UserDao.getAllUser"); //关闭 SqlSession,释放资源 session.close(); return userList; } }
如上代码所示, 在例子中自定义 Dao 接口实现类时发现一个问题:Dao 的实现类其实并没有干什么实质性的工
作,它仅仅就是通过 SqlSession 的相关 API 定位到映射文件 mapper 中相应 id 的 SQL 语句,真正对 DB 进行操作的工作其实是由框架通过 mapper 中的 SQL 完成的。
所以,MyBatis 框架就抛开了 Dao 的实现类,直接定位到映射文件 mapper 中的相应 SQL 语句,对
DB 进行操作。这种对 Dao 的实现方式称为 Mapper 的动态代理方式。
Mapper 动态代理方式无需程序员实现 Dao 接口。接口是由 MyBatis 结合映射文件自动生成的动态代
理实现的。
使用代理的要求:
- mapper文件中的namespace一定要和dao接口的全限定名称一致
- mapper文件中的标签id一定要和到接口中的方法名一致
2.dao 代理操作数据库
1.实现类就不需要了
2.使用代理
package com.limi; import com.limi.dao.UserDao; import com.limi.entity.User; import com.limi.utils.MyBatisUtil; import org.apache.ibatis.session.SqlSession; import org.junit.Test; import java.io.IOException; import java.util.List; public class MyTest { @Test public void test1() throws IOException { SqlSession sqlSession = MyBatisUtil.getSqlSession(); UserDao userDao = sqlSession.getMapper(UserDao.class); //上面这行代码等价于UserDao userDao = new UserDaoImpl(); //使用dao接口操作数据库 List<User> userList = userDao.getAllUser(); userList.forEach(user -> System.out.println(user)); sqlSession.close(); //关闭会话一定要在数据库操作执行之后 } }
3.运行结果
这篇关于07-MyBatis Dao代理实现数据库操作的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide
- 2025-01-11不得不了解的高效AI办公工具API
- 2025-01-102025 蛇年,J 人直播带货内容审核团队必备的办公软件有哪 6 款?
- 2025-01-10高效运营背后的支柱:文档管理优化指南
- 2025-01-10年末压力山大?试试优化你的文档管理
- 2025-01-10跨部门协作中的进度追踪重要性解析
- 2025-01-10总结 JavaScript 中的变体函数调用方式
- 2025-01-10HR团队如何通过数据驱动提升管理效率?6个策略
- 2025-01-10WBS实战指南:如何一步步构建高效项目管理框架?