mybatis 高级映射和spring整合之与Spring整合(6)
来源:互联网 发布:java使用的字符码集 编辑:程序博客网 时间:2024/05/16 07:05
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实现类继承SqlSessionDaoSupport UserDaoImpl.java public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao{ //继承 SqlSessionDaoSupport,通过 this.getSqlSession()得到sqlSession SqlSession 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容器 @Before public void setUp() throws Exception{ applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml") } @Test public 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.java 3.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 测试代码 @Test public void testFindUserByID() throws Exception{ UserMapper userMapper = (UserMapper) applicationContext.getBean("userBean"); System.out.println(user); }
0 0
- mybatis 高级映射和spring整合之与Spring整合(6)
- mybatis 高级映射和spring整合之高级映射(4)
- mybatis 高级映射和spring整合之查询缓存(5)
- mybatis 高级映射和spring整合之逆向工程(7)
- (7)MyBatis之与Spring整合
- JAVAWEB开发之mybatis详解(二)——高级映射、查询缓存、mybatis与Spring整合以及懒加载的配置和逆向工程
- JAVAWEB开发之mybatis详解(二)——高级映射、查询缓存、mybatis与Spring整合以及懒加载的配置和逆向工程
- 10. mybatis 高级: 整合spring
- spring与mybatis整合
- 整合spring与myBatis
- mybatis 与 spring 整合
- mybatis与spring整合
- mybatis与spring整合
- mybatis与spring整合
- spring与mybatis整合
- spring与mybatis整合
- Spring与Mybatis整合
- Mybatis与Spring整合
- SAP QM 取消UD方法
- NGUI坑之首行缩进
- 32(64)位CPU vs 32(64)位OS
- testng(二) 美化报告,jenkins集成
- linux服务器被挂马,ps命令netstat命令被挟持替换成其他程序
- mybatis 高级映射和spring整合之与Spring整合(6)
- Monitor Screen Touch Event in Android
- UITabbar UINavigationBar
- 定制Android系统开发之五——ServiceFetcher
- XML AJAX实现responseXML时头文件的申明
- 增加google服务包编译Chrome后原本的Browser.apk不编译问题
- Knockoutjs快速入门
- 【解决】由于没有远程桌面授权服务器可以提供许可证,远程回话被中断
- 图像处理之相似图片识别(直方图应用篇)