本文主要介绍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. }
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com