在 Spring Boot 中集成 Mybatis

本贴最后更新于 2993 天前,其中的信息可能已经时移世易

之前我们讲过在 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 的配置,之后会有进阶篇,主要介绍事物、多数据源等等。

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3200 引用 • 8216 回帖
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    948 引用 • 1460 回帖 • 1 关注
  • MyBatis

    MyBatis 本是 Apache 软件基金会 的一个开源项目 iBatis,2010 年这个项目由 Apache 软件基金会迁移到了 google code,并且改名为 MyBatis ,2013 年 11 月再次迁移到了 GitHub。

    173 引用 • 414 回帖 • 366 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • vgm

    问个问题,Mybatis 里面怎么处理动态查询的?