之前我们讲过在 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 的配置,之后会有进阶篇,主要介绍事物、多数据源等等。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于