mybatisgenerator集成springBoot,并常见使用教程(详)

Posted 栗子~~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatisgenerator集成springBoot,并常见使用教程(详)相关的知识,希望对你有一定的参考价值。

文章目录

前言

  如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
  而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!


mybatisgenerator集成springBoot,并常见使用教程(详)

最近有点累,不想多说了,直接上程序吧。

01 依赖配置

	<dependencies>
        <dependency>
			<groupId>org.mybatis.generator</groupId>
			<artifactId>mybatis-generator-core</artifactId>
			<version>1.3.3</version>
		</dependency>

	</dependencies>

	<build>
		<plugins>
			<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.3</version>
				<configuration>
					<configurationFile>
						<!--配置文件地址-->
						$basedir/src/main/resources/GeneratorConfig.xml
					</configurationFile>
					<overwrite>true</overwrite>
					<verbose>true</verbose>
				</configuration>
			</plugin>
		</plugins>
	</build>

02 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>

    <classPathEntry location="E:/apache-maven-3.6.0/maven/mysql/mysql-connector-java/8.0.21/mysql-connector-java-8.0.21.jar"/>

    <context id="context" targetRuntime="Mybatis3">

        <plugin type="org.mybatis.generator.plugins.RenameExampleClassPlugin">
            <property name="searchString" value="Example$" />
            <property name="replaceString" value="Query" />
        </plugin>
        <!-- JavaBean 实现 序列化 接口 -->
        <plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>
        <!-- genenat entity时,生成toString -->
        <plugin type="org.mybatis.generator.plugins.ToStringPlugin" />
        <commentGenerator>
            <!-- 是否除去自动生成的注释 -->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <!--数据库连接信息-->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://127.0.0.1:3306/TESTDB?serverTimezone=UTC"
                        userId="TESTDB" password="TESTDB">
            <!-- 设置为只生成当前数据库的表信息 -->
            <property name="nullCatalogMeansCurrent" value="true" />
        </jdbcConnection>

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

        <!--生成实体包名和位置-->
        <javaModelGenerator targetPackage="com.example.demo.yzy.dao" targetProject="src/main/java">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="true" />
            <!-- 从数据库返回的值被清理前后的空格 -->
            <property name="trimStrings" value="true" />

        </javaModelGenerator>

        <!--生成的映射文件位置-->
        <sqlMapGenerator targetPackage="mapping" targetProject="src/main/resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <!--生成dao包名和位置-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.demo.yzy.mapper"
                             targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

        <!--tableName 表或视图名, domainObjectName 实体类名  enable* 是否生成增删改查方法-->
        <!--
               enableDeleteByExample="false" enableSelectByPrimaryKey="false"
               enableSelectByExample="false" enableUpdateByExample="false"
               enableCountByExample="false" enableDeleteByPrimaryKey="false" enableUpdateByPrimaryKey="false"
        -->
        <table  tableName="person" domainObjectName="Person">
<!--            <property name="useActualColumnNames" value="true"/>-->

            <!--解决长文本生成带WithBLOBs问题-->
            <!-- <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />-->

        </table>
    </context>
</generatorConfiguration>

03 yml 配置

mybatis-plus:
  global-config:
    db-config:
      #逻辑已删除值
      logic-delete-value: 1
      #逻辑未删除值
      logic-not-delete-value: 0
    sql-parser-cache: true # 是否缓存 Sql 解析,默认不缓存
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  type-enums-package: com.example.demo.yzy.*
  mapper-locations: classpath*:mapping/*Mapper.xml  #MyBatis Mapper 所对应的 XML 文件位置

04 java config 配置

/**
* @description: TODO
* @author 杨镇宇
* @date 2022/3/24 13:56
* @version 1.0
*/
@Configuration
@MapperScan("com.example.demo.yzy.mapper")
public class MybatisConfig 


注:com.example.demo.yzy.mapper,是你扫描mapper的路径。

05 点击生成

生成的表结构:

点击生成:

注:点击两次后,除了java文件会重新生成外,xml文件不会重新生成,会在原文件基础上累加内容,因此重新生成文件时,首先要将xml文件删除。
生成的文件

06 常用使用

06::01 新增

       Person person = new Person();
       mapper.insertSelective(person);

06::02 修改 根据age修改

        Person person = new Person();
        PersonQuery personQuery = new PersonQuery();
        PersonQuery.Criteria criteria = personQuery.createCriteria();
        criteria.andAgeEqualTo(vo.getAge());
        mapper.updateByExampleSelective(person,personQuery);

06::03 修改 根据主键修改

        Person person = new Person();
        mapper.updateByPrimaryKey(person);

06::04 根据查询条件查询

        PersonQuery personQuery = new PersonQuery();
        PersonQuery.Criteria criteria = personQuery.createCriteria();
        if (StringUtils.isNotBlank(vo.getName()))
            criteria.andNameEqualTo(vo.getName());
        
        if (null != vo.getId())
            criteria.andIdEqualTo(vo.getId());
        
        if (null != vo.getAge())
            criteria.andAgeEqualTo(vo.getAge());
        
        mapper.selectByExample(personQuery);

06::05 删除

        mapper.deleteByPrimaryKey(vo.getId());

06::06 根据name删除

        PersonQuery personQuery = new PersonQuery();
        PersonQuery.Criteria criteria = personQuery.createCriteria();
        criteria.andNameEqualTo(vo.getName());
        mapper.deleteByExample(personQuery);

以上是关于mybatisgenerator集成springBoot,并常见使用教程(详)的主要内容,如果未能解决你的问题,请参考以下文章

MyBatisGenerator 集成DM8 快速生成entity,mapper接口和*.mapper.xml

MyBatis物理分页的代码实现

数据库逆向框架代码生成工具:MyBatis Generator 使用

Spring集成MyBatis框架

Springboot 和 Mybatis集成开发

spring boot集成MyBatis 通用Mapper 使用总结