spring boot 学习(SpringBoot对Mybatis的支持)05

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的整合。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值