相关文章:

  • 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层查询工具相关推荐

  1. SSM项目调用Dao层查询方法传入正确参数但查不到数据

    2021年2月17日 2用户登录业务层调用Dao层的查询方法后返回的结果不是预期结果,预期结果为执行方法传入正确参数后查询得到查询结果封装的User对象的List集合,实际结果为传入正确参数执行方法后 ...

  2. java分页封装到dao层,Node Dao层的封装与分页

    传统的写法/** * Created by 黄森 on 2017/7/22. */var express = require('express');var app = express();var Mo ...

  3. mysql 查询分析工具下载_SQL分析工具下载-SQL查询工具(DB Solo)下载v5.2.5官方版-西西软件下载...

    DB Solo是一款完美的数据库查询分析工具.软件优秀跨平台SQL查询功能,支持所有主要DBMS产品:主要用于POJO的J2EE代码生成器,EJB 3.0批注,使用DAO  模式的JDBC持久层,JU ...

  4. 实现以最快速度搭建springboot后台web项目并连通数据库实现控制层与服务层与dao层的select查询...

    背景 Servlet的出现 上世纪90年代,随着Internet和浏览器的飞速发展,基于浏览器的B/S模式随之火爆发展起来.最初,用户使用浏览器向WEB服务器发送的请求都是请求静态的资源,比如html ...

  5. 【用户画像】标签任务开发流程(源码之实体类、工具类、配置文件、DAO层)

    文章目录 一 代码实现 0 开发主线 1 实体类 (1)TagInfo (2)TaskInfo (3)TaskTagRule 2 工具类 (1)连接sql的工具类 测试 (2)专门读取properti ...

  6. 【lizhi125】站长工具包,站长必备工具,SEO查询工具,统计工具

    >> 站长推荐工具 ChinaZ站长工具:站长之家推出的工具,国内站长最常用的网站SEO查询工具,功能全面. SEO外链工具:主要用于提高网站外链,可以批量增加外链,利用站长工具的查询功能 ...

  7. mybatis 自动生成integer_通过mybatis-generator-core工具自动关联表生成对应model、mappers及dao层代码类完整教程...

    一.前言 二.方法一(基于批处理方式) 1.在mysql的数据库test中创建guser表脚本CREATE TABLE 'guser' (@b@  'id' int(20) NOT NULL COMM ...

  8. SpringBoot实现Java高并发秒杀系统之DAO层开发(一)

    SpringBoot实现Java高并发秒杀系统之DAO层开发(一) 秒杀系统在如今电商项目中是很常见的,最近在学习电商项目时讲到了秒杀系统的实现,于是打算使用SpringBoot框架学习一下秒杀系统( ...

  9. JDBC , 使用java来控制mysql。JavaWeb开发的分层设计-三层架:DAO层设计,连接池使用,类加载使用,配置...

    大家可以关注一下我的博客  我的博客所有随笔都是我从基础开始学习java的所有知识点 1. Jdbc概述 问题:实际开发中,不可能用工具或者命令行操作数据库,数据库表中的数据最终要使用Java程序来操 ...

最新文章

  1. unity test相关
  2. 冯·诺伊曼奖得主Jorge Nocedal:增强学习中零阶优化方法及其应用(附演讲视频和PPT)
  3. IE11 F12 开发人员工具 查看 Cookie
  4. 《Docker技术入门与实战》——2.4 本章小结
  5. python threading lock_python threading之死锁和可重入锁
  6. MySQL查询不到中文的问题
  7. linux文件操作相关函数
  8. android fastboot常见命令
  9. ORC 和 Parquet比较入门
  10. 我的Java开发学习之旅------gt;在Dos环境下Java内部类的编译和运行
  11. 汇编跳转指令(转载)
  12. c4d在运行时候显示计算机内存不足,打开c4d电脑电脑卡死怎么办
  13. 如何绘制CIE1931xy色度图
  14. leetcode69 x的平方根
  15. Java集成建行龙支付接口(详细)
  16. php iconv translit,php iconv translit for removing accents: not working as excepted?
  17. JavaScript案例:页面自动跳转到首页
  18. 新机安装指南(软件推荐)
  19. wget 和scp对比_Linux中curl命令和wget命令的使用介绍与比较
  20. safari html5插件安装,Safari巧用小插件 体验不输第三方浏览器

热门文章

  1. CANoe:第5个仿真工程:仿真+测试
  2. Android LinearLayout横排和竖排布局
  3. jpg和jpeg的区别
  4. win7系统怎么搜索文件中包含的关键字?(批量搜索多个文件)
  5. Unifier培训: 系列讲解15: 公司级的BP--统一采购(BPO)
  6. C#理发店会员管理系统v1.0
  7. D3.js绘制 颜色:RGB、HSL和插值 (V3版本)
  8. 400G交换机技术前景和主流产品
  9. 航拍服务价格表,航拍测绘怎么计费的
  10. MySQL 整体知识