首页>代码>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日
            
            
        
 
                 
                 
     
                