文章目录
文章中数据库为 Mysql、JDK版本为1.8、Spring版本为 4.3.9
在Spring中整合Mybatis总体来说分为以下几个步骤
- 引入数据源
- 创建 Mapper 接口
- 创建 Mapper.xml
- 配置Mybatis的 SqlSessionFactory
这是最最简单也是最基础的配置,下面将演示这几步的配置方式。
我们在 src 目录下面创建一个 resources 的文件夹,专门拿来存放各种配置文件,然后在 IDEA中将它标记成 “resources” ,那么 resources 文件夹下面的配置文件在编译后,都会存放在WEB-INF/classes/文件夹下面,我们以后要引用配置文件的时候就可以直接写:classpath:配置文件名,这样就可以引用指定的配置文件了。
1、配置数据源
我们首先创建一个 mysql 的配置文件 jdbc.properties,里面存放以下内容:
// mysql 驱动
jdbc_driverClassName=com.mysql.jdbc.Driver
// 数据库地址和数据库名和编码
jdbc_url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8&useSSL=false
// 用户名和密码
jdbc_username=root
jdbc_password=root
在 Spring 的配置文件中引入 mysql 的配置文件;
<!-- 1、引入mysql配置文件 -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:jdbc.properties</value>
<!--要是有多个配置文件,只需在这里继续添加即可 -->
</list>
</property>
</bean>
接下来就是配置数据源了,配置数据源会使用到类:org.springframework.jdbc.datasource.DriverManagerDataSource
<!-- 2、配置数据源 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc_driverClassName}" />
<property name="url" value="${jdbc_url}" />
<property name="username" value="${jdbc_username}" />
<property name="password" value="${jdbc_password}" />
</bean>
要引用 mysql 配置文件中的内容,使用语法:${键名}
数据源到此,就配置结束了,下面配置 mybatis的相关配置。
2、配置 Mybatis
配置Mybatis大致分为以下几个步骤:
- 配置 mybatis 的配置文件
- 创建 ***Mapper 接口
- 创建 ***Mapper.xml
- 配置Mybatis的 SqlSessionFactory
2.1、配置 mybatis 的配置文件
首先,我们要先创建 mybatis 的配置文件:mybatis-config.xml
这个配置文件我们放在 resources/mybatis/ 目录下,配置文件里的内容如下:
<?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>
<!-- 配置包的 entity 类的全限定名,以后在 Mapper.xml 中再使用 entity 下的类的时候就可以直接写名字,而不需要写全限定名了 -->
<typeAliases>
<package name="com.hyuga.neji.entity"/>
</typeAliases>
</configuration>
2.2、配置 Mapper 接口
Mapper 接口与 Mapper.xml相互映射,Mapper 接口为Java代码,放在 src 目录下,我们创建的接口为:com.hyuga.neji.dao.UserMapper
我为这个接口声明了一个查询所有 User 的方法:
public interface UserMapper {
List<User> selectAll();
}
2.3、配置 mapper.xml
我们的 mapper.xml 文件配置在 resources/mybatis/mappers/ 目录下,我们先创建文件:UserMapper.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">
// 这里的 namespace 里面的内容写成要映射的 mapper 接口的路径。
<mapper namespace="com.hyuga.neji.mappers.UserMapper">
<resultMap id="userResult" type="User">
<result column="id" property="id"/>
<result column="user_name" property="userName"/>
<result column="e_name" property="EName"/>
<result column="gender" property="gender"/>
<result column="age" property="age"/>
</resultMap>
<select id="selectAll" resultMap="userResult">
SELECT * FROM user;
</select>
</mapper>
以下几点需要注意:
- xml 文件的 namespace 要写成 mapper 接口的路径。
- Mapper 接口方法名和 Mapper.xml 中定义的每个 sql 的 id 同名。例如上面的 “selectAll”
- Mapper 接口方法的输入参数类型和 Mapper.xml 中定义的 sql 的parameterType 类型相同。
- Mapper 接口的返回类型和 Mapper.xml 中定义的 sql 的 resultType 类型相同
2.4、配置 Mybatis 的 SqlSessionFactory
在配置Mybatis的 SqlSessionFactory时,使用类:org.mybatis.spring.SqlSessionFactoryBean
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 引用上面 mysql 配置中的数据源 -->
<property name="dataSource" ref="dataSource" />
<!-- mapperLocations配置**Mapper.xml文件位置 -->
<property name="mapperLocations" value="classpath:mybatis/mappers/*.xml"/>
<!-- configLocation配置mybatis-config文件位置 -->
<property name="configLocation" value="classpath:mybatis/mybatis-config.xml" />
</bean>
2.5、配置 Mapper 的扫描
<!-- 自动扫描了所有的 *Mapper.xml对应的mapper接口文件,这样就不用一个一个手动配置Mapper的映射了,只要Mapper接口类和Mapper映射文件对应起来就可以了。 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.hyuga.neji.dao" />
</bean>
到此,最简单的Spring整合Mybatis就完成了。
3、测试验证
下面使用Junit进行测试:
public class UserTest {
@Test
public void getAllUser(){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
UserMapper mapper = (UserMapper) context.getBean("userMapper");
List<User> list = mapper.selectAll();
for (User user : list) {
System.out.println(user);
}
}
}
打印结果:
User{id=1, userName='日向宁次', EName='HyugaNeji', gender=1, age=18}
User{id=2, userName='漩涡鸣人', EName='Uzumaki Naruto', gender=1, age=19}
User{id=3, userName='宇智波佐助', EName='Uchiha Sasuke', gender=1, age=19}
User{id=4, userName='日向雏田', EName='Hyuga Hinata', gender=0, age=16}
这只是最简单的按照配置文件的方式整合mybatis,另外还有SpringMVC、事务之类的配置可以在此基础上按需加载。
源码下载地址: SSM框架
这是一个简单的SSM框架,还包括sql数据、事务、简单的网页做数据显示。
下载即可使用
技 术 无 他, 唯 有 熟 尔。
知 其 然, 也 知 其 所 以 然。
踏 实 一 些, 不 要 着 急, 你 想 要 的 岁 月 都 会 给 你。