一、导入spring 和 mybatis 的依赖。
1、spring核心容器的五个依赖、spring单元测试依赖(此依赖和spring核心版本最好一致。)
<properties>
<java.version>1.8</java.version>
<spring.version>5.0.4.RELEASE</spring.version>
</properties>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.0.4.RELEASE</version>
</dependency>
复制代码
2、 日志的依赖加入slf4j日志门面,和 logback实现。
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
复制代码
3、加入mybatis 和Spring整合相关的依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.44</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<!--提供编程式和声明式事务的支持-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.0.4.RELEASE</version>
</dependency>
<!--提供jdbc访问数据库的支持-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
复制代码
二、Java配置方式,编写配置文件
@Configuration
@MapperScan(basePackages = "com.demo.sm.mapper")
@ComponentScan("com.demo.sm")
public class SmConfig {
// 这里面要手动配置两个bean dataSource和SqlSessionFactory
@Bean
public DruidDataSource dataSource() {
DruidDataSource ds = new DruidDataSource();
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost:3306/test-20180410?characterEncoding=utf-8&useSSL=true");
ds.setUsername("root");
ds.setPassword("root");
ds.setInitialSize(5);
return ds;
}
@Bean
public SqlSessionFactory sqlSessionFactory () throws Exception{
ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
// 设置xml的映射文件位置
sessionFactory.setMapperLocations(resourcePatternResolver.getResources("classpath:mappings/*.xml"));
// 设置别名的包,可以在xml中直接使用user,
sessionFactory.setTypeAliasesPackage("com.demo.sm.entity");
return sessionFactory.getObject();
}
}
复制代码
三、在mapper 中编写UserMapper的接口,和在resources的mappings目录中编写UserMapper.xml。
1、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">
<mapper namespace="com.demo.sm.UserMapper">
<resultMap type="user" id="User">
<result property="id" column="id" />
<result property="name" column="name" />
<result property="age" column="age" />
</resultMap>
<select id="getUser" parameterType="String" resultMap="User">
select
u.id,u.name,u.age from user u where name=#{name}
</select>
<insert id="insertUser">
INSERT INTO user (id,name,age) VALUES (#{id},#{name},#{age})
</insert>
<update id="updateUser" parameterType="user">
UPDATE user SET name=#{name},age=#{name} WHERE id=#{id}
</update>
<delete id="deleteUser" parameterType="int">
DELETE FROM user WHERE id=#{id}
</delete>
</mapper>
复制代码
2、UserMapper接口。
@Mapper
public interface UserMapper {
User getUser(String name);
void insertUser(User user);
void deleteUser(int id);
void updateUser(User user);
}
复制代码
四、在数据库中就建一张表,只包含三个字段。测试成功。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SmConfig.class)
public class Test {
@Autowired
private UserService userService;
@org.junit.Test
public void test2() {
User java = userService.getUser("java");
System.out.println(java);
Assert.assertNotNull(java);
}
}
复制代码