Mybatis_generator-程序员宅基地

技术标签: mybatis自动生成  mybatis  generator  Mybatis  

  • MyBatis Generator (MBG): Mybatis官方提供的代码生成器,可以根据数据库中表结构自动生成简单的CRUD操作。但联合查询和存储过程,仍需手动手写SQL和对象。MBG可以通过使用Maven、Java编码、命令行等方式来运行。
  • 本文主要介绍在Intellij IDEA中使用Maven插件mybatis-generator-maven-plugin来自动生成MyBatis代码的一些步骤。

引入mybatis-generator插件

<!-- mybatis自动生成插件 -->
<plugin>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>1.3.5</version>
    <configuration>
        <verbose>true</verbose>
        <overwrite>true</overwrite>
    </configuration>
</plugin>

类路径下放置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>

    <!-- 指定数据库的jdbc驱动jar包的位置 -->
    <classPathEntry location="C:/Develop/apache-maven-3.5.3/repository/mysql/mysql-connector-java/5.1.32/mysql-connector-java-5.1.32.jar" />

    <!--
        context:是逆向工程的主要配置信息
            id:起个名字
            targetRuntime:
                MyBatis3Simple:生成基本的增删改查
                MyBatis3:可以生成带条件的增删改查
    -->
    <context id="default" targetRuntime="MyBatis3">

        <!-- 配置注释生成规则,不生成注释 -->
        <commentGenerator>
            <property name="suppressDate" value="true" />
            <property name="suppressAllComments" value="true" />
        </commentGenerator>

        <!--配置数据库连接信息 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/db_test?characterEncoding=utf-8"
                        userId="root"
                        password="123">
        </jdbcConnection>

        <!--
            非必须:
            类型处理器,在数据库类型和java类型之间的转换控制
            默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,
            为true时把JDBC DECIMAL和NUMERIC类型解析为java.math.BigDecimal
        -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <!--
            设置生成的实体类所在的包和位置
                enableSubPackages:是否允许子包
                constructorBased:是否对modal添加构造函数
                trimStrings:是否清理从数据库中查询出的字符串左右两边的空白字符
                immutable:建立modal对象是否不可改变 即生成的modal对象不会有setter方法,只有构造方法
        -->
        <javaModelGenerator targetPackage="com.tt.pojo" targetProject=".\src\main\java">
            <property name="enableSubPackages" value="false" />
            <property name="constructorBased" value="true" />
            <property name="trimStrings" value="true" />
            <property name="immutable" value="false" />
        </javaModelGenerator>

        <!--
            设置生成mapper文件的包和位置
        -->
        <sqlMapGenerator targetPackage="mybatis.mappers" targetProject=".\src\main\resources">
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>

        <!--
            设置生成mapper接口的包和位置
        -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.tt.mapper" targetProject=".\src\main\java">
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>

        <!-- 配置表生成实体类的规则 -->
        <table tableName="tb_user" domainObjectName="User" />
    </context>
</generatorConfiguration>

运行Maven插件

mybatis-generator
结果

生成后的目录结构

目录结构

测试

	@Test
	public void testMyBatis3() throws IOException{
    
	
		//xxxExample就是封装查询条件的
		//Criteria用来拼装查询条件
		
		//1、查询所有
		List<User> users = userMapper.selectByExample(null);
		
		//2、查询名字中有“a”字母的,和年龄为18的
		EmployeeExample example1 = new EmployeeExample();
		Criteria criteria = example1.createCriteria();
		criteria.andNameLike("%a%");
		criteria.andAgeEqualTo("1");
		List<User> users= userMapper.selectByExample(example1);
		
		//3、查询名字中有“a”字母的,和年龄为18的或者名字有"b"字母的
		EmployeeExample example2 = new EmployeeExample();
		Criteria criteria = example2.createCriteria();
		criteria.andNameLike("%a%");
		criteria.andAgeEqualTo("1");
		Criteria criteria2 = example2.createCriteria();
		criteria2.andEmailLike("%e%");
		example2.or(criteria2);
		List<User> users= userMapper.selectByExample(example2);
	}

参考官方文档
转载配置文件详细配置信息

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/tt_fan/article/details/83859613

智能推荐

整体智慧园区解决方案,数字化园区升级-程序员宅基地

文章浏览阅读384次,点赞6次,收藏8次。智慧园区解决方案是集安防、环保、节能、消防和能源管理等功能为一体的综合应用平台,以数据为中心,实现园区的全方位覆盖、全天候监控和智能化服务。新导物联基于多年在物联网领域的实践经验与积累,围绕“以数据为中心、业务驱动为引擎、技术应用为基础”的思路,提出了以数据汇聚、分析挖掘和共享应用为核心的“一中心、两平台和三个重点”建设目标,同时结合实际情况与需求制定了整体解决方案。通过智慧园区的建设实现园区内各系统之间信息共享和联动,全面提升智慧化水平,促进园区信息化与智能化升级,为用户提供更加便捷和舒适的办公环境。

会玩,K8s 通过 Cronjob 来定期备份 Etcd-程序员宅基地

文章浏览阅读590次。简介家里有两个 k8s,树莓派使用的是 k3s,nuc 上就是正常的 x86 的 k8s,树莓派 k3s 使用的是 mysql,mysql 也是使用 cronjob 每天跑的备份,但是 n..._在kubernetes集群中使用cronjob资源控制器进行定时etcd备份

mysql复制表结构以及数据,修改表名_使用c#api复制数据库表并修改表名-程序员宅基地

文章浏览阅读815次。mysql 复制表结构数据复制已有的一张表,结构相同,并将数据复制进去步骤:1. 创建表结构:create table tb_user_back like tb_user;2. 将表中数据插入到新表中:insert into tb_user_back select * from tb_user;..._使用c#api复制数据库表并修改表名

SQL语句中IN和EXISTS的效率问题_sql中的exists可以减少开销吗-程序员宅基地

文章浏览阅读258次。两种查询的区别INselect * from A where id in (select id from B);此处select id from B只会执行一次,将所有数据缓存到内存,然后遍历A表中的每条数据进行判断是否存在。EXISTselect * from A as a where exists(select id from B as b where a.id = b..._sql中的exists可以减少开销吗

Spring Boot 应用迁移到 Java 11-程序员宅基地

文章浏览阅读5.5k次。你的Spring Boot App需要迁移到Java 11 吗?最近,我们开始将应用程序从Java 8迁移到Java 11;在此之前,Oracle宣布将从2019年初开始..._spring boot升级11

【生成对抗网络】GANs原理解析(一):Vanilla_GANs(2014年首次提出的原始GANs)_vanilla gan-程序员宅基地

文章浏览阅读1.5k次。【原论文】(2014年)Generative Adversarial Networkshttps://arxiv.org/abs/1406.2661简介生成对抗网络(GANs),是指采用特定结构和训练思想的一类模型结构,它可以很简单,仅由几层感知机实现,也可以很复杂,使用深度神经网络来实现。最原始的GANs是2014年提出的,又叫Vanilla GANs。这种结构主要包含生成模型和判别模型,生成模型的任务是去生成某个特定分布的数据,例如合成和真实图片接近的图片,它生成的数据(图片),我们称为.._vanilla gan

随便推点

反向题在测试问卷信效度_运动员积极心理品质结构模型与问卷信效度-程序员宅基地

文章浏览阅读556次。3 结果分析与讨论3.1 编制青少年运动员积极心理品质问卷的必要性首先目前关于积极心理品质问卷的编制,如国外 seligaman 等编制的《青少年价值行为特征量表》以及国内孟万金等编制的《中国中小学生积极心理品质量表》等,都得到了广泛应用,可能在一定程度上可以测量青少年运动员这一年龄群体的积极心理品质。尽管所有的积极心理品质都有助于我们更好的发挥自己的潜能,实现自我并获得幸福,但是在这些积极心理品..._反向题和测谎题

E. Beautiful Subarrays(Trie维护前缀异或和)-程序员宅基地

文章浏览阅读278次。前缀异或和,这是一个01Trie树的经典运用.异或和相关的问题可以用Trie01树维护,具体思想就是把一个数字的二进制形式看成01的字符串,每个数字就转化成一个长度为30~60的01字符串.位两个位置都可以取,取0就是继续往Trie树向下走,取1就是立马结算贡献.,我们需要一种数据结构,得知前缀异或和中有多少。思路:看题,不难知道要做前缀和.枚举。取值决定了怎么继续向Trie向下走.事实上是一个定值,根据需要的,取。在这题中,我们从高向低建树,当。当k第i位是1时,显然。..._e. beautiful subarrays

物联网毕设(基于STM32的蓝牙检测心率+步数+手机APP)_蓝牙模块开发 keil-程序员宅基地

文章浏览阅读6.9k次,点赞3次,收藏79次。目录流程图开发所需平台keil5+Android studio需要的元器件stm32F103C8T6蓝牙模块心率模块(MAX30102)震动开关(SW-18015P)手机APP实验效果图流程图开发所需平台keil5+Android studio需要的元器件stm32F103C8T6蓝牙模块(JDY-31 蓝牙 SPP)我选择的是无主机的,这里可以修改成HC-05模块,道理一样心率模块(MAX30102)..._蓝牙模块开发 keil

阅读深入理解计算机系统(三)--------------- 虚拟存储器_造成堆利用率很低的主要原因是碎片,请问以下哪种情况可能会导致这种现象-程序员宅基地

文章浏览阅读596次。一、碎片现象:造成堆利用率低的主要原因是一种碎片现象。 内部碎片:已分配块比有效载荷大时发生的。 外部碎片:是当空闲存储器合计起来满足分配请求,但是没有一个单独的空闲块足够大来处理这个请求。所以,存储器采用试图维持少量的大空闲块,而不是维持大量的小空闲块。二、 垃圾收集: 垃圾收集器将存储器视为一张有向可达图,该图的节点被分成一组根节点和一_造成堆利用率很低的主要原因是碎片,请问以下哪种情况可能会导致这种现象

java实现dfs算法完成二维数组的遍历_java dfs-程序员宅基地

文章浏览阅读457次。dfs算法的java实现,递归遍历,二维数组遍历_java dfs

【强力推荐】GitCode AI开源搜索,面向开发者的专业AI搜索-程序员宅基地

文章浏览阅读1.4k次,点赞19次,收藏22次。GitCode AI搜索能力面向开发者解决问题和提示效率,集成AI问答、连续提问、建立个人知识体系和搜索开源项目的能力,通过RAG+语言模型能力打造开发者AI搜索_gitcode ai

推荐文章

热门文章

相关标签