有稍微小改动,可参考git:https://gitee.com/juncaoit/mybatis-generator
一:生成
1.效果
其中,domain,mapper等文件夹与文件都是插件生成
2.pom
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.jun</groupId> <artifactId>mybatis-generator</artifactId> <version>0.0.1-SNAPSHOT</version> <name>mybatis-generator</name> <properties> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.12.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.18</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.2</version> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>18.0</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.4</version> </dependency> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.2.2</version> </dependency> </dependencies> <build> <plugins> <!--mybatis逆向工程多插件配置 --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.7</version> <configuration> <configurationFile> mybatis-generator/generatorConfig.xml </configurationFile> <overwrite>true</overwrite> <verbose>true</verbose> </configuration> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.46</version> </dependency> <dependency> <groupId>com.itfsw</groupId> <artifactId>mybatis-generator-plugin</artifactId> <version>1.2.12</version> </dependency> </dependencies> </plugin> </plugins> </build> </project>
3.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="mysqlgenerator" targetRuntime="MyBatis3"> <property name="autoDelimitKeywords" value="true"/> <!--可以使用``包括字段名,避免字段名与sql保留字冲突报错--> <property name="beginningDelimiter" value="`"/> <property name="endingDelimiter" value="`"/> <!-- 自动生成toString方法 --> <plugin type="org.mybatis.generator.plugins.ToStringPlugin"/> <!-- 自动生成equals方法和hashcode方法 --> <plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin"/> <!-- 非官方插件 https://github.com/itfsw/mybatis-generator-plugin --> <!-- 查询单条数据插件 --> <plugin type="com.itfsw.mybatis.generator.plugins.SelectOneByExamplePlugin"/> <!-- 查询结果选择性返回插件 --> <plugin type="com.itfsw.mybatis.generator.plugins.SelectSelectivePlugin"/> <!-- Example Criteria 增强插件 --> <plugin type="com.itfsw.mybatis.generator.plugins.ExampleEnhancedPlugin"/> <!-- 数据Model属性对应Column获取插件 --> <plugin type="com.itfsw.mybatis.generator.plugins.ModelColumnPlugin"/> <!-- 逻辑删除插件 --> <plugin type="com.itfsw.mybatis.generator.plugins.LogicalDeletePlugin"> <!-- 这里配置的是全局逻辑删除列和逻辑删除值,当然在table中配置的值会覆盖该全局配置 --> <!-- 逻辑删除列类型只能为数字、字符串或者布尔类型 --> <property name="logicalDeleteColumn" value="deleted"/> <!-- 逻辑删除-已删除值 --> <property name="logicalDeleteValue" value="1"/> <!-- 逻辑删除-未删除值 --> <property name="logicalUnDeleteValue" value="0"/> </plugin> <commentGenerator> <property name="suppressDate" value="true"/> <!--<property name="suppressAllComments" value="true"/>--> </commentGenerator> <!--数据库连接信息--> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/world?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&verifyServerCertificate=false&useSSL=false" userId="root" password="123456"/> <javaTypeResolver> <property name="useJSR310Types" value="true"/> </javaTypeResolver> <javaModelGenerator targetPackage="com.jun.generator.domain" targetProject="src/main/java"/> <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"/> <javaClientGenerator type="XMLMAPPER" targetPackage="com.jun.generator.mapper" targetProject="src/main/java"/> <!--表名--> <table tableName="city"> <generatedKey column="id" sqlStatement="MySql" identity="true"/> </table> </context> </generatorConfiguration>
4.执行
二:example使用
1.说明
example是Mybatis数据层框架中的一个工具,可以帮我们完成sql语句中where条件句的书写,相当于where后面的部分,我们可以根据不同的条件来查询和操作数据库,简化书写sql的过程。
2.测试
其他的配置自己补充。
package com.jun.generator.service; import com.alibaba.fastjson.JSON; import com.jun.generator.domain.TSgWaterConsumptionDay; import com.jun.generator.domain.TSgWaterConsumptionDayExample; import com.jun.generator.mapper.TSgWaterConsumptionDayMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; @Slf4j @Service public class WaterConsumptionService { @Resource private TSgWaterConsumptionDayMapper tSgWaterConsumptionDayMapper; public List<TSgWaterConsumptionDay> getAllList(List<Long> customerIdList){ TSgWaterConsumptionDayExample example = new TSgWaterConsumptionDayExample(); TSgWaterConsumptionDayExample.Criteria criteria = example.createCriteria(); criteria.andCustomerIdIn(customerIdList); // 查询 List<TSgWaterConsumptionDay> tSgWaterConsumptionDays = tSgWaterConsumptionDayMapper.selectByExample(example); log.info("查询到的数据={}", JSON.toJSONString(tSgWaterConsumptionDays)); return tSgWaterConsumptionDays; } }
3.效果
2022-07-13 11:59:46.049 INFO 14668 --- [ main] c.j.g.service.WaterConsumptionService : 查询到的数据=[{"createTime":"2022-07-13T11:15:25","customerId":39,"dayTime":"2022-10-12","deviceNo":"tsf_001","id":1386,"typeId":55,"typeName":"tom","waterConsumption":201.0}]