tim-db工具包-dao层查询工具
相关文章:
- tim工具包-dao层查询工具
- tim工具包-sql管理平台-admin
- tim工具包-自动生成api接口
- tim工具包-MyMath牛逼的计算工具
- tim工具包-数据处理工具
1. 简介
dao 层查询工具在tim工具包中起着至关重要的因素,集成hibernate jpa 底层,封装了一层快速开发事项类,使用简单维护方便。
当前版本 V2.10.6
!!!!demo地址!!!!
pom.xml
<dependency><groupId>tim-utils</groupId><artifactId>tim-utils</artifactId><version>2.10.1</version>
</dependency><dependency><groupId>tim-utils</groupId><artifactId>tim-db</artifactId><version>2.10.6</version></dependency>
2. ApiSql 说明
public interface BaseApiSql {/*** 获取数据列表** @param param 参数* @param group* @param code* @return*/List<Map<String, Object>> runSqlByParam(Map<String, Object> param, String group, String code);/*** 获取分页** @param param* @param group* @param code* @return*/ApiPage runSqlByParamPage(Map<String, Object> param, String group, String code);/*** 获取单个数据** @param param* @param group* @param code* @return*/Map<String, Object> runSqlByParamItem(Map<String, Object> param, String group, String code);/*** 执行脚本,注意参数变量?不会自动去掉条件** @param param* @param group* @param code*/void exeSql(Map<String, Object> param, String group, String code);/*** 执行脚本,注意参数变量?不会自动去掉条件** @param param* @param group* @param code*/Object exeInsertSql(Map<String, Object> param, String group, String code);/*** 执行脚本,注意参数变量?不会自动去掉条件** @param param* @param group* @param code*/int exeUpdataSql(Map<String, Object> param, String group, String code);/*** 添加表单查询防止表字段不存在** 根据对象插入对应的表*/<T> void insertTable(T param, String tableName);/*** 根据对象插入对应的表,notKeys 某些属性不插入*/<T> void insertTableNotKey(T param, String tableName, String... notKeys);/*** 批量插入数据*/<T> void insertListTableNotKey(List<T> list, String tableName, String... notKeys);/***** 批量插入* 不带转换字段名称* 地段名称不转换* */<T> void insertListTableNotKeyNotHump(List<T> list, String tableName, String... notKeys);/*** 插入表数据,根据map,品牌处不要的数据** @param param* @param tableName*/void insertTableMapNotKey(Map<String, Object> param, String tableName, String... notKeys);/*** 批量插入数据* map*/<T> void insertListTableMapNotKey(List<T> list, String tableName, String... notKeys);/*** 更新数据** @param param* @param tableName*/void updateTableMap(Map<String, Object> param, String tableName, String... notKeys);/*** 执行一条脚本** @param param 对应参数* @param paramKeys 参数keys* @param sql 脚本*/void exeSqlBySql(Map<String, Object> param, String paramKeys, String sql);/*** 执行一条脚本** @param param 对应参数* @param paramKeys 参数keys* @param sql 脚本*/Object insertSql(Map<String, Object> param, String paramKeys, String sql);/*** 执行脚本 获取单个数据** @param param 对应参数* @param paramKeys 参数keys* @param sql 脚本* @return*/Map<String, Object> getItemBySql(Map<String, Object> param, String paramKeys, String sql);/*** 执行脚本 获取单个数据** @param param 对应参数* @param paramKeys 参数keys* @param sql 脚本* @return*/List<Map<String, Object>> getListBySql(Map<String, Object> param, String paramKeys, String sql);//组合参数sqlString getSql(Map<String, Object> param, String group, String code);/*** 根据脚本获取分页数据** @param param 参数* @param paramKeys 参数key 值* @param sql 脚本* @return*/ApiPage getPageSql(Map<String, Object> param, String paramKeys, String sql);/*** 获取单个表数据** @param tableName 表名称* @param keyName 对应key名称* @param keyValue 参数值* @return*/Map<String, Object> item(String tableName, String keyName, String keyValue);/*** 根据表名称获取多个数据** @param tableName 表名称* @param keyName 对应的key值* @param keyValue 参数值* @return*/List<Map<String, Object>> list(String tableName, String keyName, String keyValue);/*** 删除表数据** @param tableName 表名称* @param keyName 对应的key值* @param keyValue 参数值* @return*/boolean del(String tableName, String keyName, String keyValue);
}public interface ApiSqlBean extends BaseApiSql {/*** 获取数据列表** @param bean 实体对象* @param group* @param code* @return*/default List<Map<String, Object>> runSqlByParamBean(Object bean, String group, String code) {Map<String, Object> stringObjectMap = MapToBeanUtils.beanToMap(bean);if (stringObjectMap == null) stringObjectMap = new HashMap<>();return runSqlByParam(stringObjectMap, group, code);}/*** 获取单个数据** @param bean 实体对象* @param group* @param code* @return*/default Map<String, Object> runSqlByParamItemBean(Object bean, String group, String code) {Map<String, Object> stringObjectMap = MapToBeanUtils.beanToMap(bean);if (stringObjectMap == null) stringObjectMap = new HashMap<>();return runSqlByParamItem(stringObjectMap, group, code);}/*** 获取数据列表* 返回实体bean** @param bean 实体对象* @param group* @param code* @return*/default <T> List<T> runSqlByParamBean(Object bean, String group, String code, Class<T> cls) {Map<String, Object> stringObjectMap = MapToBeanUtils.beanToMap(bean);if (stringObjectMap == null) stringObjectMap = new HashMap<>();List<Map<String, Object>> maps = runSqlByParam(stringObjectMap, group, code);List<T> ts = MapToBeanUtils.mapToBean(cls, maps);return ts;}/*** 获取单个数据* 返回实体bean** @param bean 实体对象* @param group* @param code* @return*/default <T> T runSqlByParamItemBean(Object bean, String group, String code, Class<T> cls) {Map<String, Object> stringObjectMap = MapToBeanUtils.beanToMap(bean);if (stringObjectMap == null) stringObjectMap = new HashMap<>();Map<String, Object> stringObjectMap1 = runSqlByParamItem(stringObjectMap, group, code);T t = MapToBeanUtils.mapToBean(cls, stringObjectMap1);return t;}/*** 获取分页** @param bean 实体对象* @param group* @param code* @return*/default ApiPage runSqlByParamPageBean(Object bean, String group, String code) {Map<String, Object> stringObjectMap = MapToBeanUtils.beanToMap(bean);if (stringObjectMap == null) stringObjectMap = new HashMap<>();return runSqlByParamPage(stringObjectMap, group, code);}/*** 执行脚本,注意参数变量?不会自动去掉条件** @param bean 实体对象* @param group* @param code*/default void exeSqlBean(Object bean, String group, String code) {Map<String, Object> stringObjectMap = MapToBeanUtils.beanToMap(bean);if (stringObjectMap == null) stringObjectMap = new HashMap<>();exeSql(stringObjectMap, group, code);}
}/*** dao 层工具*/
public interface ApiSql extends ApiSqlBean{/*** 返回当前应用在哪个模块* @return*/String getSqlModel();}
3 数据库脚本调用说明
调用数据库脚本在ApiSql 中对应已下个接口
- runSqlByParam 获取数组数据
- runSqlByParamPage 分页获取数据
- runSqlByParamItem 获取单个数据
- exeSqlzhi
3.1 第一步将需要获取数据的脚本写入sys_t_sql 中配置好groups codes
不建议直接在数据库中操作,可以下载tim-db-admin 进行界面添加
tim-db-admin 可查看另外一篇文章 tim工具包-tim-db-admin 管理平台
admin sql管理平台
param_keys 是从传入的参数中获取值,顺序与?号对应顺序
3.2 第二部代码调用
- map 为传入的参数
- sys 为对应的groups param_config 为对应的code
- runSqlByParamItem 为获取单个数据,对应的api可参考文章上面中的2.Apisql 说明
3.3 脚本调用后的效果
3.4 增删改查等调用
/*** 理财包*/
@RestController
@RequestMapping("/lcsy/")
@Api(value = "理财收益比配置", tags = "理财收益比配置")
public class LcsyController extends BaseRuoyiController {@PostMapping("/page")@ApiOperation(value = "理财收益比配置列表")@DynamicParameters(name = "param", properties = {@DynamicParameter(name = "page", value = "第几页"),@DynamicParameter(name = "size", value = "大小"),@DynamicParameter(name = "syType", value = "理财收益比列表"),})public Object page(@RequestBody Map<String, Object> param) throws Exception {ApiPage apiPage = apiSql.runSqlByParamPage(getRuoyiPageParam(param), "lc", "lcsylist");return doOutDataPage(apiPage);}@PostMapping("/add")@ApiOperation(value = "添加")@DynamicParameters(name = "param", properties = {@DynamicParameter(name = "num", value = "理财收益比"),@DynamicParameter(name = "syType", value = "理财收益比类型"),})public Object add(@RequestBody Map<String, Object> param) throws Exception {param.put("id", UUID.randomUUID().toString());param.put("cTime", VerifyUtil.getDate());apiSql.insertTableMapNotKey(param, "t_lc_sy_num");return doOutData("成功");}@PostMapping("/del")@ApiOperation(value = "删除")@DynamicParameters(name = "param", properties = {@DynamicParameter(name = "id", value = "id"),})public Object del(@RequestBody Map<String, Object> param) throws Exception {getParamMapKeyNess(param, "id");apiSql.del("t_lc_sy_num", "id", param.get("id") + "");return doOutData("成功");}
}
4 脚本直接调用说明
字符串脚本调用,直接使用sql脚本用已下几个接口
- getItemBySql 获取单个数据
- getListBySql 获取一组数据
- exeSqlBySql 执行脚本
4.1 执行脚本案例
paramKeys 为map里面数据的key名称
按照顺序取出数据放入问号中
4.2 直接使用sql拼接
当需要动态使用 order by cTime desc 等来排序可以使用## 做脚本替换
select * from table_test where 1=1
// 以上为查询语句
select * from table_test where 1=1 ##?
或者
select * from table_test where 1=1 #### 则可以将sql语句当做变量进行替换
- 则该orderSql 对应的 sys_t_sql 表中的param 对应orderSql 参数
5 单表数据插入
单表数据插入,将对象对应的属性插入表中
- void insertTable(T param, String tableName); 插入单表数据
- void insertTableNotKey(T param, String tableName,String…notKeys); 插入单表数据局,排除notKeys 数据
logBean 为日志对象,t_app_merga_log 为记录的日志表,type 为排除的字段
6 自定义传值可以,自动生成内容
6.1 自定义sql参数自动装载内容
如需拓展 重写com.common 下的SysFunctionParam 即可
package com.common;import com.utils.VerifyUtil;import java.util.UUID;/*** 自定义参key* 自动添加内容*/
public class SysFunctionParam {/*** 获取系统定义key** @param key* @return*/public static String getRegSysFunction(String key) {switch (key) {case "#id#": return UUID.randomUUID().toString();case "#cTime#":return VerifyUtil.getDate();}return "";}}
sys_t_sql 表 param 配置#id# 则该对应的参数为uuid
6.2 根据不同sql类型统一添加属性
如有需要重写该类即可
package com.common;import com.google.gson.Gson;
import com.google.gson.GsonBuilder;import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;/*** 根据不同类型的sql* 对param进行改装*/
public class SysInitParam {// 对应数据库完整时间格式public final static String DATE_FROM = "yyyy-MM-dd HH:mm:ss";public static enum SqlType {//插入INSERT,UPDATE,DELETE}/*** 根据不同类型的sql 进行对象改造** @param sqlType* @param param* @return*/public static Map<String, Object> getSysFunction(SqlType sqlType, Map<String, Object> param) {return param;}/*** sql数据格式转换** @param key* @param obj* @return*/public static Object toMap(String key, Object obj) {if (obj instanceof Date) {SimpleDateFormat formatter = new SimpleDateFormat(DATE_FROM);String date = formatter.format(obj);obj = date;}return obj;}public static Gson getBaseGson() {return new GsonBuilder().serializeNulls().setDateFormat(DATE_FROM).create();}}
重写以上类 中的getSysFunction 即可统一添加属性 SqlType 根据类型,插入、修改、删除而全局添加入参属性
tim-db工具包-dao层查询工具相关推荐
- SSM项目调用Dao层查询方法传入正确参数但查不到数据
2021年2月17日 2用户登录业务层调用Dao层的查询方法后返回的结果不是预期结果,预期结果为执行方法传入正确参数后查询得到查询结果封装的User对象的List集合,实际结果为传入正确参数执行方法后 ...
- java分页封装到dao层,Node Dao层的封装与分页
传统的写法/** * Created by 黄森 on 2017/7/22. */var express = require('express');var app = express();var Mo ...
- mysql 查询分析工具下载_SQL分析工具下载-SQL查询工具(DB Solo)下载v5.2.5官方版-西西软件下载...
DB Solo是一款完美的数据库查询分析工具.软件优秀跨平台SQL查询功能,支持所有主要DBMS产品:主要用于POJO的J2EE代码生成器,EJB 3.0批注,使用DAO 模式的JDBC持久层,JU ...
- 实现以最快速度搭建springboot后台web项目并连通数据库实现控制层与服务层与dao层的select查询...
背景 Servlet的出现 上世纪90年代,随着Internet和浏览器的飞速发展,基于浏览器的B/S模式随之火爆发展起来.最初,用户使用浏览器向WEB服务器发送的请求都是请求静态的资源,比如html ...
- 【用户画像】标签任务开发流程(源码之实体类、工具类、配置文件、DAO层)
文章目录 一 代码实现 0 开发主线 1 实体类 (1)TagInfo (2)TaskInfo (3)TaskTagRule 2 工具类 (1)连接sql的工具类 测试 (2)专门读取properti ...
- 【lizhi125】站长工具包,站长必备工具,SEO查询工具,统计工具
>> 站长推荐工具 ChinaZ站长工具:站长之家推出的工具,国内站长最常用的网站SEO查询工具,功能全面. SEO外链工具:主要用于提高网站外链,可以批量增加外链,利用站长工具的查询功能 ...
- mybatis 自动生成integer_通过mybatis-generator-core工具自动关联表生成对应model、mappers及dao层代码类完整教程...
一.前言 二.方法一(基于批处理方式) 1.在mysql的数据库test中创建guser表脚本CREATE TABLE 'guser' (@b@ 'id' int(20) NOT NULL COMM ...
- SpringBoot实现Java高并发秒杀系统之DAO层开发(一)
SpringBoot实现Java高并发秒杀系统之DAO层开发(一) 秒杀系统在如今电商项目中是很常见的,最近在学习电商项目时讲到了秒杀系统的实现,于是打算使用SpringBoot框架学习一下秒杀系统( ...
- JDBC , 使用java来控制mysql。JavaWeb开发的分层设计-三层架:DAO层设计,连接池使用,类加载使用,配置...
大家可以关注一下我的博客 我的博客所有随笔都是我从基础开始学习java的所有知识点 1. Jdbc概述 问题:实际开发中,不可能用工具或者命令行操作数据库,数据库表中的数据最终要使用Java程序来操 ...
最新文章
- unity test相关
- 冯·诺伊曼奖得主Jorge Nocedal:增强学习中零阶优化方法及其应用(附演讲视频和PPT)
- IE11 F12 开发人员工具 查看 Cookie
- 《Docker技术入门与实战》——2.4 本章小结
- python threading lock_python threading之死锁和可重入锁
- MySQL查询不到中文的问题
- linux文件操作相关函数
- android fastboot常见命令
- ORC 和 Parquet比较入门
- 我的Java开发学习之旅------gt;在Dos环境下Java内部类的编译和运行
- 汇编跳转指令(转载)
- c4d在运行时候显示计算机内存不足,打开c4d电脑电脑卡死怎么办
- 如何绘制CIE1931xy色度图
- leetcode69 x的平方根
- Java集成建行龙支付接口(详细)
- php iconv translit,php iconv translit for removing accents: not working as excepted?
- JavaScript案例:页面自动跳转到首页
- 新机安装指南(软件推荐)
- wget 和scp对比_Linux中curl命令和wget命令的使用介绍与比较
- safari html5插件安装,Safari巧用小插件 体验不输第三方浏览器