您的位置:首页 > 编程语言 > Java开发

10_mybatis与Spring的整合

2015-09-24 21:19 549 查看

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 数据库

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. 事务管理 : DataSourceTransactionManager

dataSource:数据源

-->

<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 configuration

PUBLIC "-//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.xml

public class SMTest {

@Autowired //自动注入    private UserMapper userMapper;
}

[/code]

8.2 测试添加

@Test

public void  testAdd() {

User user = new User(-1, "tom", new Date(), 1234);

userMapper.save(user);

int id = user.getId();

System.out.println(id);

}

[/code]
捐赠我们
良师益友工作室一直在致力于帮助编程爱好更加快速方便地学习编程,如果您对我们的成果表示认同并且觉得对你有所帮助,欢迎您对我们捐赠^_^。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: