您现在的位置是:首页 >技术杂谈 >Mybatis-plus 代码生成器网站首页技术杂谈

Mybatis-plus 代码生成器

你的意义luuuu 2023-06-18 20:00:03
简介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类通常是由以下三个组成部分构成:

  1. QueryWrapper: 表示要查询哪个表,以及要查询哪些字段
  2. Criteria: 指定查询条件,包括大于、小于、等于等
  3. 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类中常用的方法:

  1. createCriteria():该方法通过调用Criteria类的方法来构建查询条件。返回值为Criteria类型的对象,可以通过该对象来添加查询条件。
  2. andXXX():该类方法用于添加查询条件,在这里XXX可以是大于、小于、等于等。例如:andEqualTo()表示等于,andBetween()表示在两个值之间。
  3. orderBy():该方法用于设置排序方式。例如:orderBy(“id”).asc()表示按id升序排序,orderBy(“id”).desc()表示按id降序排序。
  4. setDistinct():该方法用于设置查询结果是否去重。默认情况下,查询结果不去重。
  5. or():该方法用于设置OR查询条件。例如:or().andEqualTo(“name”, “John”).andBetween(“age”, 20, 30)表示根据name为"John"或者age在20到30之间的条件进行查询。
  6. selectProperties():该方法用于设置查询结果中的字段。例如:selectProperties(“id”, “name”)表示只查询id和name两个字段的数据。
  7. isDistinct():该方法用于判断查询结果是否去重。
  8. getOrderByClause():该方法用于获取查询结果的排序方式。需要注意的是,Example类可以和Wrapper类(Lambda表达式构造器)配合使用来构建更加复杂的查询条件。在使用时,可以根据实际需求进行灵活选择。

Criteria类是Example类的内部类,作为Example类的一部分用于构建查询条件。它提供了丰富的方法,用于设置查询条件

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。