之前我们讲过在 Spring Boot 中集成 JPA“在 spring Boot 中使用 Spring-data-jpa 操作数据库”,本篇介绍另外一个 ORM 框架 Mybatis 在 Spring Boot 中的集成使用。
最近一直在用 JPA,其实还是蛮喜欢 JPA 的风格,最近需要开一个新项目,还没定下具体用什么 ORM 框架,不过 Mybatis 的几率会大一些,本篇就相当于一个温习回顾吧,话不多说了,大家看下面步骤吧。
在 Spring Boot 中集成 Mybatis
- 在 POM 中添加 Mybatis 的相关起步依赖,Spring Boot 的项目构建大家可以参考我的这篇文章“Spring Boot 快速入门 ”
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
- 配置数据库连接,我们在 application.yml 文件中配置一下内容
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/restful?useUnicode=true&characterEncoding=UTF-8&useSSL=false
username: root
password: root
initialize: true
- 在数据库中创建 user 表,字段为 ID(INT),NAME(VARCHAR),HOBBY(VARCHAR),并创建 user 实体 Bean,如下:
public class User {
private Integer id;
private String name;
private String hobby;
//省去get、set方法
//之前文章我提过一个lombok的框架,可以省去get set方法,大家可以参考一下
//https://my.oschina.net/wangxincj/blog/811611
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", hobby='" + hobby + '\'' +
'}';
}
}
- user 对象创建好后我们编写 UserMapper,此处有两种方法,大家可以自行选择:
1、第一种方法如下:
- 编写 Mapper
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface UserMapper {
int insert(@Param("pojo") User pojo);
int insertList(@Param("pojos") List pojo);
int update(@Param("pojo") User pojo);
}
- 在 resources 文件夹下面创建 mapper 文件夹,存放 mapper.xml 文件
- 编写 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.wang.mybatis.UserMapper">
<!--auto generated Code-->
<resultMap id="AllColumnMap" type="com.wang.mybatis.User">
<result column="id" property="id"/>
<result column="name" property="name"/>
<result column="hobby" property="hobby"/>
</resultMap>
<!--auto generated Code-->
<sql id="all_column">
`id`,
`name`,
`hobby`
</sql>
<!--auto generated Code-->
<insert id="insert">
INSERT INTO `user`
(`id`,`name`,`hobby`)
VALUES (#{pojo.id},#{pojo.name},#{pojo.hobby})
</insert>
<!--auto generated Code-->
<insert id="insertList">
INSERT INTO `user`(
<include refid="all_column"/>
)VALUES
<foreach collection="pojos" item="pojo" index="index" separator=",">
(
#{pojo.id},
#{pojo.name},
#{pojo.hobby}
)
</foreach>
</insert>
<!--auto generated Code-->
<update id="update">
UPDATE `user`
<set>
<if test="pojo.id != null"> `id` = #{pojo.id}, </if>
<if test="pojo.name != null"> `name` = #{pojo.name}, </if>
<if test="pojo.hobby != null"> `pwd` = #{pojo.hobby} </if>
</set>
WHERE `id` = #{pojo.id}
</update>
</mapper>
- 在 application.yml 中添加 Mybatis 的相关配置
mybatis:
mapper-locations: classpath*:mapper/*Mapper.xml
type-aliases-package: com.wang.mybatis
2、第二种方法如下
- 编写 Mapper 对象
@Mapper
public interface UserMapper {
@Insert("INSERT INTO user(name, hobby) VALUES(#{name}, #{hobby})")
int insert(@Param("name") String name, @Param("hobby") String hobby);
@Update("UPDATE user SET hobby=#{hobby} WHERE name=#{name}")
void update(User user);
@Delete("DELETE FROM user WHERE id =#{id}")
void delete(Long id);
}
不难看出第一种方法是比较传统的 xml 方式配置,而第二种方式则是去除了 xml 将 sql 配置到了注解中,简化了配置,也更符合 Spring Boot 的初衷。两种方法大家看自己的情况而定吧。
至此,Mybatis 的相关配置完成。
ps:在此给大家安利一个 Mybatis 的自动化插件 MyBatisCodeHelper,使用这个插件,大家只要写好实体 bean,插件即可自动创建相应的 sql 脚本、Mapper.xml、Mapper 层代码、service 层代码,在 Mapper 层中大家还可以根据一定的规则编写方法名称,插件自动根据方法名称在 xml 生成相应的配置。
插件地址:https://www.oschina.net/news/81912/mybatiscodehelper-1-2
本篇主要介绍 Mybatis 的配置,之后会有进阶篇,主要介绍事物、多数据源等等。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于