MyBatis加强(1)~mybatis的代码生成器 Generator

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: MyBatis加强(1)~mybatis的代码生成器 Generator

一、mybatis的代码生成器 Generator

✿ 介绍:

MyBatis Generator 简称 MBG,是一个专门为 iBatis、MyBatis 框架使用者提供的代码生成器,

可以快速根据表生成对应的模型对象、Mapper接口、Mapper文件,甚至生成 QBC 风格查询对象。

MBG 支持基本的增删改查操作,也支持 QBC 风格的条件查询,但是复杂的查询还是需要我们写 SQL。


■ 运行 MyBatis Generator:

□ 方式一:使用 Java 代码运行(目前选用)

□ 方式二:使用 Maven 插件运行(项目中选用)


✿ mybatis的Generator使用:

拷贝jar包

② MGB的配置 genratorConfig.xml [包含生成代码的配置参数]

运行MGB:方式一(使用 Java 代码运行) 方式二(使用 Maven 插件运行)



1、配置详解:

■ genratorConfig.xml 文件【常用的配置】:
  • genratorConfig.xml 文件的Context元素的属性 targetRuntime="MyBatis3Simple"
  • 使用的时候要注意:
  • 元素 jdbcConnection 连接数据库的四要素(注意数据库的名称)
  • 元素 javaModelGenerator 生成domain对象的targetPackage 和 targetProject
  • 元素 sqlMapGenerator 生成Mapper文件的targetPackage 和 targetProject
  • 元素 javaClientGenerator 生成Mapper接口的targetPackage 和 targetProject
  • 元素 table的tableName表名
<?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="mysql" defaultModelType="hierarchical" targetRuntime="MyBatis3Simple">
    <!-- 生成的Java文件的编码 -->
    <property name="javaFileEncoding" value="UTF-8" />
    <!-- beginningDelimiter和endingDelimiter:指明数据库的用于标记数据库对象名的符号,比如ORACLE就是双引号,MYSQL默认是`反引号; -->
    <property name="beginningDelimiter" value="`" />
    <property name="endingDelimiter" value="`" />
    <!-- 注释生成器 -->
    <commentGenerator>
       <property name="suppressDate" value="true" />
       <property name="suppressAllComments" value="true" />
    </commentGenerator>
    <!-- 必须要有的,使用这个配置链接数据库 @TODO:是否可以扩展 -->
    <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" 
             connectionURL="jdbc:mysql://localhost:3306/mybatisdemo"
             userId="root" 
             password="admin">
    </jdbcConnection>
    <!-- 生成domain对象 -->
    <javaModelGenerator targetPackage="com.shan.mybatis.demo.domain" targetProject="src">
       <property name="enableSubPackages" value="true" />
    </javaModelGenerator>
    <!-- 生成Mapper文件 -->
    <sqlMapGenerator targetPackage="com.shan.mybatis.demo.mapper" targetProject="resources">
       <property name="enableSubPackages" value="true" />
    </sqlMapGenerator>
    <!-- 生成Mapper接口 -->
    <javaClientGenerator targetPackage="com.shan.mybatis.demo.mapper" type="XMLMAPPER" targetProject="src">
       <property name="enableSubPackages" value="true" />
    </javaClientGenerator>
    <!-- ============================================================================== -->
    <!-- 使用domainObjectName 指定生成对应的对象名 --> 
    <table tableName="t_user2" delimitIdentifiers="true" domainObjectName="TableUser">
       <!-- 使用useActualColumnNames,让生成的对象的属性名使用数据库的列名 -->
       <property name="useActualColumnNames" value="true" />
       <generatedKey column="id" sqlStatement="JDBC" />
    </table>
    <!-- ============================================================================= -->
  </context>
</generatorConfiguration>

2、启动类 Generator:

public class Generator {
  public static void main(String[] args) throws Exception {
    //MBG执行过程中的警告信息
    List<String> warnings = new ArrayList<String>();
    //生成代码重复时,是否覆盖源代码
    boolean override = false;
    InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("generatorConfig.xml");
    ConfigurationParser cp = new ConfigurationParser(warnings);
    Configuration config = cp.parseConfiguration(in);
    DefaultShellCallback callback = new DefaultShellCallback(override);
    //创建MBG
    MyBatisGenerator mbg = new MyBatisGenerator(config, callback, warnings);
    mbg.generate(null);
    //输出警告信息
    for (String warn : warnings) {
      System.out.println(warn);
    }
  }
}

■ 运行MBG 生成了domain类、mapper接口和mapper.xml 文件

  • 在开发中,一般建议手写domain类


33.png


细节:数据库的表名t_user2,生成对象变成TUser2【可以把数据库的表名取名为user----》生成对象User】

  • MBG遇到下划线,使用驼峰法表示,还有MBG默认大小写不敏感,列名---》属性名全小写(设置一下属性useActualColumnNames即可大小写敏感):
对象
表名使用下划线(t_user) TUser
列名使用驼峰法 默认大小写不敏感,全小写
  • 开发中数据库表中属性很少使用下划线_ 命名


3、QBC案例:

■ QBC 风格:Query By Criteria 一种查询方式,比较面向对象,看不到sql语句

  • 主要由Criteria、Example 组成,使用面向对象的方式区域拼接查询条件,一般适合简单查询(单表查询)。
  • genratorConfig.xml 文件的Context元素的属性 targetRuntime="MyBatis3" 可以生成带有条件的增删改查,缺省

■ 测试例子:

@Test
  public void testQuery() {
    SystemUserMapper mapper = MyBatisUtil.getMapper(SystemUserMapper.class);
//    //查询id为2的员工
//    SystemUserKey key = new SystemUserKey();
//    key.setId(2L);
//    mapper.selectByPrimaryKey(key);
    //查询userType在2-10之间
    //查询条件example
    SystemUserExample example = new SystemUserExample();
    //查询规则criteria
    Criteria criteria = example.createCriteria();
    criteria.andUserTypeBetween(2, 3);
    //模糊查询
    criteria.andUsernameLike("明");
    mapper.selectByExample(example);
  }
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
Java 数据库连接 Maven
使用mybatis插件generator生成实体类,dao层和mapper映射
使用mybatis插件generator生成实体类,dao层和mapper映射
1285 0
|
5月前
|
Java 数据库连接 数据库
Spring boot 使用mybatis generator 自动生成代码插件
本文介绍了在Spring Boot项目中使用MyBatis Generator插件自动生成代码的详细步骤。首先创建一个新的Spring Boot项目,接着引入MyBatis Generator插件并配置`pom.xml`文件。然后删除默认的`application.properties`文件,创建`application.yml`进行相关配置,如设置Mapper路径和实体类包名。重点在于配置`generatorConfig.xml`文件,包括数据库驱动、连接信息、生成模型、映射文件及DAO的包名和位置。最后通过IDE配置运行插件生成代码,并在主类添加`@MapperScan`注解完成整合
956 1
Spring boot 使用mybatis generator 自动生成代码插件
|
SQL Java 数据库连接
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
MyBatis-Plus是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。本文讲解了最新版MP的使用教程,包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段等核心功能。
1830 5
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
587 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
|
Java 数据库连接 API
springBoot:后端解决跨域&Mybatis-Plus&SwaggerUI&代码生成器 (四)
本文介绍了后端解决跨域问题的方法及Mybatis-Plus的配置与使用。首先通过创建`CorsConfig`类并设置相关参数来实现跨域请求处理。接着,详细描述了如何引入Mybatis-Plus插件,包括配置`MybatisPlusConfig`类、定义Mapper接口以及Service层。此外,还展示了如何配置分页查询功能,并引入SwaggerUI进行API文档生成。最后,提供了代码生成器的配置示例,帮助快速生成项目所需的基础代码。
697 1
|
XML Java 关系型数据库
springboot 集成 mybatis-plus 代码生成器
本文介绍了如何在Spring Boot项目中集成MyBatis-Plus代码生成器,包括导入相关依赖坐标、配置快速代码生成器以及自定义代码生成器模板的步骤和代码示例,旨在提高开发效率,快速生成Entity、Mapper、Mapper XML、Service、Controller等代码。
springboot 集成 mybatis-plus 代码生成器
|
Java 数据库连接 Android开发
SSM框架——使用MyBatis Generator自动创建代码
SSM框架——使用MyBatis Generator自动创建代码
154 2
|
JavaScript Java 关系型数据库
SpringBoot + Mybatis + Vue的代码生成器
SpringBoot + Mybatis + Vue的代码生成器
335 2
|
JavaScript 关系型数据库 Java
MyBatisPlus 最新版代码生成器(直接拿来就能用,包含自动生成 Vue 模版)
MyBatisPlus 最新版代码生成器(直接拿来就能用,包含自动生成 Vue 模版)
3039 0