JFinal+layui 极速开发企业应用管理系统,是以 JFinal+layui 为核心的企业应用项目架构,利用 JFinal 的特性与 layui 完美结合,达到快速启动项目的目的。让开发更简单高效,即使你不会 layui,也能轻松掌握使用。
此次更新最主要是为了解决开发者对不同数据库的需要问题,所以优化了BaseService底层方法,能够适应不同的数据库问题,以及用户管理因为group by 的语法不兼容问题,都通过此次优化彻底解决了,开发者可以很顺利的根据自己的数据库配置轻松的运行本系统,不需要修改SQL,非常方便。
v1.2.3 更新内容:
1、BaseService新增getDb()方法,满足多数据源情况下,做到共享BaseService,同时,分页使用jfinal底层的分页方法,所以可以兼容多数据库使用问题:
/**
* 指定数据源,多数据源情况下使用<br/>
* 列如oracle数据源别名为oracle,在service重写该方法:
* <pre>
* @Override
* public String getDb(){
* return "oracle";
* }
* </pre>
* @return 若return null,则使用主数据源
* @author QinHaiLin
* @date 2019年3月13日
*/
public String getDb(){
return null;
}
public List<Record> queryForList(String sql) {
if(getDb()!=null){
return Db.use(getDb()).find(sql);
}
return Db.find(sql);
}
public List<Record> queryForList(String sql,Object...object) {
if(getDb()!=null){
return Db.use(getDb()).find(sql,object);
}
return Db.find(sql,object);
}
private Grid getGrid(int pageNumber,int pageSize,String sql,Object... paras){
SqlPara sqlPara=new SqlPara().setSql(sql);
for(int i=0;i<paras.length;i++){
sqlPara.addPara(paras[i]);
}
if(getDb()!=null){
Page<Record> page=Db.use(getDb()).paginate(pageNumber, pageSize, sqlPara);
return new Grid(page.getList(), pageNumber, pageSize, page.getTotalRow());
}
Page<Record> page=Db.paginate(pageNumber, pageSize, sqlPara);
return new Grid(page.getList(), pageNumber, pageSize, page.getTotalRow());
}
private Grid getGrid(int pageNumber,int pageSize,String sql){
SqlPara sqlPara=new SqlPara().setSql(sql);
if(getDb()!=null){
Page<Record> page=Db.use(getDb()).paginate(pageNumber, pageSize, sqlPara);
return new Grid(page.getList(), pageNumber, pageSize, page.getTotalRow());
}
Page<Record> page=Db.paginate(pageNumber, pageSize, sqlPara);
return new Grid(page.getList(), pageNumber, pageSize, page.getTotalRow());
}
2、用户默认分配组织机构部门关系,避免部门ID为空的用户关联查询数据重复,这样就可以去掉了用户管理部门关联查询时group by不兼容问题。
INSERT INTO sys_org VALUES ('sys', 'sys', '', '', '组织机构', '系统管理员', NULL, NULL, NULL, NULL, NULL, 1);
public Grid page(int pageNumber, int pageSize, Record record) {
Record rd = new Record();
rd.set("a.user_code like", record.getStr("userCode"));
rd.set("a.user_name like", record.getStr("userName"));
rd.set("a.sex=", record.getStr("sex"));
String sql=Db.getSql("core.getUserList");
String orgId=record.getStr("orgId");
//部门用户列表
String type=record.getStr("type");
if("org".equals(type)){
StringBuffer sbf=new StringBuffer();
sbf.append("'").append(orgId).append("'");
String orgIds=orgService.getIdsByOrgId(orgId,sbf);
sql=Db.getSql("core.getOrgUserList").replace("?", orgIds);
//return queryForList(sql,pageNumber, pageSize, rd, "group by a.id");
return queryForList(sql,pageNumber, pageSize, rd, null);
}
//用户管理列表
rd.set("a.org_id=", orgId);
//return queryForList(sql,pageNumber, pageSize, rd, "group by a.id");
return queryForList(sql,pageNumber, pageSize, rd, null);
}
3、BaseController导出方法优化,调整个别参数,避免重载方法误用问题。
/**
* 文件名放前面,避免误用
* @param fileName
* @param title
* @param sql
* @param paras
*/
@NotAction
public void exportExcel(String fileName, String[] title, String sql, Object... paras) {
fileService.exportExcelxlsx(getResponse(), title, fileName, sql, paras);
}
@NotAction
public void exportExcel(String[] title, String sql, Object... paras) {
fileService.exportExcelxlsx(getResponse(), title, null, sql, paras);
}
4、数据库字段名统一配置小写,避免在oracle数据库下前端修改字段名。
// 配置属性名(字段名)大小写,true:小写,false:大写,统一小写,切换oracle数据库的时候可以不用改页面字段
arp.setContainerFactory(new CaseInsensitiveContainerFactory(true));
转自 https://www.oschina.net/news/105663/jfinal-layui-1-2-3-released