SpringBoot与Mybatis的集成
集成mybatis有两种常用的方法,其一是使用xml文件的方式;
SpringBoot与Mybatis的集成需要引入相应的配置文件和依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
编写pojo类:
import java.io.Serializable;
public class User implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
private String name;
private int age;
private Gender gender;
public User() {}
public User(String name, int age, Gender gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Gender getGender() {
return gender;
}
public void setGender(Gender gender) {
this.gender = gender;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age + ", gender=" + gender + "]";
}
}
注:这里的Gender采用枚举类型
然后将mybatis文件放入到了resource目录下
配置文件:mybatis-config.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.briup.mapper.UserMapper" >
<resultMap id="BaseResultMap" type="User" >
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="age" property="age"/>
<result column="gender" property="gender" javaType="com.briup.bean.Gender"/>
</resultMap>
<sql id="Base_Column_List" >
id, name, age, gender
</sql>
<select id="getAll" resultMap="BaseResultMap" >
SELECT
<include refid="Base_Column_List" />
FROM t_user
</select>
<select id="getOne" parameterType="long" resultMap="BaseResultMap" >
SELECT
<include refid="Base_Column_List" />
FROM t_user
WHERE id = #{id}
</select>
<insert id="insert" parameterType="User" >
INSERT INTO
t_user
(name,age,gender)
VALUES
(#{name}, #{age}, #{gender})
</insert>
<update id="update" parameterType="User" >
UPDATE
t_user
SET
<if test="name != null">name = #{name},</if>
<if test="age != null">age = #{age},</if>
gender = #{gender}
WHERE
id = #{id}
</update>
<delete id="delete" parameterType="long" >
DELETE FROM
t_user
WHERE
id =#{id}
</delete>
接着配置配置文件application.properties文件
//配置与数据库的连接
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true& characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root
//扫描config文件
mybatis.config-location=classpath:mybatis/mybatis-config.xml
//扫描mapper文件
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
之后在测试类中进行测试增删改查操作。
//spring与junit的整合
@RunWith(SpringRunner.class)
@SpringBootTest
public class ApplicationTests {
//依赖注入
@Autowired
private UserMapper userMapper;
@Test
public void testInsert() throws Exception {
userMapper.insert(new User("tom", 21, Gender.MAN));
userMapper.insert(new User("jack", 22, Gender.WOMAN));
userMapper.insert(new User("mawen", 23, Gender.WOMAN));
}
}
测试结果查看数据库即可;
spring boot中整合mybatis的第二种方式 ,使用注解annotation形式
与第一种方式大致相同,但相比更加简洁,将resource中的mapper删去(改为用注解的方式进行),修改application.properties配置文件。
以下为注解方式的mapper文件
public interface UserMapper {
@Select("SELECT * FROM t_user")
@Results({
@Result(property = "id", column = "id"),
@Result(property = "name", column = "name"),
@Result(property = "age", column = "age"),
@Result(property = "gender", column = "gender", javaType = Gender.class)
})
List<User> getAll();
@Select("SELECT * FROM t_user WHERE id = #{id}")
User getOne(long id);
@Insert("INSERT INTO t_user(name,age,gender) VALUES(#{name}, #{age}, #{gender})")
void insert(User user);
@Update("UPDATE t_user SET name=#{name} WHERE id =#{id}")
void update(User user);
@Delete("DELETE FROM t_user WHERE id =#{id}")
void delete(long id);
}
以下为修改后的配置文件
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root
//删除了扫描config 和 mapper 文件的扫描器。
最后的运行结果与xml形式的文件相同。
总结:两种方法相比,第二种方法代码量明显少于第一种,但是理解难度大于第一种。
下一篇:springboot与ssm的整合。