本文主要介绍一下如何整合Spring、Mybatis
整合的大致思路就是使用Spring去管理Mybatis对象的创建。
1)首先Mybatis的使用
- 需要Mybatis依赖
- 配置mybatisConfig.xml文件
- 跟数据库字段对应的VO
- 编写mapper.java文件
- 编写mapper.xml文件
- 通过SqlSessionFactory使用
2)再然后Spring的使用
- 导入依赖
- JavaBean
- 配置springConfig.xml文件
整合思路
这里Mybatis中需要Spring管理的对象就是SqlSessionFactory的一个实例,
同时,在springConfig.xml文件中配置数据源
整合步骤
- 导入mybatis依赖、导入spring依赖
- 创建VO类
- mapper.java文件
- mapper.xml文件
- 创建mybatisConfig.xml文件
- 创建springConfig.xml文件
对于Spring跟Mybatis的整合来说,还需要导入一个专门整合的依赖:
mybatis-spring
mybatis依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
<!--mybatis配置-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
</dependency>
Spring核心依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
Spring-Mybatis整合依赖
<!--mybatis和spring整合jar-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
创建VO类
这个类的成员变量需要跟数据库对应的表的字段一致
public class User {
private int id;
private String name;
private Integer sex;
private String address;
//省略setter、getter和toString
}
编写mapper.java文件
用以调用的操作数据库的方法
public interface UserMapper {
User getUserById(int id);
}
编写mapper.xml文件
用于查询数据库
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--mapper:根标签,namespace命令空间,随便写,一般保证命名空间唯一 -->
<mapper namespace="orgSM.exampleSM.mapper.UserMapper">
<!--查询标签:select-->
<select id="getUserById" resultType="orgSM.exampleSM.bean.User">
select * from user where id = #{id}
</select>
</mapper>
配置mybatisConfig.xml文件
这里面的配置可以交给Spring完成、控制、管理
<?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整合后,将数据源放在spring的配置文件中-->
<!--<environments default="">-->
<!--<environment id="">-->
<!--<transactionManager type=""></transactionManager>-->
<!--<dataSource type=""></dataSource>-->
<!--</environment>-->
<!--</environments>-->
<!--mapper 在和spring整合后,可以放在spring配置文件中-->
<!--<mappers>-->
<!--<mapper resource=""/>-->
<!--</mappers>-->
</configuration>
配置springConfig.xml文件(重头戏!!!)
通过Spring管理数据源(驱动、账号、密码等)
管理SqlSessionFactory对象
通过代理生成Mapper.java的一个对象(操作数据库)
<?xml version="1.0" encoding="UTF-8"?>
<!--根标签-->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!--配置数据源-->
<bean id="dataSource" class="com.mchange.v2.c3p0.DriverManagerDataSource">
<!--配置连接数据库的核心配置4个参数-->
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="user" value="root"/>
<property name="password" value="123456"/>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/library"/>
</bean>
<!--配置SQLSessionFactory-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--配置数据源-->
<property name="dataSource" ref="dataSource"/>
<!--加载mybatis的配置,也可以在mybatisConfig.xml中进行配置-->
<!--<property name="configLocation" value="config/mybatis.xml"/>-->
<!--配置xml文件的映射,在mybatis的中,在<mapper>标签下添加的-->
<property name="mapperLocations">
<list>
<value>mapper/userMapper.xml</value>
</list>
</property>
</bean>
<!--
通过代理对象进行mapper的映射
class即mybatis-spring包提供的MapperFactoryBean
-->
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<!--mapperInterface指定mapper接口-->
<property name="mapperInterface" value="orgSM.exampleSM.mapper.UserMapper"/>
<!--指定SQLSessionFactory-->
<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
</beans>
Demo
public class App {
public static void main(String[] args) {
ClassPathXmlApplicationContext applicationContext =
new ClassPathXmlApplicationContext("config/spring.xml");//读取配置文件
UserMapper userMapper = (UserMapper) applicationContext.getBean("userMapper");
User user = userMapper.getUserById(10);
System.out.println(user);
}
}