使用手冊
單表操作五分鐘寫完,包括單元測試
1 修改jdbc.properties和package.properties
修改數據庫連接信息,修改項目路徑,java文件報名。
2 修改generatorConfig2.xml文件,添加table標籤
項目基於mybatis generator工具生成dao層文件,需要配置
<table tableName="role" mapperName="RoleDao" domainObjectName="Role" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
3 方法
Operation.java中定義了操作方法;
其中beanName是根據數據庫生成實體類的名字,首字母大寫。baseName是在Biz層往上的文件命名(例如:RoleBiz,Role是baseName)
方法一
一條龍創建生成所有文件(共19個文件),適用於單表操作。
Bean實現序列,繼承了BeanBase,自動添加數據庫common註釋;
根據實體類生成了AoBean和VoBean以及Adaptor;
生成Biz和provider;提供controller;
生成兩個單元測試文件,一個service單元測試,一個biz單元測試,可以直接運行。
public static void initFiles(String beanName, String baseName)
實例
public static void main( String[] args) throws Exception {
Operation.initFiles("Role","Role");
}
結果
未完成的內容全打成TODO了,完成todo
例如:
@Override
public Integer addRole (RoleQuery roleQuery) {
return new BizTemplate<Integer>() {
@Override
protected void checkParams() {
WAssert.notEmpty(roleQuery.getCode(), "Role的Code不能爲空");
WAssert.notEmpty(roleQuery.getRid(), "Role的Rid不能爲空");
WAssert.notEmpty(roleQuery.getRoleName(), "Role的RoleName不能爲空");
WAssert.notEmpty(roleQuery.getRoleDescribe(), "Role的RoleDescribe不能爲空");
WAssert.notNull(roleQuery.getSort(), "Role的Sort不能爲空");
WAssert.notNull(roleQuery.getForbiddenStatus(), "Role的ForbiddenStatus不能爲空");
//TODO 補充校驗
}
@Override
protected Integer process() {
Role role = RoleAdaptor.adapt(roleQuery);
//TODO 設置code
int result = roleService.insert(role);
return result;
}
}.execute();
}
方法二
public static void initDaoAndServiceFiles()
生成service及以下的文件,提前配置generatorConfig2.xml,把要生成的表填好。
方法三
/**
* 創建core的Biz和Provider的初始化文件
* @param beanName service層名字(名字不加Service)
* @param baseName biz層及以下的名字(名字不加Service)
* @throws Exception
*/
public static void initBizAndProviderFiles(String beanName,String baseName)
/**
* 創建core的biz和Provider方法,完成TODO
* @param beanName
* @param baseName
* @param method
* @throws Exception
*/
public static void addCoreBizAndProviderMethod(String beanName, String baseName, Method method)
/**
* 創建service層及以下的方法,可根據方法參數生成簡單的sql
* @param beanName
* @param method
* @throws Exception
*/
public static void addServiceMethod(String beanName, Method method)
/**
* 創建Man的biz和Controller方法,完成TODO
* @param beanName
* @param baseName
* @param method
* @throws Exception
*/
public static void addManBizAndControllerMethod(String beanName, String baseName, Method method)
/**
* 根據queryJson生成自定義查詢
* @param beanName
* @param method
* @param queryJson
* @throws Exception
*/
public static void addMethodByQueryJson(String beanName, Method method, String queryJson) throws Exception
實例
public static void main( String[] args) throws Exception {
Operation.initFiles("Role","Role");
Method method = new Method("Role selectByNameAndDescribe(String roleName, String roleDescribe)");
Operation.addServiceMethod("Role", method);
Method method2 = new Method("RoleAo selectByNameAndDescribe(String roleName, String roleDescribe)");
Operation.addCoreBizAndProviderMethod("Role", "Role", method2);
Method method3 = new Method("RoleVo selectByNameAndDescribe(String roleName, String roleDescribe)");
Operation.addManBizAndControllerMethod("Role", "Role", method3);
//TestQuery testQuery只能有這個一個參數,而且只是select方法,TestQuery是id,不能與已有的重複,json暫時只能有String和Int兩種類型,別的解析不出來。該方法會生成TestQuery文件,在dao和service中添加方法,修改mapper.xml文件,添加sql語句。
Method method4 = new Method("List<Role> selectByTestQuery(TestQuery testQuery)");
String json = "{\n" +
" \"page\": {\n" +
" \"pageNo\": 1,\n" +
" \"pageSize\": 10\n" +
" },\n" +
" \"roleName\": \"zk\",\n" +
" \"sort\": 0\n" +
"}";
Operation.addMethodByQueryJson("Role" ,method4, json);
}
方法四
添加和修改字段,tableName是表名,帶下劃線的那個。會根據表名查詢數據庫看少了,還是多了某個字段,主要是修改mapper,bean,voBean,aobean,querybean
/**
* 根據表名添加字段,自動查表補充字段(添加bean類,Aobean,Vobean,queryBean)
* @param tableName
* @throws Exception
*/
public static void addColumn(String tableName)
/**
* 根據表名添加字段,自動查表刪除字段(刪除bean類,Aobean,Vobean,queryBean中字段)
* @param tableName
* @throws Exception
*/
public static void deleteColumn(String tableName)