使用视图代替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; |