10_mybatis与Spring的整合
2015-09-24 21:19
549 查看
1 添加jar包
1.1 mybatis
mybatis-3.3.0.jarmybatis-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.M2spring-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.0cglib-nodep-2.1_3
commons-logging-1.1.1
1.3 MySQL驱动我
mysql-connector-java-5.1.20-bin.jar2 数据库
CREATE TABLE s_user(
user_id INT AUTO_INCREMENT PRIMARY KEY,
user_name VARCHAR(30),
user_birthday DATE,
user_salary DOUBLE
)
[/code]
3 创建实体类
public class User {
private int id;
private String name;
private Date birthday;
private double salary;
...
}
[/code]get/set方法
有参数构造方法和无参数的构造方法
toString方法
4 Dao接口:UserMapper
public interface UserMapper {
void save(User user);
void update(User user);
void delete(int id);
User findById(int id);
List<User> findAll();
}
[/code]
5 SQL映射文件: userMapper.xml(与接口忽略大小写同名)
<mapper namespace="cn.imentor.mybatis.mapper.UserMapper">
<resultMap type="User" id="userResult">
<result column="user_id" property="id"/>
<result column="user_name" property="name"/>
<result column="user_birthday" property="birthday"/>
<result column="user_salary" property="salary"/>
</resultMap>
<!-- 取得插入数据后的id -->
<insert id="save" keyColumn="user_id" keyProperty="id" useGeneratedKeys="true">
insert into s_user(user_name,user_birthday,user_salary)
values(#{name},#{birthday},#{salary})
</insert>
<update id="update">
update s_user
set user_name = #{name},
user_birthday = #{birthday},
user_salary = #{salary}
where user_id = #{id}
</update>
<delete id="delete">
delete from s_user
where user_id = #{id}
</delete>
<select id="findById" resultMap="userResult">
select *from s_user where user_id = #{id}
</select>
<select id="findAll" resultMap="userResult">
select *
from s_user
</select>
</mapper>
[/code]注:namespace必须是接口的全类名
id :必须与对应接口的某对应的方法名一致
6 spring的配置文件bean.xml
6.1 存储在src目录下
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans[/code]http://www.springframework.org/schema/beans/spring-beans-3.2.xsd[/code]http://www.springframework.org/schema/context[/code]http://www.springframework.org/schema/context/spring-context-3.2.xsd[/code]http://www.springframework.org/schema/tx[/code]http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">[/code]</beans>
[/code]6.2 配置数据源
<bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatis"/><property name="username" value="root"/><property name="password" value="root"/></bean>
[/code]6.3 mybatis的SqlSession的工厂: SqlSessionFactoryBean
配置的class:org.mybatis.spring.SqlSessionFactoryBean
datasource:数据源
typeAliasesPackage:实体文件存储的包,别名为类的名称<!--2. mybatis的SqlSession的工厂: SqlSessionFactoryBean两个属性:dataSource :数据源typeAliasesPackage:实体文件存储的包,别名为类的名称--><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="datasource"/><property name="typeAliasesPackage" value="cn.imentor.mybatis.bean"/></bean>
[/code]6.4 mybatis自动扫描加载Sql映射文件 : MapperScannerConfigurer
<bean id="mapperConfig" class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="cn.imentor.mybatis.mapper"/><property name="sqlSessionFactory" ref="sqlSessionFactory"/></bean>
[/code]配置的class:org.mybatis.spring.mapper.MapperScannerConfigurer
sqlSessionFactory:引用上面的定义的sessionFactory
basePackage:指定sql映射文件和接口所在包(自动扫描)6.5 事务管理 : DataSourceTransactionManager
<!-- 4. 事务管理 : DataSourceTransactionManagerdataSource:数据源--><bean id="manager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="datasource"/></bean>
[/code]datasource:上面定义的数据源6.6 使用声明式事务:transaction-manager
<!-- 5. 使用声明式事务 :transaction-manager--><tx:annotation-driven transaction-manager="manager" />
[/code]7 mybatis的配置文件: mybatis-config.xml
7.1 放在src下面
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><!-- Spring整合myBatis后,这个配置文件基本可以不要了--><!-- 设置外部配置文件 --><!-- 设置类别名 --><!-- 设置数据库连接环境 --><!-- 映射文件 --></configuration>
[/code]8 测试
8.1 使用spring的测试类
@RunWith(SpringJUnit4ClassRunner.class):使用Spring的测试框架
@ContextConfiguration("/bean.xml"):加载spring配置文件:bean.xml@RunWith(SpringJUnit4ClassRunner.class)//使用Spring的测试框架@ContextConfiguration("/bean.xml")//加载spring配置文件:bean.xmlpublic class SMTest {
@Autowired //自动注入 private UserMapper userMapper;}
[/code]8.2 测试添加
@Testpublic void testAdd() {User user = new User(-1, "tom", new Date(), 1234);userMapper.save(user);int id = user.getId();System.out.println(id);}
[/code]
捐赠我们
良师益友工作室一直在致力于帮助编程爱好更加快速方便地学习编程,如果您对我们的成果表示认同并且觉得对你有所帮助,欢迎您对我们捐赠^_^。
相关文章推荐
- 关于Java中多个数据excel表格的导出
- 3、下载与安装Eclipse
- java实现链表的反转
- Java中Collection和Collections的区别
- 3、下载与安装Eclipse
- java socket 长连接 nputStream的read 阻塞问题情况之一
- java 操作excel
- java web总结(JNDI的配置)
- struts2结合spring json序列化问题
- Java基础知识强化71:正则表达式之概述和基本规则
- Java中Set集合的使用
- struts2 使用Maven搭建Struts2框架的开发环境
- Java虚拟机4:内存溢出
- Java基础知识强化70:正则表达式之引入案例(QQ号码校验)
- java交换两个数
- 多线程学习之线程阻塞机制
- [leetcode-283]Move Zeroes(java)
- 安装APK的错误码(PackageManager.java)
- Java - 强引用、弱引用、软引用、虚引用
- Java的运行时数据存储机制