使用视图代替Mybatis中的多表查询的设计
使用Mybatis开发项目时, 若是简单的单表查询, 完全可以全部使用代码生成工具自动生成, 但是如果有需要多表联合查询的时候就无能为力了, 不得不手动编写Entity、Dao以及Service 显得很不统一
但是如果使用视图的话, 就又能利用代码生成工具的便利自动生成Entity、Dao以及Service, 而且可以在Java代码中完全隐藏掉数据库层专注于应用的开发
源码
Model
DO.java
这里的数据库表设计是遵循阿里巴巴Java编码规范
每个表固定三个字段id, gmt_create, gmt_modified
实体类继承BaseDO 默认拥有三个属性id, gmtCreate, gmtModified以及重写的toString()
VO.java
视图名以_view为后缀
视图类继承BaseVO 由于视图的字段不一定, 所以BaseVO中只重写了toString()
Dao
DODao.java
常用的增删改查方法
1 | T selectById(Long id); |
VODao.java
由于视图不能删增删改, 所以只有select
1 | List<T> select(T bean); |
Service 以及 Controller 见源码
…
Mybatis Generator
代码生成器使用velocity模版
获取表信息
1 | select * from information_schema.tables |
获取列信息
1 | select * from information_schema.columns |
动态获取表信息注入模版, 自动生成DO, VO
Dao.java.vm
例如
1 | package ${package}.database.dao; |