首页>代码>JFinal-layui极速开发企业应用系统-专业版>/Jfinal-layui/src/main/java/com/qinhailin/common/base/service/DbService.java
/**
* Copyright 2019-2021 覃海林(qinhaisenlin@163.com).
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.qinhailin.common.base.service;
import java.util.List;
import com.jfinal.kit.Kv;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.DbPro;
import com.jfinal.plugin.activerecord.Page;
import com.jfinal.plugin.activerecord.Record;
import com.jfinal.plugin.activerecord.SqlPara;
import com.qinhailin.common.kit.SqlKit;
import com.qinhailin.common.vo.Grid;
/**
* 没有model类的service接口
* @author QinHaiLin
* @date 2019年3月13日
*/
public abstract class DbService {
/**
* 指定表
* @return
* @author QinHaiLin
* @date 2019年3月14日
*/
public abstract String getTable();
/**
* 指定主键
* @return
* @author QinHaiLin
* @date 2019年3月14日
*/
public abstract String getPrimaryKey();
/**
* 指定数据源<br/>
* @return configName 若return null,则使用主数据源
* @author QinHaiLin
* @date 2019年3月13日
*/
public String getDb(){
return null;
};
/**
* 获取DBPro数据源
* @return
*/
private DbPro getDbPro(){
if(getDb()!=null){
return Db.use(getDb());
}
return Db.use();
}
public List<Record> findAll(){
SqlPara sp = Db.getSqlPara("crud.find", Kv.by("tableName",getTable()).set("cond", new Kv()));
return getDbPro().find(sp);
}
/**
* 无条件查询
* @param tableName
* @author QinHaiLin
* @date 2019年3月13日
*/
public List<Record> find(String tableName){
SqlPara sp = Db.getSqlPara("crud.find", Kv.by("tableName",tableName).set("cond", new Kv()));
return getDbPro().find(sp);
}
/**
* 条件查询
* @param tableName 表名
* @param column 字段集合
* @author QinHaiLin
* @date 2019年3月13日
*/
public List<Record> find(String tableName,Kv columns){
SqlPara sp = Db.getSqlPara("crud.find", Kv.by("tableName",tableName).set("cond", getKv(columns)));
return getDbPro().find(sp);
}
public List<Record> find(Kv columns){
SqlPara sp = Db.getSqlPara("crud.find", Kv.by("tableName",getTable()).set("cond", getKv(columns)));
return getDbPro().find(sp);
}
public List<Record> find(String tableName,Kv columns,String groupOrderBySql){
SqlPara sp = Db.getSqlPara("crud.find", Kv.by("tableName",tableName).set("cond", getKv(columns)).set("groupOrder",groupOrderBySql));
return getDbPro().find(sp);
}
public List<Record> find(Kv columns,String groupOrderBySql){
SqlPara sp = Db.getSqlPara("crud.find", Kv.by("tableName",getTable()).set("cond", getKv(columns)).set("groupOrder",groupOrderBySql));
return getDbPro().find(sp);
}
public List<Record> find(String sql,Object... paras){
return getDbPro().find(sql,paras);
}
public Record findById(String id) {
String sql="select * from "+getTable() +" where "+getPrimaryKey()+"=?";
List<Record> list=getDbPro().find(sql,id);
if(list.size()>0){
return list.get(0);
}
return null;
}
public Record findPk(String pk,Object value) {
String sql="select * from "+getTable() +" where "+pk+"=?";
List<Record> list=getDbPro().find(sql,value);
if(list.size()>0){
return list.get(0);
}
return null;
}
/**
* 根据某字段查询是否存在数据
* @param key
* @param paras
* @return
*/
public boolean isExit(String key,Object paras){
String sql="select * from "+getTable() +" where "+key+"=?";
List<Record> list=getDbPro().find(sql, paras);
if(list.size()>0){
return true;
}
return false;
}
/**
* 分页条件查询
* @param pageNumber
* @param pageSize
* @param tableName
* @param columns
* @author QinHaiLin
* @date 2019年3月13日
*/
public Grid page(int pageNumber,int pageSize,String tableName,Kv columns){
SqlPara sp = Db.getSqlPara("crud.find", Kv.by("tableName",tableName).set("cond", getKv(columns)));
return getGrid(getDbPro().paginate(pageNumber, pageSize, sp));
}
public Grid page(int pageNumber,int pageSize,Kv columns){
SqlPara sp = Db.getSqlPara("crud.find", Kv.by("tableName",getTable()).set("cond", getKv(columns)));
return getGrid(getDbPro().paginate(pageNumber, pageSize, sp));
}
/**
* 分页查询,分组、排序
* @param pageNumber
* @param pageSize
* @param tableName
* @param columns
* @param groupOrderBySql
* @author QinHaiLin
* @date 2019年3月13日
*/
public Grid page(int pageNumber,int pageSize,String tableName,Kv columns,String groupOrderBySql){
SqlPara sp = Db.getSqlPara("crud.find", Kv.by("tableName",tableName).set("cond", getKv(columns)).set("groupOrder",groupOrderBySql));
return getGrid(getDbPro().paginate(pageNumber, pageSize, sp));
}
public Grid page(int pageNumber,int pageSize,Kv columns,String groupOrderBySql){
SqlPara sp = Db.getSqlPara("crud.find", Kv.by("tableName",getTable()).set("cond", getKv(columns)).set("groupOrder",groupOrderBySql));
return getGrid(getDbPro().paginate(pageNumber, pageSize, sp));
}
public Grid page(int pageNumber,int pageSize,String select,String sqlExceptSelect){
return getGrid(getDbPro().paginate(pageNumber, pageSize, select, sqlExceptSelect));
}
public Grid page(int pageNumber,int pageSize,String select,String sqlExceptSelect,Object... paras){
return getGrid(getDbPro().paginate(pageNumber, pageSize, select, sqlExceptSelect,paras));
}
/**
* Save record with default primary key.
*
* <pre>
* Example:
* Record record = new Record().set("id", 123).set("name", 456);
* Db.use().save("user_role", userRole);
* </pre>
*
* @param tableName
* @param record
* @author QinHaiLin
* @date 2019年3月13日
*/
public boolean save(String tableName,Record record) {
return getDbPro().save(tableName, record);
}
public boolean save(Record record) {
return getDbPro().save(getTable(), record);
}
/**
* Save record.
* <pre>
* Example:
* Record userRole = new Record().set("user_id", 123).set("role_id", 456);
* Db.use().save("user_role", "user_id, role_id", userRole);
* </pre>
* @param tableName the table name of the table
* @param primaryKey the primary key of the table, composite primary key is separated by comma character: ","
* @param record the record will be saved
* @param true if save succeed otherwise false
* @author QinHaiLin
* @date 2019年3月13日
*/
public boolean save(String tableName,String primaryKey,Record record) {
return getDbPro().save(tableName,primaryKey, record);
}
/**
* Update record with default primary key.
*
* @param tableName
* @param record
* @return
* @author QinHaiLin
* @date 2019年3月13日
*/
public boolean update(String tableName,Record record) {
return getDbPro().update(tableName, record);
}
public boolean update(Record record) {
return getDbPro().update(getTable(), record);
}
public int update(Kv data,Kv whereData){
Kv templateData=Kv.by("tableName",getTable()).set("cond", data).set("whereCond", getKv(data));
return getDbPro().update(Db.getSqlPara("crud.update", templateData));
}
/**
* Update Record.
* <pre>
* Example:
* Db.use().update("user_role", "user_id, role_id", record);
* </pre>
* @param tableName the table name of the Record save to
* @param primaryKey the primary key of the table, composite primary key is separated by comma character: ","
* @param record the Record object
* @param true if update succeed otherwise false
* @author QinHaiLin
* @date 2019年3月13日
*/
public boolean update(String tableName,String primaryKey,Record record) {
return getDbPro().update(tableName,primaryKey, record);
}
public int update(String sql) {
return getDbPro().update(sql);
}
public int update(String sql,Object... paras) {
return getDbPro().update(sql,paras);
}
/**
* Delete Record by primary key
* @param tableName
* @param primaryKey
* @param list
* @return
* @author QinHaiLin
* @date 2019年3月13日
*/
public boolean deleteByIds(String tableName,String primaryKey,List<String> list) {
String sql="delete from "+tableName+" where "+primaryKey+" in "+SqlKit.joinIds(list);
return getDbPro().delete(sql)>0;
}
/**
* Delete Record width primary key id
* @param tableName
* @param list
* @return
* @author QinHaiLin
* @date 2019年3月13日
*/
public boolean deleteByIds(String tableName,List<String> list) {
String sql="delete from "+tableName+" where id in "+SqlKit.joinIds(list);
return getDbPro().delete(sql)>0;
}
public boolean deleteByIds(List<String> list){
String sql="delete from "+getTable()+" where id in "+SqlKit.joinIds(list);
return getDbPro().delete(sql)>0;
}
public boolean deleteByIds(List<String> list,String primaryKey){
String sql="delete from "+getTable()+" where "+primaryKey+" in "+SqlKit.joinIds(list);
return getDbPro().delete(sql)>0;
}
public int delete(Kv data){
Kv templateData=Kv.by("tableName",getTable()).set("cond", data);
return getDbPro().update(Db.getSqlPara("crud.delete", templateData));
}
/**
* 封装layui分页参数
* @param page
* @return
* @author QinHaiLin
* @date 2019年3月13日
*/
private Grid getGrid(Page<Record> page) {
return new Grid(page.getList(),page.getPageNumber(),page.getPageSize(),page.getTotalRow());
}
/**
* 过滤查询条件
* @param columns
* @return
* @author QinHaiLin
* @date 2019年3月13日
*/
private Kv getKv(Kv columns) {
Kv kv=new Kv();
for(Object key:columns.keySet()) {
if(columns.get(key)!=null&&!columns.get(key).equals("")) {
if(key.toString().toLowerCase().endsWith("like")) {
kv.set(key,"%"+columns.get(key)+"%");
continue;
}
kv.set(key,columns.get(key));
}
}
return kv;
}
}
最近下载更多
z875152686 LV8
2023年11月2日
2602275348 LV12
2022年4月8日
zcl02036716 LV17
2022年2月28日
微量的记忆 LV10
2022年2月11日
最代码官方 LV168
2021年10月5日
最近浏览更多
Frank_F
2024年7月5日
暂无贡献等级
myfz0662 LV10
2024年5月8日
云破月 LV8
2024年4月12日
akittyboy LV9
2024年3月31日
z875152686 LV8
2023年11月2日
abc562311934 LV4
2022年10月8日
1986王志飞 LV6
2022年8月12日
bluesky2016 LV15
2022年6月10日
a318888331 LV13
2022年4月11日
2602275348 LV12
2022年3月31日

