mybatis 高级映射和spring整合之mybatis与Spring整合

3.0 mybatis和spring整合(掌握)3.1 整合思路需求spring通过单例方式管理SqlSessionFactory。spring和mybatis整合生成代理对象,使用SqlSessionFactory创建SqlSession。(spring和mybatis整合自动完成)持久层的mapper都需要有spring进行管理。 3.2 整合环境创建一个新的java工程(接近实际开发的工程结构)jar包:mybatis3.2.7的jar包spring3.2.0的jar包mybatis和spring的整合包:早期ibatis和spring整合是由spring官方提供的,mybatis和spring整合由mybatis提供。3.3 sqlSessionFactory        在applicationContext.xml配置sqlSession 和 数据源sqlSessionFactory在mybatis 和spring的整合包下applicationContext.xml<!-- 加载配置文件 --><context:property-placeholder location="classpath:db.properties"><!-- 数据源,使用dbcp --><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destory-method="close"><property name="driverClassName" value="${jdbc.driver}"/><property name="url" value="${jdbc.driver}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/><property name="maxActive" value="10"/><property name="maxIdle" value="5"/></bean><!-- sqlSessionFactory --><bean id="SqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 加载mybatis的配置文件 --><property name="configLocation" value="mybatis/SqlMapConfig.xml"/><!-- 数据源 --><property name="dataSource" ref="dataSource"></property></bean>3.4 原始dao开发(和spring整合后) 3.4.1 User.xml (mapper映射文件)User.xml<mapper namespace="test"><select id="findUserById" parameterType="int" resultType="com.demo.mybatis.ssm.po.User">SELECT * FROM USER WHERE id=#{value}</select></mapper>在SqlMapconfig.xml中加载User.xml<!-- 加载映射文件 --><mapper><mapper resource="sqlmap/User.xml">3.4.2 dao(实现类继承SqlSessionDaoSupport)public interface UserDao {//根据id查询用户信息public User findUserById(int id) throws Exception;}dao接口实现类需要注入SqlSessionFactory,通过spring进行注入。这里使用spring的声明配置方式,配置dao的bean让UserDaoImpl实现类继承SqlSessionDaoSupportUserDaoImpl.javapublic class UserDaoImpl extends SqlSessionDaoSupport implements UserDao{//继承 SqlSessionDaoSupport,通过 this.getSqlSession()得到sqlSessionSqlSession sqlSession = this.getSqlSession)();User user = sqlSession.select("test.findUserById",id);return user;}3.4.3 配置dao在applicationContext.xml中配置dao。applicationContext.xml<!-- 原始的dao接口--><bean id="userDao" class="com.demo.ssm.dao.UserDaoImpl"><property name="sqlSessionFactory" ref="sqlSessionFactory"/></bean>3.4.4 测试程序package com.demo.ssm.dao;public class UserDaoImplTest{//private ApplicationContext applicationContext;//在setUp这个方法得到spring容器@Beforepublic void setUp() throws Exception{applicationContext =  new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml")}@Testpublic void testFindUserByID(){UserDao userDao = applicationContext.getBean("userDao");//调用userDao的方法User user = userDao.findUserById(1);System.out.println(user);}}3.5 mapper代理开发3.5.1 mapper.xml和mapper.java3.5.2 spring通过MapperFactoryBean来创建代理对象<!-- mapper配置mapperFactoryBean:根据mapper接口生成代理对象--><bean id="userMapper" class="org.mybatis.spring.MapperFactoryBean"><!-- mapperInterface指定mapper接口 --><property name="mapperInterface" value="com.demo.ssm.mapper.UserMapper"/><property name="sqlSessionFactory" ref="sqlSessionFactory"/></bean>此方法问题:需要针对每个mapper进行配置,麻烦。所以 解决办法3.5.3(屏蔽3.5.2)3.5.3 通过MapperScannerConfigurer进行mapper扫描(建议使用)<!-- mapper批量扫描,从mapper包中扫描出mapper接口,自动创建代理对象并且在spring容器中注册遵循规范:将mapper.java 和 mapper.xml 映射文件名称保持一致,且在一个目录中。自动扫描出来的mapper的bean的id为mapper类名(首字母小写)--><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><!-- 指定扫描的包名如果扫描多个包,每个包中间使用半角逗号分隔 --><property name="basePackage" value="com.demo.ssm.mapper"/><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/></bean>3.5.4 测试代码@Testpublic void testFindUserByID() throws Exception{UserMapper userMapper = (UserMapper) applicationContext.getBean("userBean");System.out.println(user);}

转载于:https://www.cnblogs.com/lanzhi/p/6468014.html

mybatis 高级映射和spring整合之与Spring整合(6)相关推荐

  1. 【Mybatis高级映射】一对一映射、一对多映射、多对多映射

    前言 当我们学习heribnate的时候,也就是SSH框架的网上商城的时候,我们就学习过它对应的高级映射,一对一映射,一对多映射,多对多映射.对于SSM的Mybatis来说,肯定也是差不多的.既然开了 ...

  2. mybatis高级映射(一对一,一对多,多对多)

    http://www.cnblogs.com/selene/p/4627446.html 阿赫瓦里 生命对于某些人来说,一直都是美丽的,因为这些人的一生都在为某个梦想而奋斗!!! 博客园 首页 新随笔 ...

  3. mybatis高级映射多对多查询(二)

    在这篇博客中,我来介绍下mybatis中的多对多查询的案例,在mybatis中,如何使用ResultMap来实现多对多的查询? 案例:一个user可以有很多role,一个role可以有很多entitl ...

  4. mybatis高级映射一对多查询(一)

    最近一直在研究mybatis,查询是并不可少的研究内容.mybatis的一对多的查询,个人觉得比hibernate简单的很多.好了,废话不多说了,下面以一个简单的例子解释一下mybatis的一对多的查 ...

  5. 第五章.MyBatis高级映射

    5.1   新建数据库准备 CREATE TABLE `finacial_products` (`product_id` int(11) NOT NULL AUTO_INCREMENT,`name` ...

  6. mybatis 高级映射 - 一对多查询 - collection

    方法一 连接表查询 案例:查询所有订单信息及订单下的订单明细信息. 订单信息与订单明细为一对多关系. 使用resultMap实现如下: Sql语句: SELECT orders.*,user.user ...

  7. 6.2 、MyBatis 高级映射(resultMap 标签多表联查 , 一对多,多对一关系)

    文章目录 一.创建表结构,添加数据,实现表中数据的关联关系 二. association 标签:用于一对一.多对一场景使用 1.实现一对一,多对一关系结果集映射 1.1 按照查询嵌套处理 1.2 按照 ...

  8. SpringBoot整合Mybatis(高级)

    SpringBoot整合Mybatis(高级) 文章目录 SpringBoot整合Mybatis(高级) 前言 基础环境配置 增删改查 ResultMap 复杂查询 多对一 一对多 动态SQL if ...

  9. java元婴期(25)----java进阶(mybatis(4)---高级映射查询缓存)

    1.需要用到的数据模型(这是后面高级查询需要用到的实例) 用户表user:          记录了购买商品的用户信息 订单表:orders          记录了用户所创建的订单(购买商品的订单) ...

  10. SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)

    登录 | 注册 收藏成功 确定 收藏失败,请重新收藏 确定 查看所有私信查看所有通知 暂没有新通知 想要绕过微信小程序开发中的坑吗?不妨来听这个,今晚8点,1小时帮你搞定! 14小时以前 CSDN日报 ...

最新文章

  1. Linux命令整理 - 文件搜索【4】
  2. 产品设计的从0到1全流程:以优惠券为例
  3. 零基础带你快速入门Ribbon技术(浅显易懂、小白都能看懂)
  4. WSUS 转发邮件中继到Office365
  5. python安装pygame模块_windows下 python 如何安装pygame模块
  6. LeetCode 2097. 合法重新排列数对(欧拉路径)
  7. VM虚拟机中Linux扩展磁盘空间的方法
  8. group by 后面加条件_无论炖什么肉,只要加这“两种”调料,肉质鲜嫩入味,越炖越香...
  9. 【竞赛总结】安全AI之人脸识别对抗
  10. 【原】YUI3:js加载过程及时序问题
  11. 怎么使用7zip进行分批压缩_7zip怎么使用 7zip使用方法教程
  12. 新浪短网址生成java_短网址链接生成器代码示例——新浪短链接api接口php、java、Python调用演示...
  13. 轻量化安装 TKEStack:让已有 K8s 集群拥有企业级容器云平台的能力
  14. Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day29】
  15. 洛谷P5322 [BJOI2019]排兵布阵【分组背包】
  16. Micheal Nielsen's神经网络学习之二
  17. Linux与.Net Core(二) Centos系统安装和网络配置
  18. 2019精选书籍推荐
  19. Java之弗洛伊德算法
  20. win7系统损坏无法开机_win7系统网络适配器无法启动怎么办

热门文章

  1. zend framework 重定向方法(render, forward, redirect)总结
  2. 习题4-8 高空坠球(20 分)
  3. Linux-文件目录命令
  4. 深入理解计算机系统(1)--hello world程序的生命周期
  5. 用户调用机房收费下机中用到的策略与职责链解析
  6. 使用jQuery来创建平滑的页面滚动
  7. Java_单例/多例设计
  8. php笔记--php安装
  9. 随笔37 JVM内存
  10. 2017CodeM复赛