您现在的位置是:首页 >技术杂谈 >Mybatis-plus 代码生成器网站首页技术杂谈
Mybatis-plus 代码生成器
简介Mybatis-plus 代码生成器
1、pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxxx</groupId>
<artifactId>shop-generator</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 继承 shop-parent 依赖 -->
<parent>
<groupId>com.wll</groupId>
<artifactId>shop</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<!-- mybatis 依赖(让生成的 pojo 和 mapper 不缺少注解相关类型) -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<!-- mybatis generator core 依赖 -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
</dependency>
</dependencies>
<!-- build 标签常用于添加插件及编译配置 -->
<build>
<plugins>
<!-- mybatis generator plugin 依赖 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<verbose>true</verbose>
<!-- 是否覆盖 -->
<overwrite>true</overwrite>
<!-- 自动生成的配置 -->
<configurationFile>src/main/resources/mybatis-generator.xml</configurationFile>
</configuration>
<dependencies>
<!-- mysql 数据库依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!-- mybatis generator core 依赖 -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
</dependency>
<!-- 将项目打包至本地仓库并添加依赖 -->
<dependency>
<groupId>com.xxxx</groupId>
<artifactId>shop-generator</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
2、mybatis-generator.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="MysqlTables" targetRuntime="MyBatis3">
<!-- 生成的Java文件的编码 -->
<property name="javaFileEncoding" value="UTF-8"/>
<!-- 增加Models ToStirng方法 -->
<plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
<!-- 增加Models Serializable实现 -->
<plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>
<!-- 分页插件 -->
<!-- 在example类中增 page 属性,并在mapper.xml的查询中加入page !=null 时的查询 -->
<!-- <plugin type="org.mybatis.generator.plugins.MySQLPagerPlugin" /> -->
<!-- 在example类中增 offset和limit属性,并在mapper.xml的查询中加入limit ${offset} , ${limit} 提供在offset和limit>0时的查询 -->
<!-- <plugin type="org.mybatis.generator.plugins.MySQLPaginationPlugin"></plugin> -->
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<!-- type指定生成注释使用的对象 -->
<commentGenerator type="com.xxxx.generator.ShopCommentGenerator">
<property name="suppressAllComments" value="false"/>
</commentGenerator>
<!-- mysql数据库连接配置 -->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/shop?"
userId="root" password="abc123">
</jdbcConnection>
<!--
是否忽略BigDecimals 非必填项
自动生成Java对象的时候,会根据number类型的长度不同生成不同的数据类型
number长度 Java类型
1~4 Short
5~9 Integer
10~18 Long
18+ BigDecimal
-->
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- 以下内容,需要改动 -->
<!-- java类生成的位置 -->
<javaModelGenerator targetPackage="com.xxxx.generator.pojo" targetProject="src/main/java">
<!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
<property name="enableSubPackages" value="true"/>
<!-- 从数据库返回的值去除前后空格 -->
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- *Mapper.xml配置文件生成的位置 -->
<sqlMapGenerator targetPackage="com.xxxx.generator.mapper" targetProject="src/main/java">
<!-- 是否让schema作为包后缀 -->
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- java mapper接口生成的位置(interface) -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.xxxx.generator.mapper" targetProject="src/main/java">
<!-- 是否让schema作为包后缀 -->
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!--
指定数据库表
tableName数据库表名
domainObjectName生成的实体类名
是否需要mapper配置文件加入sql的where条件查询,需要将enableCountByExample等设为true,会生成一个对应domainObjectName的Example类
-->
<table tableName="t_goods_category" domainObjectName="GoodsCategory"
enableCountByExample="false" enableDeleteByExample="false"
enableSelectByExample="false" enableUpdateByExample="false">
<!-- 用于insert时,返回主键的编号 -->
<generatedKey column="order_id" sqlStatement="MySql" identity="true"/>
</table>
</context>
</generatorConfiguration>
Example类
这里可以生成一个example类
什么是example类?
Mybatis-Plus的代码生成器可以自动生成一些基本的代码文件,其中包括了Example(查询条件构造器)类。如下是Example类的大致解释和用法:
Example类是在Mybatis-Plus中用于构建复杂条件查询的常用工具类,它是基于Wrapper(Lambda表达式构造器)来构造查询条件的。它可以帮助开发人员通过有条件的SQL查询获取到想要的数据结果。
Example类通常是由以下三个组成部分构成:
- QueryWrapper: 表示要查询哪个表,以及要查询哪些字段
- Criteria: 指定查询条件,包括大于、小于、等于等
- OrderBy: 指定要排序的字段以及排序方式
在使用Example类时,可以通过链式调用来构建查询条件,以达到更加灵活、简便的查询效果。
Example<User> example = new Example<>();
example.createCriteria().andEqualTo("name", "John").andBetween("age", 20, 30);
List<User> users = userMapper.selectByExample(example);
Example类是Mybatis-Plus中用于构建复杂条件查询的工具类。
它的构造规则如下:1. Example对象必须要指定泛型类型,以表明要查询的实体类。2. Example对象支持链式调用,可以使用Example.xxx().xxx()的方式来对查询条件进行设置。3. Example类的构造方法可以带有一个参数,即泛型类型。例如:Example example = new Example(User.class);
Example类中常用的方法:
- createCriteria():该方法通过调用Criteria类的方法来构建查询条件。返回值为Criteria类型的对象,可以通过该对象来添加查询条件。
- andXXX():该类方法用于添加查询条件,在这里XXX可以是大于、小于、等于等。例如:andEqualTo()表示等于,andBetween()表示在两个值之间。
- orderBy():该方法用于设置排序方式。例如:orderBy(“id”).asc()表示按id升序排序,orderBy(“id”).desc()表示按id降序排序。
- setDistinct():该方法用于设置查询结果是否去重。默认情况下,查询结果不去重。
- or():该方法用于设置OR查询条件。例如:or().andEqualTo(“name”, “John”).andBetween(“age”, 20, 30)表示根据name为"John"或者age在20到30之间的条件进行查询。
- selectProperties():该方法用于设置查询结果中的字段。例如:selectProperties(“id”, “name”)表示只查询id和name两个字段的数据。
- isDistinct():该方法用于判断查询结果是否去重。
- getOrderByClause():该方法用于获取查询结果的排序方式。需要注意的是,Example类可以和Wrapper类(Lambda表达式构造器)配合使用来构建更加复杂的查询条件。在使用时,可以根据实际需求进行灵活选择。
Criteria类是Example类的内部类,作为Example类的一部分用于构建查询条件。它提供了丰富的方法,用于设置查询条件
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。