【Spring+MyBatis+MySQL实战入门】二、MyBatis和MyBatis Generator的配置

本系列文章系本人原创,欢迎转载,转载请注明出处

一、MyBatis配置的基本介绍

第一章中,我们快速的建立了一个Java通过MyBatis操作数据库的简单的项目(源码)。在建立这个项目的过程中,除了测试类,我们并没有写一行Java代码,而把所有精力都放在了做配置上。那么,为了使MyBatis能正常工作,我们需要做哪些配置呢?

问题的答案很简单,我们不需要查阅任何资料,就可以自己“揣摩”出来:
a. Java Model: 数据库是存储数据的,这些数据在Java中的展现形式是我们需要定义的。最简单的例子,User(id, name, contact_info)表,在Java中就对应成一个User类,该类有id,name和contactInfo成员变量。

b. Java的DAO接口/类:MyBatis是为了Java能方便的操作数据库,所以,我们必须写或配置出相应的DAO接口/类来方便Java调用。

c. SQL语句和DAO接口中方法的对应关系:DAO提供了让Java能操作数据库的接口(Java方法),那么这些接口实际上执行的就是SQL语句。我们需要将这种Java方法到SQL语句的映射关系配置好,比如说:DAO中有个insert(User user)方法,它应该对应到一个形如 “insert into User (id, name, contact_info) values (?,?,?)”的SQL语句,这种映射关系是我们需要记录的。

d. MyBatis连接数据库使用的配置:这个就很显而易见了,我们需要连接数据库的配置(connectionUrl, userId, password等),才能让MyBatis正确的链接数据库。

可以说,我们在使用MyBatis的过程中,这4项是最基本的配置,也是不可或缺的。大家可以先对这4项有个认识,我们会在接下来的章节中着重介绍这4项。下面我们先看一下能大大简化我们对这4项做配置的工具:MyBatis Generator。

二、MyBatis Generator的使用

如果我们有100张表,对每个表又有增删改查及其他操作,是不是我们就要手动建100个Java Model,100个DAO,每个DAO里面再写诸多方法呢?答案是否定的,MyBatis Generator大大简化了我们的操作。回顾在第一章中MyBatis Generator的配置文件,我们着重看下面这几项:

<javaModelGenerator targetPackage="com.example.model" targetProject="smm/src/main/java" />
<sqlMapGenerator targetPackage="mapper" targetProject="smm/src/main/resources" />
<javaClientGenerator targetPackage="com.example.mapper" targetProject="smm/src/main/java" type="XMLMAPPER" />
<table schema="smm" tableName="user">
    <generatedKey column="id" sqlStatement="MySql" identity="true" />
</table>
<table schema="smm" tableName="cart">
    <generatedKey column="id" sqlStatement="MySql" identity="true"/>
</table>
<table schema="smm" tableName="product">
    <generatedKey column="id" sqlStatement="MySql" identity="true"/>
</table>

我们要用MyBatis Generator生成上述4项配置中的3项:Java Model,DAO以及DAO到Sql的映射关系。

  • 我们先看Java Model:
<javaModelGenerator targetPackage="com.example.model" targetProject="smm/src/main/java" />

<!--其他的配置此处省略-->

<table schema="smm" tableName="user">
    <generatedKey column="id" sqlStatement="MySql" identity="true" />
</table>
<table schema="smm" tableName="cart">
    <generatedKey column="id" sqlStatement="MySql" identity="true"/>
</table>
<table schema="smm" tableName="product">
    <generatedKey column="id" sqlStatement="MySql" identity="true"/>
</table>

在javaModelGenerator中,我们指定了生成Java Model的存放位置是smm/src/main/java目录,com.example.model包下。结合下面的几个table元素,我们会生成User表,Product表和Cart表对应的Java Model。而table元素下的generatedKey元素则告诉MyBatis Generator该table的 “id”列是MySql自动生成的,并且是该表的主键,这样当我们将一个新建的User对象插入到数据库中后,Java中就能获得到MySql自动生成的id。

  • 接下来是sqlMapGenerator
<sqlMapGenerator targetPackage="mapper" targetProject="smm/src/main/resources" />

sqlMapGenerator指定了DAO到Sql语句的映射关系保存在smm/src/main/resources目录,mapper包下(实际上因为是resources目录,而“包”是Java的概念,所以也即保存在smm/src/main/resources/mapper目录下)。

  • 最后我们看javaClientGenerator
<javaClientGenerator targetPackage="com.example.mapper" targetProject="smm/src/main/java" type="XMLMAPPER" />

javaClientGenerator指定了DAO(MyBatis中叫Mapper)的生成位置:smm/src/main/java目录,com.example.mapper包下,并且是XMLMAPPER的形式。XMLMAPPER代表Mapper会生成为接口,并且接口中方法的实现会依赖于sqlMapperGenerator指定生成的配置文件中。
有兴趣的读者可以尝试将type属性的值替换为“ANNOTATEDMAPPER”,并看看效果(接口方法所对应的sql语句以注解的形式存在在Java文件中)。

至此,我们简单的介绍了MyBatis Generator是用做什么的,它生成的文件是用做什么的,以及MyBatis Generator是如何工作的。如果读者有兴趣对MyBatis Generator做深入了解的话,可以参阅MyBatis Generator的官方文档

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值