MyBatis自动生成的几点注意事项

MyBatis开始写基础的SQL蛮麻烦的,放Google搜了搜,发现有个不错的插件MyBatis-Plugin,可以自动生成这些CRUD的基础语句,OK就用它了。至于如何激活,呵呵。。

MyBatis-Generator配置

直接在resources用插件新建文件mybatis-generator-config.xml,然后编辑其中注释中带!!!!的地方,主要有以下几个地方。

mybatis-generator-config.xml
1
2
3
4
5
6
7
8
9
10
11
12
<!-- !!!! Driver Class Path !!!! -->

<!-- !!!! Database Configurations !!!! -->

<!-- !!!! Model Configurations !!!! -->

<!-- !!!! Mapper XML Configurations !!!! -->

<!-- !!!! Mapper Interface Configurations !!!! -->

<!-- !!!! Table Configurations !!!! -->

其中Driver Class Path当时用最新的6.0.4,无法自己生成,放狗搜了后,改成低版本就OK了。

然后另一个问题就是表与Domain类名字、域名字不相同的情况,直接在Table Configurations里面改就好。

mybatis-generator-config.xml
1
2
3
4
<table tableName="t_teacher" enableCountByExample="false" enableDeleteByExample="false" enableSelectByExample="false"
enableUpdateByExample="false" domainObjectName="Teacher">
<columnRenamingRule searchString="t_" replaceString=""/>
</table>

重点就是tableName,domainObjectName, columnRenameingRule,从字面意思就好理解。

MyBatis Mapper日志中显示SQL语句

在日志方面选择过好几次log4j, log4j2,后来改成了logback,显示SQL语句只需要在配置文件中增加一条。

logback.xml
1
<logger name="com.liangwu.courses.domain.mapper" level="DEBUG"></logger>

插入新数据后,获取ID

一般主键ID都是自动生成的,所以插入新数据的时候ID都是数据库自动生成的,如何在插入数据后Domain获得这个ID呢,最开始自己脑子发热,插入后查询。后来放狗搜,在配置文件里面改改就OK。

mybatis-generator-config.xml
1
2
3
4
<insert id="insert" parameterType="com.liangwu.courses.domain.Teacher" useGeneratedKeys="true" keyColumn="t_id" keyProperty="id" >
insert into t_teacher (t_name, t_gender)
values (#{name,jdbcType=VARCHAR}, #{gender,jdbcType=BIT})
</insert>

在insert配置的时候加useGeneratedKeys="true" keyColumn="t_id" keyProperty="id"三项,insert后就可以直接getId()了。