Spring Boot整合mybatis并自动生成mapper和实体实例解析

下文将详细讲解Spring Boot整合MyBatis并自动生成mapper和实体实例的完整攻略。这个过程可以分成以下几个步骤:

  1. 导入依赖
    首先,在pom.xml文件中加入MyBatis和MyBatis Generator的依赖。具体如下:
<dependencies>
    <!-- MyBatis -->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.4</version>
    </dependency>
    <!-- MyBatis Generator-->
    <dependency>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-core</artifactId>
        <version>1.4.0</version>
    </dependency>
</dependencies>
  1. 配置数据库信息
    在application.properties文件中配置数据库信息。具体如下:
## 数据库配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
  1. 创建实体类
    我们需要创建对应的实体类。这些实体类需要和数据库中的表进行一一对应。具体如下:
public class User {
    private Integer id;
    private String name;
    private String password;

    // 省略getter和setter方法
}


public class Order {
    private Integer id;
    private Integer userId;
    private Double price;

    // 省略getter和setter方法
}
  1. 创建Mapper接口
    接下来,我们需要创建对应的Mapper接口。这些接口需要使用Mybatis的注解来进行对应的SQL语句操作。具体如下:
@Mapper
public interface UserMapper {

    @Select("select id, name, password from user where id = #{id}")
    User findById(@Param("id") Long id);

    @Insert("insert into user(name, password) values(#{name}, #{password})")
    int insert(User user);

    @Update("update user set name=#{name}, password=#{password} where id = #{id}")
    int update(User user);

    @Delete("delete from user where id = #{id}")
    int delete(@Param("id") Long id);

    @Select("select id, name, password from user")
    List<User> findAll();
}
@Mapper
public interface OrderMapper {

    @Select("select id, user_id as userId, price from order where id = #{id}")
    Order findById(@Param("id") Long id);

    @Insert("insert into order(user_id, price) values(#{userId}, #{price})")
    int insert(Order order);

    @Update("update order set user_id=#{userId}, price=#{price} where id = #{id}")
    int update(Order order);

    @Delete("delete from order where id = #{id}")
    int delete(@Param("id") Long id);

    @Select("select id, user_id as userId, price from order")
    List<Order> findAll();
}
  1. 配置MyBatis Generator
    接下来,我们需要配置MyBatis Generator。这个工具可以自动生成Mapper和实体类。我们在项目中先创建一个generatorConfig.xml文件。具体如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
    PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
    "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
  <context id="default" targetRuntime="MyBatis3Simple">
    <property name="javaFileEncoding" value="UTF-8" />

    <commentGenerator type="org.mybatis.generator.internal.NullCommentGenerator"/>

    <jdbcConnection driverClass="${jdbc.driverClassName}"
                    connectionURL="${jdbc.url}"
                    userId="${jdbc.username}"
                    password="${jdbc.password}">
    </jdbcConnection>

    <javaTypeResolver>
      <property name="forceBigDecimals" value="false" />
    </javaTypeResolver>

    <javaModelGenerator targetPackage="com.example.mybatisdemo.model"
                        targetProject="src/main/java">
      <property name="enableSubPackages" value="true" />
      <property name="trimStrings" value="true" />
    </javaModelGenerator>

    <sqlMapGenerator targetPackage="com.example.mybatisdemo.mapper"
                     targetProject="src/main/resources">
      <property name="enableSubPackages" value="true" />
    </sqlMapGenerator>

    <javaClientGenerator targetPackage="com.example.mybatisdemo.mapper"
                          targetProject="src/main/java"
                          type="XMLMAPPER">
      <property name="enableSubPackages" value="true" />
    </javaClientGenerator>

    <table schema="" tableName="user">
      <generatedKey column="id" sqlStatement="JDBC" identity="true" />
    </table>

    <table schema="" tableName="order">
      <generatedKey column="id" sqlStatement="JDBC" identity="true" />
    </table>

  </context>
</generatorConfiguration>
  1. 执行MyBatis Generator
    最后,我们通过执行MyBatis Generator来生成对应的Mapper和实体类。可以在pom.xml文件中配置MyBatis Generator插件。具体如下:
<build>
    <plugins>
        <!-- MyBatis Generator插件 -->
        <plugin>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-maven-plugin</artifactId>
            <version>1.4.0</version>
            <configuration>
                <verbose>true</verbose>
                <overwrite>true</overwrite>
                <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
            </configuration>
        </plugin>
    </plugins>
</build>

配置完成后,在执行mvn mybatis-generator:generate即可生成对应的文件。

  1. 使用示例
    这里给出一个简单的示例,演示如何在项目中使用Mapper。具体如下:
@RestController
public class UserController {

    @Autowired
    private UserMapper userMapper;

    @GetMapping("/users/{id}")
    public User getUserById(@PathVariable Long id){
        return userMapper.findById(id);
    }
}

在上面的代码中,我们使用了自动生成的UserMapper来查询出对应id的User信息。

另外,如果你想进一步学习Spring Boot整合MyBatis的知识,可以参考这篇文章:「Spring Boot之整合Mybatis拾遗」

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Boot整合mybatis并自动生成mapper和实体实例解析 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Java超详细讲解接口的实现与用法

    Java超详细讲解接口的实现与用法 什么是接口 在Java中,接口是一个与类有相似结构的抽象数据类型。与类不同的是,它只定义一组规范,而不实现这些规范。接口中定义的方法没有具体的实现逻辑,只是给出了方法的签名与返回值类型。 接口的定义与实现 定义接口可以使用interface关键字,接口中可以定义方法和属性。接口中的方法是公共的(public),没有方法体(…

    Java 2023年5月18日
    00
  • Java Math类的三个方法ceil,floor,round用法

    Java Math类是一个非常强大且常用的数学类,该类提供了许多数学运算方法和常量定义。其中ceil、floor和round方法都用来处理数字的舍入问题。 Math.ceil()的使用方法 Math.ceil()方法是取上整数的函数,即返回大于等于输入参数的最小整数。其语法格式如下: public static double ceil(double a) 其…

    Java 2023年5月26日
    00
  • 深入理解JVM之Class类文件结构详解

    “深入理解JVM之Class类文件结构详解”是一篇关于Java虚拟机中Class类文件结构的详细讲解文章,主要介绍了Java虚拟机中的Class文件格式、Class文件头、常量池、访问标志、类索引、父类索引、接口索引集合、实例字段表、类字段表等方面的知识点。 以下是针对每个章节的详细讲解: Class文件格式 Class文件格式是Java虚拟机中Class文…

    Java 2023年5月19日
    00
  • 如何在java 8 stream表达式实现if/else逻辑

    在Java 8中,Stream API已成为编写更具可读性和功能性的代码的核心。 在Stream API中实现if/else逻辑可以使用filter()和forEach()方法配合完成。 在filter()中我们可以输入lambda表达式作为参数,作为逻辑判断的条件。而在forEach()中,我们可以输入lambda表达式来处理符合条件的流。 下面为你提供两…

    Java 2023年6月15日
    00
  • JS注释所产生的bug 即使注释也会执行

    JS注释所产生的bug是指在一些情况下,即使代码中存在注释,这些注释也会被执行而导致程序出现问题。 该问题主要是因为在一些JS引擎中,被注释的代码可能在编译阶段和解析阶段都会被执行,因此如果注释中包含了有效的代码,则这些代码会被直接执行。这就引起了一定的安全隐患,也可能导致代码出现逻辑错误。 下面通过两个示例来说明该问题: 示例一: function tes…

    Java 2023年6月15日
    00
  • js 编码转换 gb2312 和 utf8 互转的2种方法

    下面是对“js 编码转换 gb2312 和 utf8 互转的2种方法”的完整攻略: JS 编码转换 GB2312 和 UTF-8 互转的 2 种方法 在 JavaScript 中,有时需要将字符串从 GB2312 编码转换为 UTF-8 编码或者将字符串从 UTF-8 编码转换为 GB2312 编码。下面介绍两种方法可以实现这个功能。 方法 1:使用 Tex…

    Java 2023年5月20日
    00
  • 对象的创建过程包括哪些步骤?

    以下是关于“对象的创建过程包括哪些步骤?”的完整使用攻略: 1. 对象的创建过程 在Java中,对象的创建过程包括以下几个步骤: 类加载:在Java程序运行,JVM会将类的字节码加载到内存中,并对类进行解析和验证。 分配内存:在类加载完成后,VM会在堆内存中为对象配一块连续的内存空间。在分配内存时,JVM会根据对象的大小和内存分配策略来确定内存分配方式。 初…

    Java 2023年5月12日
    00
  • 基于Spring Data的AuditorAware审计功能的示例代码

    下面我将详细讲解如何实现基于Spring Data的AuditorAware审计功能,并提供两个示例代码。 什么是AuditorAware? AuditorAware 是 Spring Data JPA 开始支持的一个新的特性,它可以用于在执行 CRUD 操作时自动更新实体中的 Auditor 相关信息(比如 create_by, last_modified…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部