MyBatis学习七:spring和MyBatis整合、逆向工程
来源:互联网 发布:mac webpack 编辑:程序博客网 时间:2024/05/18 02:21
一、整合思路
需要spring通过单例方式管理SqlSessionFactory。
spring和mybatis整合生成代理对象,使用SqlSessionFactory创建SqlSession(spring和mybatis整合自动完成)。
持久层的mapper都需要由spring进行管理。
二、整合之后结构图
三、配置SqlSessionFactory和数据源
在applicationContext.xml配置SqlSessionFactory和数据源。<!—加载配置文件 --><context:property-placeholder location=”classpath:db.properties”/><!—数据源,使用dbcp --><bean id=”dataSource” class=”org.apache.commons.dbcp.BasicDataSource” destroy-method=”close”><property name=”driverClassName” value=”${jdbc.driver}”//继续配置url、username、password、maxActive、maxIdle等</bean><!-- sqlSessionFactory --><bean id=”sqlSessionFactory” class=”org.mybatis.spring.SqlSessionFactoryBean”><!—加载mybatis的配置文件 --><property name=”configLocation” value=”mybatis/SqlMapConfig.xml”/><!—数据源 --><property name=”datasource” ref=” datasource”/></bean>
假设已经写好pojo、映射文件(原始dao方式名称为User.xml;代理开发方式为xxMapper.xml)。、在SQLConfigMap.xml中加载映射文件,然后接着开发:
四、原始dao方式
1、dao实现类继承SqlSessionDaoSupport
dao接口实现类需要注入SqlSessionFactory,通过spring进行注入。两种方式:自动注入或者声明配置方式;这里使用声明配置方式,配置dao的bean:让UserDaoImpl实现类继承SqlSessionDaoSupport。
public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao{@overridepublic User findUserById(int id) throws Exception{//继承SqlSessionDaoSupport,通过this.getSqlSession()得到sqlSessionSqlSession sqlSession = this.getSqlSession();User user = sqlSession.selectOne(“test.findUserById”, id);return user;<span style="white-space:pre"></span>}}
2、配置dao
在applicationContext.xml中配置dao。
<!—原始dao接口 --><bean id=”userDao” class=”cn.itcast.ssm.dao.UserDaoImpl”><property name=”sqlSessionFactory” ref=”sqlSessionFactory”/></bean>
3、测试
public class UserDaoImplTest{private ApplicationContext applicationContext;//在setUp这个方法得到spring容器@Beforepublic void setUp() throws Exception{applicationContext = new ClassPathXmlApplicationContext(“classpath:spring/applicationContext”)<span style="white-space:pre"></span>}@Testpublic void testFindUserById() throws Exception{UserDao userDao = (UserDao)applicationContext.getBean(“userDao”);User user = userDao.findUserById(1);System.out.println(user);<span style="white-space:pre"></span>}}
五、mapper代理开发方式
1、mapper.xml和mapper.java
2、通过MapperFactoryBean创建代理对象
<!—mapper配置MapperFactoryBean:根据mapper接口生成代理对象 --><bean id=”userMapper” class=”org.mybatis.spring.mapper.MapperFactoryBean”><!--mapperInterface指定mapper接口 --><property name=”mapperInterface” value=”cn.itcast.ssm.mapper.UserMapper”/><property name=”sqlSessionFactory” ref=”sqlSessionFactory”/></bean>
此方法问题:需要针对每个mapper进行配置,麻烦。
3、通过MapperScannerConfigurer进行mapper扫描
<!—加载映射文件 --><mappers><mapper resource=”sqlmap/User.xml”/><!—批量加载mapper 指定mapper接口的包名,mybatis自动扫描包下所有mapper接口进行加载。遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名保持一致,且在一个目录下。上边规范的前提是:使用 的是mapper代理方法。和spring整合后,使用mapper扫描器,mybatis的配置文件中就不需要配置了<!-- <package name=”cn.itcast.ssm.mapper”/> -->--></mappers>
<!—mapper批量扫描,从mapper包中扫描出mapper接口,自动创建代理对象并且在spring容器中注册。遵循规范:将mapper.java和mapper.xml映射文件名称保持一致,且在一个目录中。自动扫描出来的mapper的bean的id为mapper类名(首字母小写) --><bean class=”org.mybatis.spring.mapper.MapperScannerConfigurer”><!—指定扫描的包名。如果扫描多个包,每个包中间使用半角逗号分隔 --><property name=”basePackage” value=”cn.itcast.ssm.mapper”/><property name=”sqlSessionFactoryBeanName” value=”sqlSessionFactory”/></bean>
4、测试代码
@Testpublic void testFindUserById() throws Exceptino{UserMapper userMapper = (userMapper)applicationContext.getBean(“userMapper”);User user = userMapper.findUserById(1);System.out.println(user);}
六、逆向工程
mybatis需要程序员自己编写sql语句,mybatis官方提供逆向工程,可以针对单表自动生成mybatis执行所需要的代码(mapper.java、mapper.xml、po等等)
企业实际开发汇总,常用的逆向工程方式:由数据库的表生成java代码。
0 0
- MyBatis学习七:spring和MyBatis整合、逆向工程
- mybatis和Spring的整合,逆向工程
- Mybatis 03 整合Spring+逆向工程
- spring整合mybatis逆向工程+PageHelper插件
- mybatis学习七整合spring
- mybatis逆向工程学习
- mybatis逆向工程学习
- Spring学习(七)spring整合mybatis
- 【MyBatis学习14】MyBatis和Spring整合
- 【MyBatis学习14】MyBatis和Spring整合
- 【MyBatis学习14】MyBatis和Spring整合
- 【MyBatis学习14】MyBatis和Spring整合
- Mybatis学习(13)-MyBatis和Spring整合
- mybatis 高级映射和spring整合之逆向工程(7)
- MyBatis学习总结(七)——基于Maven的Mybatis和Spring整合 实战
- mybatis学习之逆向工程
- mybatis学习笔记(18)-mybatis逆向工程
- Mybatis学习笔记(十九)【mybatis逆向工程】
- SELinux的启动和关闭
- Crazy Android Note Chapter-8
- #pragma预编译指令
- MyEclipse8.5 基于jax-ws的webservice对象(实体)传递的开发
- PHP开启opcache方法
- MyBatis学习七:spring和MyBatis整合、逆向工程
- JAXB--简单应用(一)
- Android API22/23 对应Eclipse选择
- gem5: 在缓存代码中如何识别缓存是L1,L2还是L3呢?
- ThreadLocal
- Struts1——文件上传
- 常用的Hql语句
- redis 高级应用— 安全性
- Data Vault初探(十) —— 星型模型向Data Vault模型转化