第一句子大全,网罗天下好句子,好文章尽在本站!

Java程序员开发必备 MyBatis高级应用之逆向工程自动生成SQL语句

时间:2023-06-17

MyBatis的一个主要的特点就是需要程序员自己编写sql,那么如果表太多的话,难免会很麻烦,所以mybatis官方提供了一个逆向工程,可以针对单表自动生成myba

友情提示:本文共有 447 个字,阅读大概需要 1 分钟。

本文以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来加载这个配置文件。

下有个

标签,该标签value为true的时候不显示生成pojo里面的注释,这里生成的是英文注释,所以默认选择为true即可。标签需要创建connection对象基本的url,user,password,driverClass四个属性,按照图中格式配置即可。被注释掉的部分是链接oracle数据库的格式

标签用于将数据库中的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外,也封装了对数据库面向对象的操作,。大家学会了吗,请在下方留言吧,如果有不明白的地方在评论区留下问题我会回复的,有问必答!!!

本文如果对你有帮助,请点赞收藏《Java程序员开发必备 MyBatis高级应用之逆向工程自动生成SQL语句》,同时在此感谢原作者。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
东北大学学生研发“手语发声”手环 实现聋哑人与外界无障碍交流【图】

东北大学学生研发“手语发声”手环 实现聋哑人与外界无障碍交流【图】

...”央广网沈阳7月8日消息(记者郭威)东北大学三名学生研发出一种“手语转换发声”手环,通过连接服务器可以让手语发声,并把外界语音转化为文字,实现聋哑人和外界的无障碍沟通。5月18日,该项目获得了2018“未来力大会...

2023-06-14 #经典句子

华为云荣登中文医疗信息处理CBLUE榜单冠军

华为云荣登中文医疗信息处理CBLUE榜单冠军

...内的多项冠军。华为云医疗智能体EIHealth聚焦于医疗领域研发的前沿技术,目标为医院和生物医药公司提供安全可靠的企业级AI研发平台,助力医院和生物医药公司快速培养和建立AI研发能力。除了在中文医疗信息处理和辅助诊断...

2023-11-18 #经典句子

科学家研发AI编辑 能以人类语气编写维基百科的内容

科学家研发AI编辑 能以人类语气编写维基百科的内容

【CNMO新闻】维基百科是目前世界上使用最为广泛的线上百科全书,但是,在浏览的时候,我们依然需要持有怀疑态度。原因有很多,其中最重要的一点是信息过时的可能性,因为人类编辑只能做这么多。虽然有一些机器人可以...

2023-08-31 #经典句子

暑假小练(一)论述类文本阅读+多则材料分析

暑假小练(一)论述类文本阅读+多则材料分析

...科技产品中最核心的芯片CPU元件几乎都由欧美国家生产和研发,引发普遍担忧。8月14日,格力设立珠海零边界集成电路有限公司,正式进军芯片产业。8月31日,华为发布了下一代智能手机处理器海思麒麟980,是全球第一款基于7nm...

2023-10-31 #经典句子

专利文献翻译领域的“狼”来了?

专利文献翻译领域的“狼”来了?

...的成功问世,是知识产权出版社在机器翻译技术领域自主研发14年的成果。2005年,中国国家知识产权局与欧洲专利局谈合作时,对方提出,他们的审查员阅读中文专利文献非常困难,能否提供英文翻译数据?在当时的背景下,海...

2023-09-06 #经典句子

2019 自然语言处理前沿论坛 百度NLP技术全揭秘

2019 自然语言处理前沿论坛 百度NLP技术全揭秘

...百度 NLP 技术的研究成果与应用。语义计算百度 NLP 主任研发架构师、语义计算技术负责人孙宇:百度语义计算技术及其应用孙宇主要介绍了百度语义表示技术的发展和研究成果、落地情况。他表示,百度的语义计算方向包括语...

2023-08-11 #经典句子

微软研发绘图机器人 根据文字描述画出相应图像

微软研发绘图机器人 根据文字描述画出相应图像

...些鸟可能在现实世界中都不存在,而它们只是代表了我们研发的人工智能对鸟类想象力的一个方面的描述。”研究人员说,机器人能够生成各种图像,包括从“普通的田园场景”,如放牧家畜,甚至包括对“浮动双层巴士”的想...

2023-05-09 #经典句子

今年国际语音合成大赛第一名 来自这个团队

今年国际语音合成大赛第一名 来自这个团队

...明祺和马楠是猿辅导AI 研究院语音实验室语音合成小组的研发人员,他们只凭借极少量的数据,把指定的文本,用特定的“音色”说了出来。提起参赛经历,二人都说好成绩来源于平时工作的积累。他们认为,语音合成(TTS)包括...

2023-12-14 #经典句子

补强元宇宙生态发展短板 夯实元宇宙产业技术基础

补强元宇宙生态发展短板 夯实元宇宙产业技术基础

...才以及各路资本纷纷涌入,未来几年必然爆发。作为技术研发企业,我们都有很好的发展机遇。我们应当团结起来,建立联盟,一方面要快速做好技术升级为元宇宙产业发展夯实基础;另一方面要一起分析研究元宇宙发展还有哪...

2016-01-11 #经典句子