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

智能推荐

使用选项卡创建CSS3 / jQuery跨浏览器下拉菜单-程序员宅基地

文章浏览阅读126次。CSS3/jQuery dropdown menu with tabs tutorial. This is our seventh CSS3 menu. Today we will make dropdown menu with parental tabs (as first level). Part of the work we pass on to the shoulders of jQuer..._./images/tabs/left_memu_1.png

Hypack 2016-2018设置使用测试与相关下载_hypack2016-程序员宅基地

文章浏览阅读2.3k次,点赞2次,收藏9次。Hypack 2016-2018使用测试与相关下载1、hypack 2016、hypack 2017、hypack2018通过现场使用测试,发现64位版本破解无效,32位破解成功。2、Hypack 6.2以前的版本,导航硬件典型配置库文件为nmea.DLL。(配置为nmea.DLL输出WGS84与本地54坐标XY出现错误)3、Hypack 2016-2018版本导航硬件配置库文件应该采用G..._hypack2016

CiteSpace使用入门教程_citespace怎么用-程序员宅基地

文章浏览阅读8.1k次,点赞4次,收藏17次。CiteSpace软件的使用及应用_citespace怎么用

这6种最佳移动自动化测试工具你知道吗?_移动应用测试工具有哪些-程序员宅基地

文章浏览阅读1k次。它还带有一个客户端库的特性,可以托管 Java、Python、C# 等中的锅炉代码,以帮助 QA 更快、更有效地开发测试脚本。testRigor 是超级可靠的,因为它为人类各自创建了一个测试套件,也就是说,它不依赖于 XPath 之类的源。它是一个基于云的移动自动化测试工具,允许用户在各种设备和操作系统版本上以连续的时间间隔快速运行测试。总而言之,它是一个很好的工具,但既不是免费的也不是开源的。ZAPTEST 的卖点是它的投资回报率计算器,它允许像您这样的企业计算这种自动化工具的投资回报率。_移动应用测试工具有哪些

分类预测 | Matlab实现CNN-LSTM-Mutilhead-Attention卷积神经网络-长短期记忆网络融合多头注意力机制多特征分类预测_nn.multiheadattention 图像分类-程序员宅基地

文章浏览阅读1.1k次,点赞21次,收藏12次。分类预测 | Matlab实现CNN-LSTM-Mutilhead-Attention卷积神经网络-长短期记忆网络融合多头注意力机制多特征分类预测_nn.multiheadattention 图像分类

对称加密、非对称加密、公钥、私钥究竟是个啥?_非对称加密,私钥公钥成对生成是啥意思-程序员宅基地

文章浏览阅读1.3w次,点赞72次,收藏247次。世界上有没有不能破解的密码或加密方式?还真有一种,叫做一次性密码本,这时唯一一种不能破解的加密方式,而其他的密码只要时间无限理论上都是可破解的,如果你也对加密这个领域感兴趣,可以简单了解下这些概念..._非对称加密,私钥公钥成对生成是啥意思

随便推点

vue3的代码改成vue2的转换_vue3组件 转 vue2-程序员宅基地

文章浏览阅读8.7k次。vue3<!DOCTYPE html><html><head><meta charset="utf-8"><title>Vue的方法_侠课岛(9xkd.com)</title><script src="https://unpkg.com/vue@next"></script></head><body> <div id="hello-vue" class="_vue3组件 转 vue2

vue2.0与支付个人总结-程序员宅基地

文章浏览阅读275次。最近在使用vue写webapp,app中要求可以实现线上支付,研究了微信H5支付与支付宝H5支付。其中微信H5支付处在内测阶段,需要申请,按照格式写了邮件七个工作日也没得到回复邮件,据说微信H5支付对于单量和交易额有要求,满足要求后才有很大几率开通。支付宝H5支付相对申请较为简单,人工技术客服强大,基本能解决很多问题,不得不说这点还是阿里..._vue2.0 调用app支付

yml配置文件中map的配置-程序员宅基地

文章浏览阅读6.5k次。yml中map的配置文件

python中摄氏度的符号咋打_linux下怎么方便的输入度数符号 °-程序员宅基地

文章浏览阅读5k次。你的位置:问答吧-> Linux 入门-> 问题详情linux下怎么方便的输入度数符号 °在windows下可以用Alt 0176输入,在MAC下也有方便的方法可以输入,在linux下呢?参见:http://anonymouse.org/cgi-bin/anon-w...egree_(symbol)作者: mu..._linux 输入法 摄氏度

Java面试题之接口和抽象类的区别_java面试题 接口和抽象类的区别-程序员宅基地

文章浏览阅读706次。下面一些东西可能会让你不敢相信,这次分为jdk8和jdk9来测试的,大家也可以用不同的jdk尝试一下。先说一下基本的定义,在说一下特别的东西。有疑惑的同学一定要去自己手动的试验一下,加深印象,面试官比如说接口中的方法不能有方法体啊什么的,一定坚定告诉他是可以的!一个类可以同时实现多个接口 一个抽象类只能继承一个类(单继承)接口和接口之间支持多继承 类和类之间只能单继承。抽象类是半抽象的 接口是完全抽象的。_java面试题 接口和抽象类的区别

Machine and Deep Learning with Python-程序员宅基地

文章浏览阅读407次。Machine and Deep Learning with PythonEducationTutorials and coursesSupervised learning superstitions cheat sheetIntroduction to Deep Learning with PythonHow to implement a neural network..._pyqtgraph eeg

推荐文章

热门文章

相关标签