Spring(五)使用Spring集成MyBatis

在实际开发中,整合框架中的ORM框架使用的不一定是Hibernate,MyBatis也是一个轻量级、灵活的框架,也是占有这一定的分量,所以在这里记录一下Spring集成MyBatis的配置步骤,方便日后的巩固复习。
需求:
一个简单的用户类:User{id, name,password}
①根据Id查询用户对象
②添加一条用户记录

1.创建java项目Spring_MyBatis

2.添加jar包:

(1)MyBatis的jar包(http://code.google.com/p/mybatis/
(2)spring的jar包(
http://repo.springsource.org/libs-release-local/org/springframework/spring/
(3)两者整合之后的jar包 mybatis-spring-1.2.2.jar(同(1))

3.创建User类:

  1. package com.wzj.entity;  
  2.   
  3.   
  4. public class User {  
  5.     private int id;  
  6.     private String name;  
  7.     private String password;  
  8.     //省略get、set  
  9.       
  10.     public User() {  
  11.     }  
  12.     public User(String name, String password) {  
  13.         this.name = name;  
  14.         this.password = password;  
  15.     }  
  16. }  

4.创建UserDao接口:

  1. package com.wzj.dao;  
  2.   
  3. import com.wzj.entity.User;  
  4.   
  5. public interface UserDao {  
  6.     //根据Id查询用户  
  7.     User selectById(int id);  
  8.     //插入一条用户记录  
  9.     int insert(User user);  
  10. }  

5.编写UserService业务类:

  1. package com.wzj.service;  
  2.   
  3. import com.wzj.dao.UserDao;  
  4. import com.wzj.entity.User;  
  5.   
  6. public class UserService {  
  7.     private UserDao userDao;  
  8.     //省略get、set  
  9.       
  10.     public User getUserById(int id){  
  11.         return userDao.selectById(id);  
  12.     }  
  13.     //不添加param注解的话,在sql语句中的#{名字}的名字一定要相同  
  14.     public int addUser(@Param("user")User user){  
  15.         return userDao.insert(user);  
  16.     }     
  17. }  

6.创建UserMapper.xml映射文件:

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
  4. <!-- namespace:与接口的完整名称对应 -->  
  5. <mapper namespace="com.wzj.dao.UserDao">  
  6.     <!-- java的User类与数据库之间的映射关系 -->  
  7.     <resultMap type="com.wzj.entity.User" id="userMap">  
  8.         <result property="id" column="USERID"/>  
  9.         <result property="name" column="USERNAME"/>  
  10.         <result property="password" column="USERPWD"/>  
  11.     </resultMap>  
  12.       
  13.     <!--   
  14.         id:与UserDao 中的方法名一致   
  15.         resultType:参数类型  
  16.         resultMap:返回结果类型如何映射,引用上面的resultMap  
  17.     -->  
  18.     <select id="selectById" parameterType="int" resultMap="userMap">  
  19.         select * from myuser1 where userid=#{id}  
  20.     </select>  
  21.       
  22.     <insert id="insert" parameterType="com.wzj.entity.User" >  
  23.         insert into myuser1 values(user_sequence.nextval,#{name},#{password})  
  24.     </insert>  
  25. </mapper>  

7.配置mybatis-config.xml文件:

  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
  3. "http://mybatis.org/dtd/mybatis-3-config.dtd">  
  4. <configuration>  
  5.     <!-- MyBatis的配置文件中现在只是一个空壳,其他必要配置已放在spring的配置中 -->  
  6.     <mappers>  
  7.         <mapper resource="com/wzj/dao/UserMapper.xml"/>  
  8.     </mappers>  
  9. </configuration>  

8.配置Spring配置文件:


  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans  
  3.     xmlns="http://www.springframework.org/schema/beans"  
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.     xmlns:p="http://www.springframework.org/schema/p"  
  6.     xmlns:aop="http://www.springframework.org/schema/aop"  
  7.     xmlns:tx="http://www.springframework.org/schema/tx"  
  8.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
  9.        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  
  10.        http://www.springframework.org/schema/tx  
  11.        http://www.springframework.org/schema/tx/spring-tx-3.1.xsd  
  12.        http://www.springframework.org/schema/p  
  13.        http://www.springframework.org/schema/p/spring-p-3.1.xsd  
  14.        http://www.springframework.org/schema/aop  
  15.        http://www.springframework.org/schema/aop/spring-aop-3.1.xsd">  
  16.   
  17.   
  18.     <!-- 1.配置数据源:DriverManagerDataSource -->  
  19.     <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
  20.         <property name="driverClassName" value="oracle.jdbc.OracleDriver"/>  
  21.         <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>  
  22.         <property name="username" value="scott"/>  
  23.         <property name="password" value="tiger"/>  
  24.     </bean>  
  25.     <!-- 2.配置MyBatis的SQLSession工厂:SqlSessionFactoryBean -->  
  26.     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
  27.         <property name="dataSource" ref="dataSource"/>  
  28.         <property name="configLocation" value="classpath:mybatis-config.xml" />  
  29.         <!-- <property name="mapperLocations" value="classpath:com/wzj/dao/*.xml"/> -->  
  30.         <!-- 如果在sql映射文件中使用了别名,可以使用下面的方式扫描使用别名的类的包 -->  
  31.         <!-- <property name="typeAliasesPackage" value="com.wzj.entity"/> -->  
  32.     </bean>  
  33.       
  34.     <!-- 3. 配置dao的bean:使用MapperFactoryBean -->  
  35.     <bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean">  
  36.         <!-- 使用mapperInterface属性指定让spring实现的接口,而且只能是接口,不能是类 -->  
  37.         <property name="mapperInterface" value="com.wzj.dao.UserDao" />  
  38.         <property name="sqlSessionFactory" ref="sqlSessionFactory"/>  
  39.     </bean>  
  40.       
  41.     <!-- 配置Service -->  
  42.     <bean id="userService" class="com.wzj.service.UserService">  
  43.         <property name="userDao" ref="userDao"/>  
  44.     </bean>  
  45.       
  46.      <!--创建一个事务管理的bean:DataSourceTransactionManager-->  
  47.     <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
  48.         <property name="dataSource" ref="dataSource"/>  
  49.     </bean>  
  50.   
  51.   
  52.     <!--配置事务管理的相关属性 -->  
  53.     <tx:advice id="txAdvice" transaction-manager="txManager">  
  54.         <tx:attributes>  
  55.             <tx:method name="get*" propagation="REQUIRED" read-only="true" />  
  56.             <tx:method name="add*" propagation="REQUIRED" />  
  57.             <tx:method name="*" propagation="REQUIRED"/>  
  58.         </tx:attributes>  
  59.     </tx:advice>  
  60.     <!--织入增强 -->  
  61.     <aop:config>  
  62.         <aop:pointcut id="pt" expression="execution(* com.wzj.service.*.*(..))" />  
  63.         <aop:advisor advice-ref="txAdvice" pointcut-ref="pt" />  
  64.     </aop:config>   
  65.       
  66. </beans>  
注意:

(1)在sqlSessionFactory的bean中配置sql映射文件

        如果sql映射文件过多,可以直接在sqlSessionFactory的bean中配置自动扫描sql映射文件,这时候就可以把mybatis-config.xml文件删除了,然后在spring中做出如下配置:
  1. <!-- 2.配置MyBatis的SQLSession工厂:SqlSessionFactoryBean -->  
  2. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
  3.     <property name="dataSource" ref="dataSource"/>  
  4.     <!-- 配置mapperLocations属性,让spring自动扫描sql映射文件 -->  
  5.     <property name="mapperLocations" value="classpath:com/wzj/dao/*.xml"/>  
  6. </bean>  

(2)配置spring自动实现数据映射接口,并自动装配

        应用中必然有多个像UserDao一样的接口,如果接口多了的话,相应的配置的mapperInterface也会很多。可以使用MapperScannerConfigurer类来实现让spring扫描指定的包下的接口并实现,然后通过自动装配的设置让userDao自动装配到UserService的属性中,如下:


  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans  
  3.     xmlns="http://www.springframework.org/schema/beans"  
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.     xmlns:p="http://www.springframework.org/schema/p"  
  6.     xmlns:aop="http://www.springframework.org/schema/aop"  
  7.     xmlns:tx="http://www.springframework.org/schema/tx"  
  8.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
  9.        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  
  10.        http://www.springframework.org/schema/tx  
  11.        http://www.springframework.org/schema/tx/spring-tx-3.1.xsd  
  12.        http://www.springframework.org/schema/p  
  13.        http://www.springframework.org/schema/p/spring-p-3.1.xsd  
  14.        http://www.springframework.org/schema/aop  
  15.        http://www.springframework.org/schema/aop/spring-aop-3.1.xsd">  
  16.   
  17.     <!--  省略其他  -->  
  18.       
  19.     <!-- spring自动扫描指定包下的接口并实现,不用再定义UserDao的bean -->  
  20.     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
  21.         <property name="sqlSessionFactory" ref="sqlSessionFactory" />  
  22.         <property name="basePackage" value="com.wzj.dao"/>  
  23.     </bean>  
  24.       
  25.     <!-- 配置Service,添加autowire属性,或者在UserService的userDao属性上使用@Autowire注解 -->  
  26.     <bean id="userService" class="com.wzj.service.UserService" autowire="byName"/>  
  27.   
  28.   
  29.     <!--  省略其他  -->  
  30. </beans>  

9.编写Main方法(只是为了测试,web应用中不存在)

  1. package com.wzj.test;  
  2.   
  3. import org.springframework.context.ApplicationContext;  
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  5.   
  6. import com.wzj.entity.User;  
  7. import com.wzj.service.UserService;  
  8.   
  9.   
  10. public class Demo {  
  11.     public static void main(String[] args) {  
  12.         ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");  
  13.         //获取UserService对象  
  14.         UserService us=(UserService) context.getBean("userService");  
  15.         User user=us.getUserById(1);  
  16.         System.out.println(user.getName()+"\t"+user.getPassword());  
  17.     }  
  18. }  
输出结果:user-1admin
        当然,插入一条数据也是成功的。以上就是spring+mybatis的基本配置,再整合Struts2的话相对而言就比较简单了,同SSH的配置一致。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
大学生在线租房平台管理系统按照操作主体分为管理员和用户。管理员的功能包括报修管理、报修评价管理、字典管理、房东管理、房屋管理、房屋收藏管理、房屋留言管理、房屋租赁管理、租房论坛管理、公告信息管理、留言板管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 大学生在线租房平台管理系统可以提高大学生在线租房平台信息管理问题的解决效率,优化大学生在线租房平台信息处理流程,保证大学生在线租房平台信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理公告,管理大学生在线租房平台信息,包括房屋管理,培训管理,报修管理,薪资管理等,可以管理公告。 房屋管理界面,管理员在房屋管理界面中可以对界面中显示,可以对房屋信息的房屋状态进行查看,可以添加新的房屋信息等。报修管理界面,管理员在报修管理界面中查看报修种类信息,报修描述信息,新增报修信息等。公告管理界面,管理员在公告管理界面中新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值