10_mybatis与Spring的整合

1 添加jar包

1.1 mybatis

  • mybatis-3.3.0.jar
  • mybatis-spring-1.2.3.jar
  • log4j-1.2.17.jar
    因为spring3出来的时候,MyBatis还没有出来,所以MyBatis与Spring的集成是由MyBatis来做的

1.2 spring

1.2.1 spring4.0 core

  • spring-aop-4.0.0.M2
  • spring-beans-4.0.0.M2
  • spring-context-4.0.0.M2
  • spring-core-4.0.0.M2
  • spring-expression-4.0.0.M2
  • spring-jdbc-4.0.0.M2
  • spring-test-4.0.0.M2
  • spring-tx-4.0.0.M2

1.2.2 spring_depend

  • aopalliance-1.0
  • cglib-nodep-2.1_3
  • commons-logging-1.1.1

1.3 MySQL驱动我

  • mysql-connector-java-5.1.20-bin.jar

2 数据库

  1. CREATE TABLE s_user(
  2. user_id INT AUTO_INCREMENT PRIMARY KEY,
  3. user_name VARCHAR(30),
  4. user_birthday DATE,
  5. user_salary DOUBLE
  6. )

3 创建实体类

  1. public class User {
  2. private int id;
  3. private String name;
  4. private Date birthday;
  5. private double salary;
  6. ...
  7. }
  • get/set方法
  • 有参数构造方法和无参数的构造方法
  • toString方法

4 Dao接口:UserMapper

  1. public interface UserMapper {
  2. void save(User user);
  3. void update(User user);
  4. void delete(int id);
  5. User findById(int id);
  6. List<User> findAll();
  7. }

5 SQL映射文件: userMapper.xml(与接口忽略大小写同名)

  1. <mapper namespace="cn.imentor.mybatis.mapper.UserMapper">
  2. <resultMap type="User" id="userResult">
  3. <result column="user_id" property="id"/>
  4. <result column="user_name" property="name"/>
  5. <result column="user_birthday" property="birthday"/>
  6. <result column="user_salary" property="salary"/>
  7. </resultMap>
  8. <!-- 取得插入数据后的id -->
  9. <insert id="save" keyColumn="user_id" keyProperty="id" useGeneratedKeys="true">
  10. insert into s_user(user_name,user_birthday,user_salary)
  11. values(#{name},#{birthday},#{salary})
  12. </insert>
  13. <update id="update">
  14. update s_user
  15. set user_name = #{name},
  16. user_birthday = #{birthday},
  17. user_salary = #{salary}
  18. where user_id = #{id}
  19. </update>
  20. <delete id="delete">
  21. delete from s_user
  22. where user_id = #{id}
  23. </delete>
  24. <select id="findById" resultMap="userResult">
  25. select * from s_user where user_id = #{id}
  26. </select>
  27. <select id="findAll" resultMap="userResult">
  28. select *
  29. from s_user
  30. </select>
  31. </mapper>
注:
  • namespace必须是接口的全类名
  • id :必须与对应接口的某对应的方法名一致

6 spring的配置文件bean.xml

6.1 存储在src目录下

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
  4. xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
  5. xsi:schemaLocation="
  6. http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
  8. http://www.springframework.org/schema/context
  9. http://www.springframework.org/schema/context/spring-context-3.2.xsd
  10. http://www.springframework.org/schema/tx
  11. http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">
  12. </beans>

6.2 配置数据源

  1. <bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  2. <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
  3. <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
  4. <property name="username" value="root"/>
  5. <property name="password" value="root"/>
  6. </bean>

6.3   mybatis的SqlSession的工厂: SqlSessionFactoryBean

  • 配置的class:org.mybatis.spring.SqlSessionFactoryBean
  • datasource:数据源
  •  typeAliasesPackage:实体文件存储的包,别名为类的名称
  1. <!--2. mybatis的SqlSession的工厂: SqlSessionFactoryBean
  2. 两个属性:dataSource :数据源
  3. typeAliasesPackage:实体文件存储的包,别名为类的名称
  4. -->
  5. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  6. <property name="dataSource" ref="datasource"/>
  7. <property name="typeAliasesPackage" value="cn.imentor.mybatis.bean"/>
  8. </bean>

6.4 mybatis自动扫描加载Sql映射文件 : MapperScannerConfigurer

  1. <bean id="mapperConfig" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  2. <property name="basePackage" value="cn.imentor.mybatis.mapper"/>
  3. <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
  4. </bean>
  • 配置的class:org.mybatis.spring.mapper.MapperScannerConfigurer
  • sqlSessionFactory:引用上面的定义的sessionFactory
  •  basePackage:指定sql映射文件和接口所在包(自动扫描)

6.5 事务管理 : DataSourceTransactionManager

  1. <!-- 4. 事务管理 : DataSourceTransactionManager
  2. dataSource:数据源
  3. -->
  4. <bean id="manager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  5. <property name="dataSource" ref="datasource"/>
  6. </bean>
  • datasource:上面定义的数据源

6.6 使用声明式事务:transaction-manager

  1. <!-- 5. 使用声明式事务 :transaction-manager-->
  2. <tx:annotation-driven transaction-manager="manager" />

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

7.1 放在src下面

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <!-- Spring整合myBatis后,这个配置文件基本可以不要了-->
  7. <!-- 设置外部配置文件 -->
  8. <!-- 设置类别名 -->
  9. <!-- 设置数据库连接环境 -->
  10. <!-- 映射文件 -->
  11. </configuration>

8 测试

8.1 使用spring的测试类

  • @RunWith(SpringJUnit4ClassRunner.class):使用Spring的测试框架
  • @ContextConfiguration("/bean.xml"):加载spring配置文件:bean.xml
  1. @RunWith(SpringJUnit4ClassRunner.class)//使用Spring的测试框架
  2. @ContextConfiguration("/bean.xml") //加载spring配置文件:bean.xml
  3. public class SMTest {
  4. @Autowired //自动注入
        private UserMapper userMapper;
  5. }

8.2 测试添加

  1. @Test
  2. public void testAdd() {
  3. User user = new User(-1, "tom", new Date(), 1234);
  4. userMapper.save(user);
  5. int id = user.getId();
  6. System.out.println(id);
  7. }

捐赠我们
    良师益友工作室一直在致力于帮助编程爱好更加快速方便地学习编程,如果您对我们的成果表示认同并且觉得对你有所帮助,欢迎您对我们捐赠^_^。
    

















原文地址:https://www.cnblogs.com/imentors/p/4836627.html