数据库逆向生成代码

java分享会

分享人:姚远

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

做项目必然要先进行数据库表设计,然后根据数据库设计建立实体类,这是理所当然的。

但是一般公司里做项目时,没有说既进行完数据库设计后还要再“自己”建立一遍实体类

意思是,在项目设计时,要么根据需求分析建立实体类,由正向生成数据库表;要么就先进行数据库表设计,再逆向生成实体类。没有说进行完任意一方的设计后再去花时间去自己匹配建立另一方的设计。

原因:

1、2倍工作量,浪费时间。(时间对公司来说很重要)

2、无法保证两边映射一致。因为两边都是自己设计的,那么就需要人为保证映射关系统一,会有隐患。

3、开发、维护上都不利。因为如果任意一方因某些原因需要改用,那么经常要两边都要改,这样的话映射不一致的可能性不仅更大,而且效率低下。而如果利用正逆向工程的话,则很容易解决。

2.知识剖析

MyBatis Generator (MBG)是一个专门为Mybatis和iBATIS写的代码生成器。它可以为所有版本的Mybatis和2.2.0之后版本的iBATIS生成代码。

MBG可以生成一些简单的CRUD的数据库操作,但稍微复杂的sql仍需要自己写

3.常见问题

MBG都生成了些什么?

4.解决方案

Java Pojo

匹配的主键的类

匹配非主键字段的类(除了BLOB字段)

匹配BLOB字段的类

用来处理动态SELECT,DELETE,UPDATE的类

XML文件

insert

update by primary key

update by example (using a dynamic where clause)

delete by primary key

delete by example (using a dynamic where clause)

select by primary key

select by example (using a dynamic where clause)

count by example

5.编码实战

6.扩展思考

其他的框架,例如hibernate怎么使用代码逆向生成?

7.参考文献

http://www.mybatis.org/generator/quickstart.html

8.更多讨论

有什么问题吗?

鸣谢

感谢观看,如有出错,恳请指正

BY : 姚远