首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Mybatis3跟Spring3整合的三种方法

2013-10-22 
Mybatis3和Spring3整合的三种方法简介:? ? Mybatis和Spring的整合有三种方法,具体如下,个人建议用第三种抽

Mybatis3和Spring3整合的三种方法

简介:

? ? Mybatis和Spring的整合有三种方法,具体如下,个人建议用第三种抽象类方法。其中提供了许多便捷的方法。

?

1、采用数据映射器(MapperFactoryBean)的方式,不用写mybatis映射文件,采用注解方式提供相应的sql语句输入参数。
??(1)Spring配置文件:

???<!--?引入jdbc配置文件?-->??????

?<context:property-placeholder?location="jdbc.properties"/>??????????

?<!--创建jdbc数据源?-->????????

<bean?id="dataSource"?class="org.apache.commons.dbcp.BasicDataSource"?destroy-method="close">?????????

?<property?name="driverClassName"?value="${driver}"/>????????

??<property?name="url"?value="${url}"/>?????????

?<property?name="username"?value="${username}"/>?????????

?<property?name="password"?value="${password}"/>??????????

<property?name="initialSize"?value="${initialSize}"/>??????????

<property?name="maxActive"?value="${maxActive}"/>???????

???<property?name="maxIdle"?value="${maxIdle}"/>??????????

<property?name="minIdle"?value="${minIdle}"/>???????

?</bean>????????

??<!--?创建SqlSessionFactory,同时指定数据源-->???????

?<bean?id="sqlSessionFactory"?class="org.mybatis.spring.SqlSessionFactoryBean">????????

?<property?name="dataSource"?ref="dataSource"?/>?????????

</bean>?????????

??<!--创建数据映射器,数据映射器必须为接口-->??

??????<bean?id="userMapper"?class="org.mybatis.spring.mapper.MapperFactoryBean">????????

?<property?name="mapperInterface"?value="com.xxt.ibatis.dbcp.dao.UserMapper"?/>???????

??<property?name="sqlSessionFactory"?ref="sqlSessionFactory"?/>????????

?</bean>?????????

?<bean?id="userDaoImpl2"?class="com.xxt.ibatis.dbcp.dao.impl.UserDaoImpl2">???????

?<property?name="userMapper"?ref="userMapper"/>??

?</bean>??

?

数据映射器UserMapper,代码如下:

public?interface?UserMapper?{?????????@Select("SELECT?*?FROM?user?WHERE?id?=?#{userId}")??????????User?getUser(@Param("userId")?long?id);????}????dao接口类UserDao,代码如下:Java代码public?interface?UserDao?{???????public?User?getUserById(User?user);???}???dao实现类UserDaoImpl2,,代码如下:Java代码public?class?UserDaoImpl2?implements?UserDao?{????????private?UserMapper?userMapper;???????????public?void?setUserMapper(UserMapper?userMapper)?{?????????????this.userMapper?=?userMapper;?????????}????????????public?User?getUserById(User?user)?{???????????return?userMapper.getUser(user.getId());?????????}????}????2、采用接口org.apache.ibatis.session.SqlSession的实现类org.mybatis.spring.SqlSessionTemplate。
????mybatis中,?sessionFactory可由SqlSessionFactoryBuilder.来创建。MyBatis-Spring?中,使用了SqlSessionFactoryBean来替代。SqlSessionFactoryBean有一个必须属性dataSource,另外其还有一个通用属性configLocation(用来指定mybatis的xml配置文件路径)。
???(1)Spring配置文件:<!--?创建SqlSessionFactory,同时指定数据源-->??<bean?id="sqlSessionFactory"?class="org.mybatis.spring.SqlSessionFactoryBean">??????<property?name="dataSource"?ref="dataSource"?/>??????<!--?指定sqlMapConfig总配置文件,订制的environment在spring容器中不在生效-->????<property??name="configLocation"??value="classpath:sqlMapConfig.xml"/>????<!--指定实体类映射文件,可以指定同时指定某一包以及子包下面的所有配置文件,mapperLocationsconfigLocation有一个即可,当需为实体类指定别名时,可指定configLocation属性,再在mybatis总配置文件中采用mapper引入实体类映射文件?-->????<!-?-?<property??name="mapperLocations"??value="classpath*:com/xxt/ibatis/dbcp/**/*.xml"/>??-->?<bean>??(2)mybatis总配置文件sqlMapConfig.xml:<configuration>?????<typeAliases>???????<typeAlias?type="com.xxt.ibatis.dbcp.domain.User"?alias="User"?/>????</typeAliases>?????<mappers>????????<mapper?resource="com/xxt/ibatis/dbcp/domain/user.map.xml"?/>???????</mappers>???</configuration>?(3)实体类映射文件user.map.xml:<mapper?namespace="com.xxt.ibatis.dbcp.domain.User">????????<resultMap?type="User"?id="userMap">???????????<id?property="id"?column="id"?/>???????????<result?property="name"?column="name"?/>???????????<result?property="password"?column="password"?/>???????????<result?property="createTime"?column="createtime"?/>????????</resultMap>????????<select?id="getUser"?parameterType="User"?resultMap="userMap">??????????select?*?from?user?where?id?=?#{id}????????</select>???<mapper/>??(4)dao层接口实现类UserDaoImpl:Java代码public?class?UserDaoImpl?implements??UserDao??{??????public?SqlSessionTemplate?sqlSession;??????? ??public?User?getUserById(User?user)?{??????????return?(User)sqlSession.selectOne("com.xxt.ibatis.dbcp.domain.User.getUser",?user);??????}??????public?void?setSqlSession(SqlSessionTemplate?sqlSession)?{???????????this.sqlSession?=?sqlSession; ?????}????}??3、采用抽象类org.mybatis.spring.support.SqlSessionDaoSupport提供SqlSession。
???(1)spring配置文件:Java代码<bean?id="sqlSessionFactory"?class="org.mybatis.spring.SqlSessionFactoryBean">???????<property?name="dataSource"?ref="dataSource"?/>??????<property??name="configLocation"??value="classpath:sqlMapConfig.xml"/>??????<!--?<property??name="mapperLocations"??value="classpath*:com/xxt/ibatis/dbcp/domain/user.map.xml"/???>??-->???</bean>??????<bean?id="sqlSession"?????class="org.mybatis.spring.SqlSessionTemplate">??????????<constructor-arg?index="0"?ref="sqlSessionFactory"?/>????</bean>?????<bean?id="userDaoImpl3"?class="com.xxt.ibatis.dbcp.dao.impl.UserDaoImpl3">??????<!--注入SqlSessionTemplate实例?-->??????<property?name="sqlSessionTemplate"?ref="sqlSession"?/>???????<!--也可直接注入SqlSessionFactory实例,二者都指定时,SqlSessionFactory失效?-->??????<!--?<property?name="sqlSessionFactory"?ref="sqlSessionFactory"?/>? ??-->???</bean>????(2)?dao层接口实现类UserDaoImpl3:
???Java代码public?class?UserDaoImpl3?extends?SqlSessionDaoSupport?implements?UserDao?{?????public?User?getUserById(User?user)?{????????return?(User)?getSqlSession().selectOne("com.xxt.ibatis.dbcp.domain.User.getUser",?user);?????}???} ?

热点排行