读书人

spring与mybatis调整方法

发布时间: 2012-09-17 12:06:52 作者: rapoo

spring与mybatis整合方法

本文主要介绍Spring与Mybatis三种常用整合方法,需要的整合架包是mybatis-spring.jar,可通过链接?http://code.google.com/p/mybatis/下载到。????1、采用数据映射器(MapperFactoryBean)的方式,不用写mybatis映射文件,采用注解方式提供相应的sql语句和输入参数。???(1)Spring配置文件:

[java] view plain copy
?? ?1.?? ?????<!--?引入jdbc配置文件?-->?
?? ?2.?? ?????<context:property-placeholder?location="jdbc.properties" />??
?? ?3.?? ??
?? ?4.?? ??????<!--创建jdbc数据源?-->?
?? ?5.?? ??????<bean?id="dataSource" ? class = "org.apache.commons.dbcp.BasicDataSource" ?destroy-method= "close" >?
?? ?6.?? ????????<property?name="driverClassName" ?value= "${driver}" />?
?? ?7.?? ????????<property?name="url" ?value= "${url}" />?
?? ?8.?? ????????<property?name="username" ?value= "${username}" />?
?? ?9.?? ????????<property?name="password" ?value= "${password}" />?
?? ?10.?? ????????<property?name="initialSize" ?value= "${initialSize}" />?
?? ?11.?? ????????<property?name="maxActive" ?value= "${maxActive}" />?
?? ?12.?? ????????<property?name="maxIdle" ?value= "${maxIdle}" />?
?? ?13.?? ????????<property?name="minIdle" ?value= "${minIdle}" />?
?? ?14.?? ??????</bean>?
?? ?15.?? ??
?? ?16.?? ??????<!--?创建SqlSessionFactory,同时指定数据源-->?
?? ?17.?? ??????<bean?id="sqlSessionFactory" ? class = "org.mybatis.spring.SqlSessionFactoryBean" >??
?? ?18.?? ??????<property?name="dataSource" ?ref= "dataSource" ?/>??
?? ?19.?? ??????</bean>??
?? ?20.?? ??
?? ?21.?? ??????<!--创建数据映射器,数据映射器必须为接口-->?
?? ?22.?? ??????<bean?id="userMapper" ? class = "org.mybatis.spring.mapper.MapperFactoryBean" >??
?? ?23.?? ??????<property?name="mapperInterface" ?value= "com.xxt.ibatis.dbcp.dao.UserMapper" ?/>??
?? ?24.?? ??????<property?name="sqlSessionFactory" ?ref= "sqlSessionFactory" ?/>??
?? ?25.?? ??????</bean>?
?? ?26.?? ??
?? ?27.?? ??????<bean?id="userDaoImpl2" ? class = "com.xxt.ibatis.dbcp.dao.impl.UserDaoImpl2" >?
?? ?28.?? ??????<property?name="userMapper" ?ref= "userMapper" />?
?? ?29.?? ?</bean>?
??? (2)数据映射器UserMapper,代码如下:

[java] view plain copy
?? ?1.?? ?public ? interface ?UserMapper?{?
?? ?2.?? ???????@Select ( "SELECT?*?FROM?user?WHERE?id?=?#{userId}" )??
?? ?3.?? ???????User?getUser(@Param ( "userId" )? long ?id);??
?? ?4.?? ?}?
??????(3)?dao接口类UserDao,代码如下:

[java] view plain copy
?? ?1.?? ?public ? interface ?UserDao?{?
?? ?2.?? ?????public ?User?getUserById(User?user);?
?? ?3.?? ?}?
?????(4)dao实现类UserDaoImpl2,,代码如下:

[java] view plain copy
?? ?1.?? ?public ? class ?UserDaoImpl2? implements ?UserDao?{?
?? ?2.?? ??????private ?UserMapper?userMapper;??
?? ?3.?? ??
?? ?4.?? ??????public ? void ?setUserMapper(UserMapper?userMapper)?{??
?? ?5.?? ??????????this .userMapper?=?userMapper;??
?? ?6.?? ??????}???
?? ?7.?? ??
?? ?8.?? ??????public ?User?getUserById(User?user)?{?
?? ?9.?? ?????????return ?userMapper.getUser(user.getId());??
?? ?10.?? ??????}?
?? ?11.?? ??}?
?
???2、采用接口org.apache.ibatis.session.SqlSession的实现类org.mybatis.spring.SqlSessionTemplate。?????mybatis中,?sessionFactory可由SqlSessionFactoryBuilder.来创建。MyBatis- Spring?中,使用了SqlSessionFactoryBean来替代。SqlSessionFactoryBean有一个必须属性 dataSource,另外其还有一个通用属性configLocation(用来指定mybatis的xml配置文件路径)。????(1)Spring配置文件:
??
[java] view plain copy
?? ?1.?? ?<bean?id= "sqlSessionFactory" ? class = "org.mybatis.spring.SqlSessionFactoryBean" >??
?? ?2.?? ????<property?name="dataSource" ?ref= "dataSource" ?/>?
?? ?3.?? ????<property??name="configLocation" ??value= "classpath:sqlMapConfig.xml" />?
?? ?4.?? ????<!--?<property??name="mapperLocations" ??value= "classpath*:com/xxt/ibatis/dbcp/domain/user.map.xml" /???>??-->?
?? ?5.?? ?</bean>?
?? ?6.?? ??
?? ?7.?? ??<bean?id="sqlSession" ????? class = "org.mybatis.spring.SqlSessionTemplate" >??
?? ?8.?? ???????<constructor-arg?index="0" ?ref= "sqlSessionFactory" ?/>??
?? ?9.?? ?</bean>?
?? ?10.?? ??
?? ?11.?? ?<bean?id="userDaoImpl3" ? class = "com.xxt.ibatis.dbcp.dao.impl.UserDaoImpl3" >?
?? ?12.?? ????<!--注入SqlSessionTemplate实例?-->?
?? ?13.?? ????<property?name="sqlSessionTemplate" ?ref= "sqlSession" ?/>??
?? ?14.?? ????<!--也可直接注入SqlSessionFactory实例,二者都指定时,SqlSessionFactory失效?-->?
?? ?15.?? ????<!--?<property?name="sqlSessionFactory" ?ref= "sqlSessionFactory" ?/>??
?? ?16.?? ?-->?
?? ?17.?? ?</bean>?
??????(2)mybatis总配置文件sqlMapConfig.xml:

[xml] view plain copy
?? ?1.?? ?< configuration > ?
?? ?2.?? ????< typeAliases > ?
?? ?3.?? ??????< typeAlias ? type = "com.xxt.ibatis.dbcp.domain.User" ? alias = "User" ? /> ?
?? ?4.?? ???</ typeAliases > ?
?? ?5.?? ????< mappers > ?
?? ?6.?? ???????< mapper ? resource = "com/xxt/ibatis/dbcp/domain/user.map.xml" ? /> ?
?? ?7.?? ??????</ mappers > ?
?? ?8.?? ??</ configuration > ?
??????(3)实体类映射文件user.map.xml:

[java] view plain copy
?? ?1.?? ?<mapper?namespace= "com.xxt.ibatis.dbcp.domain.User" >?
?? ?2.?? ??????<resultMap?type="User" ?id= "userMap" >?
?? ?3.?? ?????????<id?property="id" ?column= "id" ?/>?
?? ?4.?? ?????????<result?property="name" ?column= "name" ?/>?
?? ?5.?? ?????????<result?property="password" ?column= "password" ?/>?
?? ?6.?? ?????????<result?property="createTime" ?column= "createtime" ?/>?
?? ?7.?? ??????</resultMap>?
?? ?8.?? ??????<select?id="getUser" ?parameterType= "User" ?resultMap= "userMap" >?
?? ?9.?? ????????select?*?from?user?where?id?=?#{id}?
?? ?10.?? ??????</select>?
?? ?11.?? ?<mapper/>?
??????(4)dao层接口实现类UserDaoImpl:

[java] view plain copy
?? ?1.?? ?public ? class ?UserDaoImpl? implements ??UserDao??{?
?? ?2.?? ????public ?SqlSessionTemplate?sqlSession;?
?? ?3.?? ????public ?User?getUserById(User?user)?{?
?? ?4.?? ????????return ?(User)sqlSession.selectOne( "com.xxt.ibatis.dbcp.domain.User.getUser" ,?user);?
?? ?5.?? ????}?
?? ?6.?? ????public ? void ?setSqlSession(SqlSessionTemplate?sqlSession)?{?
?? ?7.?? ?????????this .sqlSession?=?sqlSession;?
?? ?8.?? ????}?
?? ?9.?? ??}

读书人网 >编程

热点推荐