关于springboot:MyBatis高级应用之逆向工程自动生成SQL语句

本文以Spring整合MyBatis环境下,介绍MyBatis逆向工程主动生成pojo,mapper,dao的Java类。MyBatis的一个次要的特点就是须要程序员本人编写sql,那么如果表太多的话,难免会很麻烦,所以mybatis官网提供了一个逆向工程,能够针对单表主动生成mybatis执行所须要的代码,个别在开发中,罕用的逆向工程形式是通过数据库的表生成代码。下图为逆向工程依赖的jar包。

mybatis-generator-core-1.3.6.jar为逆向工程的外围包


mysql-connector-java-8.0.9-rc.jar为连贯数据库所需驱动

mybatis-3.4.6.jar为mybatis框架依赖的jar包,到这里就足够了,这里能够增加日志文件,因为不是必须的所以就省略了,咱们只须要下面三个包就能够应用mybatis的逆向工程了。上面看一下它依赖的配置文件。


这是配置文件的寄存地位,肯定要放在我的项目的根目录下,不要办法src下,因为一会用到File来加载这个配置文件。


<context 标签,id轻易取,目前用不到。 targetRuntime运行环境,目前2018年4月30号Mybatis最新的版本为3.4.6,所以这里写3就好,再过几年有可能会变成4。<commentGenerator>下有个

<property name=”suppressAllComments” value=”true” />

标签,该标签value为true的时候不显示生成pojo外面的正文,这里生成的是英文正文,所以默认抉择为true即可。<jdbcConnection>标签须要创立connection对象根本的url,user,password,driverClass四个属性,依照图中格局配置即可。被正文掉的局部是链接oracle数据库的格局

<javaTypeResolver>标签用于将数据库中的DECIMAL和NUMERIC在pojo类中解析为java.math.BigDecimal类型,所以咱们这里写false,全副解析为Integer类型。

这里的三个标签用于指定生成的mapper,pojo,与mapper接口的包名。和指定我的项目名,有时候开发中个别都会新建一个java工程来生成,而后将生成的文件拷贝到本人的工程中,这也不麻烦,而且很平安。

最初的table标签用于对哪些表应用逆向工程。正文掉的局部用于指定数据库字段的Java类型。上面咱们看一下执行代码。


如图所示,红色框框标识出的为逆向工程配置文件的地位,因为这里应用File构造方法传入门路,所以该配置文件必须放下我的项目录下,不要放在src/上面,否则读不到,会抛出文件没找到的异样,上面咱们执行一下试试。


这是控制台log4j日志打印出的,能够看到它找到数据库中的,字段,类型,长度等信息,到这里阐明生成胜利了。


咱们刷新一下我的项目发现src/下多少mapper和pojo包,都是方才逆向工程本人生成的。接下来咱们将mapper和pojo拷贝到Spring整合MyBatis环境中测试是否执行SQL语句操作。


这里补充下上一篇Spring整合MyBatis文章中遗记提到的,咱们通过配置mybatis的mapper扫描包,可能让Spring将MapperScannerConfigurer装入容器中,MapperScannerConfigurer可能扫描包下所有子孙包中的mapper接口,为咱们创立mapper的实现类。图中红色框框局部能够代替曾经正文掉的配置。因为没有指定接口的 bean名称,所以咱们只能通过传入mapper接口的class对象获取实现类,代码如下。

图中重要代码曾经用红色框框标识出,UserExample是逆向工程生成pojoUser时创立的,该类封装了一些条件。Example.createCriteria()这个办法时创立了一个条件查问对象,这里和hibernate的Criteria对象十分相似,通过andSexEqualTo(“1”);办法,这个办法相当于where sex = “ 1 ”这种限定条件,而后当初调用usermapper中的办法,这里调用的是cunnt办法,传入example对象,因为上一行中example对象曾经被咱们封装了where sex = “ 1 ”的限定条件,usermapper.countByExample(example);这句代码执行后拼接成的sql语句就是 select count(1) form user where sex = ‘1’;这也就是mybatis被称为半ORM框架的起因,也有了些许面向对象的意为,但性能上还不足以与弱小的hibernate相媲美。咱们在创立限定条件对象createCriteria()时,前面的条件是能够有限减少的,该对象反对各种简单查问,性能也还是非常弱小的。

以上就是mybatis的逆向工程介绍了,不光可能本人生成sql,pojo,mapper外,也封装了对数据库面向对象的操作,。

【腾讯云】轻量 2核2G4M,首年65元

阿里云限时活动-云数据库 RDS MySQL  1核2G配置 1.88/月 速抢

本文由乐趣区整理发布,转载请注明出处,谢谢。

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据