发表于: 2017-08-28 22:39:09
2 868
今天:对复盘项目进行了拆分,拆成了4个模块。
想看一看MyBatis Generator生成的代码是什么样子,就去研究了一下,结果半天都不好使,而且MyBatis Generator本身需要很多xml的配置,学习起来有点得不偿失,后来在GitHub上找到了很多MyBatis Generator的图形界面工具,作者还加入了一些其他的代码,下载了最流行的一个试了一下,发现还可以,虽然不像公司框架那样全面,但是也能省去很多工作。
https://github.com/zouzg/mybatis-generator-gui
- 第一步: 首先点击左上角的Connections按钮新建数据库连接,在Connection Name输入框处填入一个好记的名字,比如mysql-local,然后其它字段像连接数据库一下,了所有字段可以先点击“Test Connection”看连接是否成功,如果成功保存连接则主界面左侧会生成一颗数据库连接数。
- 第二步: 双击刚刚保存的连接节点,然后再展开的所有表中双击选择你要生成代码的数据库表,右侧的Table Name和Domain Object Name将会自动填充。
- 第三步: 事先准备好对应数据库的connetor的jar包放在你的电脑任意文件夹中,然后在右侧Connector Jar字段右边的Choose按钮,选择你刚刚准备好的jar包。
- 第四步:选择你的项目所在的目录,例如D:\workspace\example-project或者/Users/youname/workspace/example-prject
- 第五步: 在Model Package输入框中输入你的数据库表对应的Java模型的model的包名,例如:com.exmaple.model, 右侧的Target Folder是你的model在项目中的source目录, 如果你的项目是一个maven项目的,那就是 src/main/java,如果是一个普通项目则一般是src。最后注意这个target folder目录一定要存在,否则代码将不会生成。
- 第六步: 在DAO package输入你的generator mapper文件生成的目录,例如 com.example.dao, Target Folder意思同上。
- 第七步: 最后输入你生成的XML的包名,一般我们使用项目包名, 例如 com.example, Target Folder意义同上,如果是maven项目一般是src/main/resoures。
- 第八步:最后点击Generate按钮,生成代码。如果显示Generation Completed,刚表示代码生成成功。
有一些很方便的功能,比如实现了分页查询,直接将数据库中的注释加入模型中,不需要自己实现等。
作者还给每个模型数据加入了一个特殊的专门用于条件查询的类,表中的每个字段都会自动生成各种条件,以Company的size为例:
public Criteria andSizeIsNull() {
addCriterion("size is null");
return (Criteria) this;
}
public Criteria andSizeIsNotNull() {
addCriterion("size is not null");
return (Criteria) this;
}
public Criteria andSizeEqualTo(Integer value) {
addCriterion("size =", value, "size");
return (Criteria) this;
}
public Criteria andSizeNotEqualTo(Integer value) {
addCriterion("size <>", value, "size");
return (Criteria) this;
}
public Criteria andSizeGreaterThan(Integer value) {
addCriterion("size >", value, "size");
return (Criteria) this;
}
public Criteria andSizeGreaterThanOrEqualTo(Integer value) {
addCriterion("size >=", value, "size");
return (Criteria) this;
}
public Criteria andSizeLessThan(Integer value) {
addCriterion("size <", value, "size");
return (Criteria) this;
}
public Criteria andSizeLessThanOrEqualTo(Integer value) {
addCriterion("size <=", value, "size");
return (Criteria) this;
}
public Criteria andSizeIn(List<Integer> values) {
addCriterion("size in", values, "size");
return (Criteria) this;
}
public Criteria andSizeNotIn(List<Integer> values) {
addCriterion("size not in", values, "size");
return (Criteria) this;
}
public Criteria andSizeBetween(Integer value1, Integer value2) {
addCriterion("size between", value1, value2, "size");
return (Criteria) this;
}
public Criteria andSizeNotBetween(Integer value1, Integer value2) {
addCriterion("size not between", value1, value2, "size");
return (Criteria) this;
}
所以整个Company类有一千多行。。
注意,每个条件是一个Criterion内部类,一次查询可以带很多Criterion进去,实现动态查询。
还会生成的有DAO接口和mapper.xml文件,都不需要自己写了。
当然了,跨表查询还是要自己写,不过我觉得已经很省事了,当然用这些现成的东西前提是自己都已经会手动去实现,所以好好学习MyBatis的mapper配置也是很重要的。
明天:CodeReview,修改代码。
总结:无
问题:无
进度:http://task.ptteng.com/zentao/project-burn-277.html
demo:9月1号
评论