spring整合mybatis

来源:互联网 发布:英语流利说 知乎 编辑:程序博客网 时间:2024/06/05 02:37
spring 和 mybatis 整合


1.整合思路
需要spring 通过单例方式管理SqlSessionFaction
spring 和 mybatis整合生成代理对象,使用 SqlSessionFactoru创建 SqlSession.
持久层的mapper 都需要由spring 进行管理
2.整合环境
①导入jar包:
mybatis 的jar包
spring  的jar包
mybatis 和 spring的整合包:早期ibatis 和 spring 整合是由spring官方提供,mybatis和spring整合是由mybatis提供

②在applicationContext.xml配置sqlSesssionFactory和 数据源

sqlSessionFactory 在mybatis 和spring 的整合包下

<!--加载数据库配置文件 --><context:property-placeholder location="classpath:db.properties"/><!--数据源,使用dbcp --><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSouce" destroy-methos="close"><property name="driverClassName" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><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"><!-- 加载myabtis的配置文件--><property name="configLocation" value="mybatis/SqlMapConfig.xml"/><!--数据源 --><property name="dataSource" ref="dataSource"/></bean>

3.mybatis 原始dao 开发(和spring整合后)
①创建mapper.xml

<mapper namespace="test"><selsec id="findUserById" parameterType="int" resultType="cn.mybatis.po,User">select * from user where id=#{value}</select></mapper>注意在  SqlMappConfig.xml 加载刚写的 mapper.xml<mappers><mapper resource="sqlmap/User.xml"/><mappers>

②创建dao 接口和实现类

public interface UserDao{ //根据id查询用户信息public User findUserById(int id);}public class UserDaoImpl extends SqlSesssionDaoSupport implements UserDao{@Overridepublic UserfindUserById(int id) throws Exception{//继承SqlSessionDaoSupport 通过this.getSqlSession()得到sqlSessionSqlSession sqlSession = this.getSqlSession();User user = sqlSession.selectOne("test/findUserById",id);//方法结束会自动释放资源return user;}}

dao 接口的实现类需要注入 SqlSessionFactory ,通过spring 进行注入
这里用 spring声明配置方式(xml文件)配置dao 的bean
让UserImpl继承 SqlSessionDaoSupport 
在 applicationContext.xml 中追加如下代码

<!-- 原始dao 接口--><bean id="userDao" class="cn.mybatis.dao.UserDaoImpl" ><property name="sqlSessionFactory" ref="sqlSessionFactory"/></bean>
4.mybatis mapper代理开发dao(和spring整合后)
①创建UestMapper.xml
代码同上mapper.xml
②创建接口 UserMapper.java(与UserMapper.xml处于同一目录)


③在applicationContext.xml中配置mapper(让spring 管理mapper)

通过MapperFactoryBean创建代理对象

<!--mapper配置MapperFactoryBean:根据mapper接口生成代理对象 --><bean id="userMapper" calss="or.mybatis.spring.mapper.MapperFactoryBean"><!-- mapperInterface指定mapper接口--><property name="mapperInterface" value="cn.mybatis.mapper.UserMapper"/><property name="sqlSessionFactory" ref="sqlSessionFactory"/></bean
该种方法局限:需要针对每个mapper配置,麻烦
解决方案:通过 MapperScannerConfig 进行mapper 扫描

<!-- mapper批量扫描,从mapper包中扫描出mapper接口,自动创建代理对象并且在spring容器转中注册--><!--遵循规范:将mapper接口类名和mapper.xml映射文件保持一致,且在一个目录中 --><!--自动扫描出来的mapper的bean的 id 为 mapper类名(首字母小写) --><bean clss="org.mybatis.spring.mapper.MapperScannerConfigure"><!-- 指定扫描的包名,用此种方式则SqlMappConfig.xml就无需配置对mapper.xml的扫描如果扫描多个包,每个包之间使用半角逗号分隔--><property name="basePackage" vlaue="cn.mybatis.mapper"><property name="sqlSessionFactorBeanName" value="sqlSessionFactory"/></bean>


mybatis 逆向工程自


1.什么是逆向工程


mybatis需要自己写sql 语句,mybatis官方提供了逆向工程可以针对单表自动来生成mybatis执行所需要的代码(mapper.java,mapper.xml,pojo.)
企业实际开发中,常用的逆向工程方式:由数据库的表生成java 代码


2.逆向工程的使用
建议使用java程序方式,不依懒开发
3.生词代码代码的配置文件













原创粉丝点击