Mybatis_day06:Mybatis整合Spring

MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。它将允许 MyBatis 参与到 Spring 的事务管理之中,创建映射器 mapper 和 SqlSession 并注入到 bean 中,以及将 Mybatis 的异常转换为 Spring 的 DataAccessException。最终,可以做到应用代码不依赖于 MyBatis,Spring 或 MyBatis-Spring。

站在用户的角度思考问题,与客户深入沟通,找到丹寨网站设计与丹寨网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计制作、做网站、企业官网、英文网站、手机端网站、网站推广、空间域名、网页空间、企业邮箱。业务覆盖丹寨地区。

Mybatis整合spring

  1. 整合思路
  2. SqlSessionFactory对象应该放到spring容器中作为单例存在。
  3. 传统dao的开发方式中,应该从spring容器中获得sqlsession对象。
  4. Mapper代理形式中,应该从spring容器中直接获得mapper的代理对象。
  5. 数据库的连接以及数据库连接池事务管理都交给spring容器来完成。

整合需要的jar包

  • spring的jar包
  • Mybatis的jar包
  • Spring+mybatis的整合包。
  • Mysql的数据库驱动jar包。
  • 数据库连接池的jar包。

整合的步骤

第一步:创建一个java工程。

第二步:导入jar包。(上面提到的jar包)

第三步:mybatis的配置文件sqlmapConfig.xml

第四步:编写Spring的配置文件

1、数据库连接及连接池

2、事务管理(暂时可以不配置)

3、sqlsessionFactory对象,配置到spring容器中

4、mapeer代理对象或者是dao实现类配置到spring容器中。

第五步:编写dao或者mapper文件

第六步:测试。

 
 
 
 
  1. SqlMapConfig.xml 
  2.  
  3.  
  4.  
  5.  
  6. PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 
  7.  
  8. "http://mybatis.org/dtd/mybatis-3-config.dtd"> 
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26. applicationContext.xml 
  27.  
  28.  
  29.  
  30.  
  31. xmlns:context="http://www.springframework.org/schema/context" 
  32.  
  33. xmlns:p="http://www.springframework.org/schema/p" 
  34.  
  35. xmlns:aop="http://www.springframework.org/schema/aop" 
  36.  
  37. xmlns:tx="http://www.springframework.org/schema/tx" 
  38.  
  39. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  40.  
  41. xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
  42.  
  43. http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.0.xsd 
  44.  
  45. http://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-4.0.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-4.0.xsd 
  46.  
  47. http://www.springframework.org/schema/utilhttp://www.springframework.org/schema/util/spring-util-4.0.xsd"> 
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56. class="org.apache.commons.dbcp.BasicDataSource" 
  57.  
  58. destroy-method="close"> 
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79. class="org.mybatis.spring.SqlSessionFactoryBean"> 
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88. /> 
  89.  
  90.  
  91.  
  92.  

db.properties

 
 
 
 
  1. jdbc.driver=com.mysql.jdbc.Driver 
  2.  
  3. jdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8 
  4.  
  5. jdbc.username=root 
  6.  
  7. jdbc.password=root 

Dao的开发

三种dao的实现方式:

1、传统dao的开发方式

2、使用mapper代理形式开发方式

3、使用扫描包配置mapper代理。

传统dao的开发方式

接口+实现类来完成。需要dao实现类需要继承SqlsessionDaoSupport类

Dao实现类

 
 
 
 
  1. public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao { 
  2.  
  3. @Override 
  4.  
  5. public User findUserById(int id) throws Exception { 
  6.  
  7. SqlSession session = getSqlSession(); 
  8.  
  9. User user = session.selectOne("test.findUserById", id); 
  10.  
  11. //不能关闭SqlSession,让spring容器来完成 
  12.  
  13. //session.close(); 
  14.  
  15. return user; 
  16.  
  17.  
  18. @Override 
  19.  
  20. public void insertUser(User user) throws Exception { 
  21.  
  22. SqlSession session = getSqlSession(); 
  23.  
  24. session.insert("test.insertUser", user); 
  25.  
  26. session.commit(); 
  27.  
  28. //session.close(); 
  29.  
  30.  

配置dao

把dao实现类配置到spring容器中

 
 
 
 
  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9. 测试方法 
  10.  
  11. 初始化: 
  12.  
  13. private ApplicationContext applicationContext; 
  14.  
  15. @Before 
  16.  
  17. public void setUp() throws Exception{ 
  18.  
  19. String configLocation = "classpath:spring/ApplicationContext.xml"; 
  20.  
  21. //初始化spring运行环境 
  22.  
  23. applicationContext = new ClassPathXmlApplicationContext(configLocation); 
  24.  
  25.  
  26. 测试: 
  27.  
  28. @Test 
  29.  
  30. public void testFindUserById() throws Exception { 
  31.  
  32. UserDao userDao = (UserDao) applicationContext.getBean("userDao"); 
  33.  
  34. User user = userDao.findUserById(1); 
  35.  
  36. System.out.println(user); 
  37.  

1.Mapper代理形式开发dao

   a.开发mapper接口

开发mapper文件

配置mapper代理

 
 
 
 
  1.  
  2.  
  3.  
  4.  
  5.  
  6. value="com.pp.mybatis.mapper.UserMapper"/>** 
  7.  
  8.  
  9.  
  10.  
  11.  
  12. 测试方法 
  13.  
  14. public class UserMapperTest { 
  15.  
  16. private ApplicationContext applicationContext; 
  17.  
  18. @Before 
  19.  
  20. public void setUp() throws Exception { 
  21.  
  22. applicationContext = new 
  23.  
  24. ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");** 
  25.  
  26.  
  27. @Test 
  28.  
  29. public void testGetUserById() { 
  30.  
  31. UserMapper userMapper = applicationContext.getBean(UserMapper.class); 
  32.  
  33. User user = userMapper.getUserById(1); 
  34.  
  35. System.out.println(user); 
  36.  
  37.  

扫描包形式配置mapper

 
 
 
 
  1.  
  2.  
  3.  
  4.  
  5.  

每个mapper代理对象的id就是类名,首字母小写

 【编辑推荐】

  1. TIOBE 11月榜单:Python挤掉了Java!
  2. React Concurrent Mode三连:是什么/为什么/怎么做
  3. Linux高性能网络编程之TCP连接的内存使用
  4. Python曾是程序员的“瑞士军刀”,而如今正被慢慢取代
  5. 全球疫情下的网络安全:警惕“趁火打劫”的线上攻击

本文标题:Mybatis_day06:Mybatis整合Spring
当前URL:http://www.shufengxianlan.com/qtweb/news48/76648.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联