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

智能推荐

linux loadavg详解(top cpu load)-程序员宅基地

文章浏览阅读241次。目录[隐藏]1Loadavg分析1.1Loadavg浅述1.2Loadavg读取1.3Loadavg和进程之间的关系1.4Loadavg采样218内核计算loadavg存在的问题2.1xtime_lock解析2.2全局load读写分离解xtime_lock问题2.3几个关键点:2..._$load_avg_per_cpu.max.warn

【数据结构初阶】八大排序(二)——快速排序&&冒泡排序-程序员宅基地

文章浏览阅读1.2k次,点赞53次,收藏39次。快速排序整体的综合性能和使用场景都是比较好的,所以才敢叫快速排序时间复杂度:O(N*logN)空间复杂度:O(logN)稳定性:不稳定。

githubDesktop的使用说明(附下载链接)_下载了githubdesktop-程序员宅基地

文章浏览阅读1.3k次。step1 :下载百度云链接https://pan.baidu.com/s/1luAFF8gGddWFqgbq-_X0cg提取码: 5xdj包含 git github forwindows githubforMac 以及notepad++step2:安装这个安装程序,是强制安装路径的,所以不要乱搞 下载之后直接点击就行。@基本情况就是这样..._下载了githubdesktop

初探Java Nashorn脚本引擎-程序员宅基地

文章浏览阅读4.7k次。要想让一个程序功能变得灵活起来,那么配置绝对是不可或缺的,通过合理的设计,将所有动态变量都配置化,可以最大程度上让程序变得灵活。可是在某些复杂的业务场景中,仅仅只是变量的配置化,往往还并不能满足需求,尤其是互联网这种业务需要快速更迭的行业。于是,做一个这样的功能:仅仅依靠配置,就能让程序的逻辑cover住所有的业务逻辑变化,就成为了程序员的终极梦想。然而,现实是残酷的,"write once run forevre",这几乎是不可能实现的梦想(如果真的出现了这样的技术,那可能会是我们职业生涯将要面对的最_nashorn

【CTF】用python PIL将RGB值转化为图片_ctf 三个坐标值转换图像-程序员宅基地

文章浏览阅读1.5w次,点赞4次,收藏28次。一道关于ctf的题,用python将rgb值转化为图片_ctf 三个坐标值转换图像

海思HI35xx平台软件开发快速入门之背景知识-程序员宅基地

文章浏览阅读1.4k次。前言: 安防领域最近几年可谓暗流涌动,作为安防业的双寡头,大华股份与海康威视凭借行业的东风,两家公司的成长速度异常强劲,在国际市场上已经和应用厂家进行厮杀。 2015年两家公司双双晋升“全球安放50强”,海康排名第二,大华排名第五。以华为海思为代表国产芯片解决方案不断走强,在国际竞争中优势凸显,在后端NVR高端产品线先后推出了海思3531、海思3535、海思3536,同时针对低端的产品线也不..._海思hi35xx平台软件开发快速入门之背景知识

随便推点

什么是OTL-程序员宅基地

文章浏览阅读1.9k次。OTL是英文Output Transformer Less 的简写,意思是无输出变压器。OTL功率放大器就是没有输出耦合变压器的功率放大器电路。 OTL功率放大器大多数采用互补推挽输出级电路。如图所示为互补对称式OTL功率放大电路。T2为一只NPN型功率晶体管,T3为一只PNP型晶体管,它们组成互补推挽输出管,T1为电压放大激励管。信号经过C1耦合送入T1进行放大后,从T1集电极产生的信号_otl

CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage问题的解决-程序员宅基地

文章浏览阅读2w次。参考博客:https://blog.csdn.net/qq_36630050/article/details/80708685 android studio出错提示:Build command failed.Error while executing 'E:\Android\SDK\cmake\3.6.4111459\bin\cmake.exe' with arguments..._cmake error: cmake_c_compiler not set, after enablelanguage cmake error: cma

LSB-tree理论证明理解_lsb tree-程序员宅基地

文章浏览阅读285次。一些基本公式和定义(1,c,p1,p2)(1,c,p1,p2)(1,c,p_1,p_2)敏感含义‖,‖≤r,Pr[]≥p1‖,‖≤r,Pr[]≥p1\|,\| \leq r, Pr[] \geq p_1, ‖,‖&gt;cr,Pr[]≤p2‖,‖&gt;cr,Pr[]≤p2\|,\| > cr, Pr[] \leq p_2基本LSH函数h(o)=⌊a⋅o+bw⌋h(o)=⌊a..._lsb tree

mathtype插入在WPS中出现The MathType DLL cannot be found问题_mathtype不能被发现-程序员宅基地

文章浏览阅读2k次。mathtype插入在WPS中出现The MathType DLL cannot be found问题_mathtype不能被发现

Lc.exe已退出代码为-1问题解决⽅法_lc.exe已退出 代码为-1-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏3次。对于⽤vs作为开发⼯具的同学来说,可能常常会碰到“Lc.exe已退出代码为-1”的问题,造成这个结果的⼀般是因为加⼊了第三⽅的插件程序造成的,今天记录下如何解决。查看加载的程序项⽬,找到Properties⽂件夹licenses.licx⽂件,然后右键选择删除就可以了,调试运⾏正常了。可以使⽤⽂本编辑器打开上述⽂件,也可以使⽤其它的编辑器,在⽂件中查找licenses.licx字样,删除对应节点。找到你系统的*.csproj⽂件,这个⽂件是加载项⽬⽂件。c.exe已退出代码为-1问题解决⽅法。_lc.exe已退出 代码为-1

linux系统忘记登录密码怎么办_linux忘记密码-程序员宅基地

文章浏览阅读6.4k次,点赞7次,收藏29次。【代码】linux系统忘记登录密码怎么办。_linux忘记密码

推荐文章

热门文章

相关标签