首页 > 其他分享 >对jdbctemplate的再次简单封装

对jdbctemplate的再次简单封装

时间:2023-08-11 10:37:43浏览次数:40  
标签:info 封装 简单 List resultList jdbctemplate sql logger public


JdbcTemplateRepository.java


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BatchPreparedStatementSetter;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.ParameterizedPreparedStatementSetter;
import org.springframework.jdbc.core.SingleColumnRowMapper;
import org.springframework.stereotype.Repository;

import java.util.Collection;
import java.util.List;
import java.util.Map;

@Repository
public class JdbcTemplateRepository {

    private static final Logger logger = LoggerFactory.getLogger(JdbcTemplateRepository.class);

    @Autowired
    private JdbcTemplate jdbcTemplate;


    public <T> List<T> queryForList(String sql, Class<T> tClass){
        logger.info("sql: " + sql);
        List<T> resultList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(tClass));
        logger.info("resultList: " + resultList);
        return resultList;
    }

    public <T> List<T> queryForList(String sql, Class<T> tClass, Object... args){
        logger.info("sql: " + sql);
        List<T> resultList = jdbcTemplate.query(sql, args, new BeanPropertyRowMapper<>(tClass));
        logger.info("resultList: " + resultList);
        return resultList;
    }

    public <T> List<T> queryForListSingleColumn(String sql, Class<T> tClass){
        logger.info("sql: " + sql);
        List<T> resultList = jdbcTemplate.query(sql, new SingleColumnRowMapper<>(tClass));
        logger.info("resultList: " + resultList);
        return resultList;
    }

    public <T> List<T> queryForListSingleColumn(String sql, Class<T> tClass, Object... args){
        logger.info("sql: " + sql);
        List<T> resultList = jdbcTemplate.query(sql, args, new SingleColumnRowMapper<>(tClass));
        logger.info("resultList: " + resultList);
        return resultList;
    }

    public List<Map<String, Object>> queryForListMap(String sql){
        logger.info("sql: " + sql);
        List<Map<String, Object>> resultListMap = jdbcTemplate.queryForList(sql);
        logger.info("resultListMap: " + resultListMap);
        return resultListMap;
    }

    public List<Map<String, Object>> queryForListMap(String sql, Object... args){
        logger.info("sql: " + sql);
        List<Map<String, Object>> resultListMap = jdbcTemplate.queryForList(sql, args);
        logger.info("resultListMap: " + resultListMap);
        return resultListMap;
    }

    public Map<String, Object> queryForMap(String sql){
        logger.info("sql: " + sql);
        Map<String, Object> resultMap = jdbcTemplate.queryForMap(sql);
        logger.info("resultMap: " + resultMap);
        return resultMap;
    }

    public Map<String, Object> queryForMap(String sql, Object... args){
        logger.info("sql: " + sql);
        Map<String, Object> resultMap = jdbcTemplate.queryForMap(sql, args);
        logger.info("resultMap: " + resultMap);
        return resultMap;
    }


    public int update(String sql){
        logger.info("sql: " + sql);
        return jdbcTemplate.update(sql);
    }

    public int update(String sql, Object... args){
        logger.info("sql: " + sql);
        return jdbcTemplate.update(sql, args);
    }

    public int[] batchUpdate(String... sql){
        logger.info("sql: " + sql);
        return jdbcTemplate.batchUpdate(sql);
    }

    public int[] batchUpdate(String sql, List<Object[]> batchArgs){
        logger.info("sql: " + sql);
        return jdbcTemplate.batchUpdate(sql, batchArgs);
    }

    public int[] batchUpdate(String sql, BatchPreparedStatementSetter pss) {
        logger.info("sql: " + sql);
        return jdbcTemplate.batchUpdate(sql, pss);
    }

    public <T> int[][] batchUpdate(String sql, Collection<T> batchArgs, int batchSize, ParameterizedPreparedStatementSetter<T> pss) {
        logger.info("sql: " + sql);
        return jdbcTemplate.batchUpdate(sql, batchArgs, batchSize, pss);
    }


}





NamedParameterJdbcTemplateRepository.java


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.SingleColumnRowMapper;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

@Repository
public class NamedParameterJdbcTemplateRepository {

    private static final Logger logger = LoggerFactory.getLogger(NamedParameterJdbcTemplateRepository.class);

    @Autowired
    private NamedParameterJdbcTemplate namedParameterJdbcTemplate;

    //批量使用的时候可以使用SqlParameterSourceUtils创建批量参数
    //SqlParameterSource[] beanSources = SqlParameterSourceUtils.createBatch(list.toArray());

    public <T> List<T> queryForList(String sql, Class<T> tClass, SqlParameterSource args){
        logger.info("sql: " + sql);
        List<T> resultList = namedParameterJdbcTemplate.query(sql, args, new BeanPropertyRowMapper<>(tClass));
        logger.info("resultList: " + resultList);
        return resultList;
    }

    public <T> List<T> queryForListSingleColumn(String sql, Class<T> tClass, SqlParameterSource args){
        logger.info("sql: " + sql);
        List<T> resultList = namedParameterJdbcTemplate.query(sql, args, new SingleColumnRowMapper<>(tClass));
        logger.info("resultList: " + resultList);
        return resultList;
    }

    public List<Map<String, Object>> queryForListMap(String sql, SqlParameterSource args){
        logger.info("sql: " + sql);
        List<Map<String, Object>> resultListMap = namedParameterJdbcTemplate.queryForList(sql, args);
        logger.info("resultListMap: " + resultListMap);
        return resultListMap;
    }

    public Map<String, Object> queryForMap(String sql, SqlParameterSource args){
        logger.info("sql: " + sql);
        Map<String, Object> resultMap = namedParameterJdbcTemplate.queryForMap(sql, args);
        logger.info("resultMap: " + resultMap);
        return resultMap;
    }





    public <T> List<T> queryForList(String sql, Class<T> tClass, Map<String, ?> paramMap){
        logger.info("sql: " + sql);
        List<T> resultList = namedParameterJdbcTemplate.query(sql, paramMap, new BeanPropertyRowMapper<>(tClass));
        logger.info("resultList: " + resultList);
        return resultList;
    }

    public List<Map<String, Object>> queryForListMap(String sql, Map<String, ?> paramMap){
        logger.info("sql: " + sql);
        List<Map<String, Object>> resultListMap = namedParameterJdbcTemplate.queryForList(sql, paramMap);
        logger.info("resultListMap: " + resultListMap);
        return resultListMap;
    }

    public Map<String, Object> queryForMap(String sql, Map<String, ?> paramMap){
        logger.info("sql: " + sql);
        Map<String, Object> resultMap = namedParameterJdbcTemplate.queryForMap(sql, paramMap);
        logger.info("resultMap: " + resultMap);
        return resultMap;
    }


    public int update(String sql, Map<String, ?> paramMap) {
        logger.info("sql: " + sql);
        return namedParameterJdbcTemplate.update(sql, paramMap);
    }

    public int[] batchUpdate(String sql, Map<String, ?>[] batchValues) {
        logger.info("sql: " + sql);
        return namedParameterJdbcTemplate.batchUpdate(sql, batchValues);
    }

}

标签:info,封装,简单,List,resultList,jdbctemplate,sql,logger,public
From: https://blog.51cto.com/lenglingx/7043981

相关文章

  • WIFI的频段简单介绍
     1、2.4G1.1运行频率WIFI的2.4G常用频率为 2.400GHz~2.4835GHz之间,1.2基于标准基于IEEE802.11b的技术标准。 2、5G2.1运行频率WIFI的5G常用频率为5.15GHz至5.875GHz,其中包括多个频道,每个频道之间的带宽均为20MHz、40MHz、80MHz或160MHz5GWIFI分为4个段:5150-52......
  • CUDA 简单程序的基本框架和自定义设备函数
    1cuda程序的基本框架框架包含:头文件常量或者宏定义C++自定义函数和cuda核函数的原型声明main函数C++自定义函数核CUDA核函数的定义实现其中main函数中1intmain()2{3分配主机与设备代码内存4初始化主机中的数据5将某些数据从主机复制到设备6调用核函数在设备......
  • 简单使用二分查找法
    #include<stdio.h>intmain(void){ intarr[]={1,2,3,4,5,6,7,8,9,10}; intsz=sizeof(arr)/sizeof(arr[0]);//元素个数 intNumber=5;//需要查找的值 intright=sz-1;//右下标 intleft=0;//左下标 while(left<=right){ inthalf=(right+l......
  • WEB自动化-Allure报告-Allure安装和简单用法
    WEB自动化测试可以借助Allure生成美观的测试报告。1、安装工具及配置环境变量1.安装JDK1.8才可运行allure,直接百度,一大堆2.下载Allure的安装包(版本号:2.13.5)https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/3.解压Allure压缩包......
  • el-tree 全部禁用 超简单解决办法
    有这么个需求,要求el-tree有多选框,但是要全部禁用,只展示看 但是el-tree这个属性上没有看到全部禁用的属性,只看到了单个节点禁用,所以有一个麻烦的办法,就是递归禁用所有节点,但是这个方法麻烦耗时,所以看到官方文档有这么个东西 于是我们想办法,把这个Props用上,于是就这样了......
  • 嵌入式Linux ------ 一次简单的FrameBuffer驱动开发
    Linux一次简单的FrameBuffer驱动开发设施版本CPUAllwinnerF1C200slinux6.4.0-rc4显示器1.28inch16-grayscaleOLED128x128驱动ICSSD1327Orangepi5声明本驱动仓库位于:https://github.com/AllwinnerSuniv/suniv-epd/tree/main/ssd1327本驱动代......
  • apache/hop-web 2.5安装和简单入门
    一、使用Docker安装部署1、拉取镜像推荐使用下面的web版本dockerpullapache/hop:latestdockerpullapache/hop-web:latest2、部署a、简单部署(不使用用户名密码)dockerrun-p8080:8080apache/hop-web:latestb、使用用户名密码和相关数据库配置的部署docker文件......
  • CLion中构建最简单的QT环境
    在安装好QT之后,在CLion中新建项目,可以看到QT相关的项目类型。注意这里的QtCMake前缀,这里需要填QT的CMake路径。但是这里不填也是可以的。在CMakeList中还有机会填。Create项目之后,会有一票报错,没有关系先不管。首先在Setting中构建ToolChain。我这里有一个VS的MSVC,有一个我自......
  • llama2模型部署方案的简单调研-GPU显存占用(2023年7月25日版)
    https://blog.csdn.net/Fatfish7/article/details/131925595先说结论全精度llama27B最低显存要求:28GB全精度llama213B最低显存要求:52GB全精度llama270B最低显存要求:280GB16精度llama27B预测最低显存要求:14GB16精度llama213B预测最低显存要求:26GB16精度llama270B预测最低显......
  • 【看表情包学Linux】系统下的文件操作 | 文件系统接口 | 系统调用与封装 | open,write
      ......