首页 > 其他分享 >基于spring-boot-starter-JDBC组件的通用增删改查

基于spring-boot-starter-JDBC组件的通用增删改查

时间:2023-02-16 20:02:04浏览次数:28  
标签:tableName JDBC return String spring boot import sb public

前言

配合嵌入式数据库使用,比如H2,sqlite嵌入式关系型数据,很香!

  • pom
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
  • 代码
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

/**
 * 通用DAO
 *
 * @author JHL
 * @version 1.0
 * @date 2023/2/16 19:09
 * @since : JDK 11
 */
@Service
public class CommonService {
    private static final Logger LOG = LoggerFactory.getLogger(CommonService.class);
    @Autowired
    private JdbcTemplate jdbcTemplate;

    /**
     * 通用查询
     */
    public boolean save(String tableName, LinkedList<String> toSaveField, Object... values) {
        StringBuilder sb = new StringBuilder("INSERT INTO ");
        sb.append(tableName);
        sb.append(" (");
        for (int i = 0; i < toSaveField.size(); i++) {
            if (i == toSaveField.size() - 1) {
                sb.append(toSaveField.get(i));
            } else {
                sb.append(toSaveField.get(i) + ",");
            }
        }
        sb.append(") VALUES (");
        for (int i = 0; i < toSaveField.size(); i++) {
            if (i == toSaveField.size() - 1) {
                sb.append("?");
            } else {
                sb.append("?,");
            }
        }
        sb.append(");");
        return jdbcTemplate.update(sb.toString(), values) > 0;
    }

    /**
     * 通用查询
     */
    public List<Map<String, Object>> select(String tableName) {
        return jdbcTemplate.queryForList("select * from " + tableName + ";");
    }

    /**
     * 查最后一条
     */
    public Map<String, Object> selectLastOne(String tableName, String pkField) {
        return jdbcTemplate.queryForMap("select * from " + tableName + " order by " + pkField + " desc limit 1;");
    }

    /**
     * 通用更新
     */
    public boolean updateByFiledAndValue(String tableName, long dataId, String fieldName, String fieldValue) {
        StringBuilder sb = new StringBuilder("UPDATE " + tableName + " SET ");
        sb.append(fieldName + " = " + "'" + fieldValue + "' ");
        sb.append(" WHERE id = " + dataId + ";");
        return jdbcTemplate.update(sb.toString()) > 0;
    }

    /**
     * 通用删除
     */
    public boolean del(String tableName, long dataId) {
        return jdbcTemplate.update("DELETE FROM " + tableName + " WHERE id = " + dataId + ";") > 0;
    }
}
  • 使用示例
import com.manage.service.CommonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

/**
 * @author JHL
 * @version 1.0
 * @date 2023/2/16 18:58
 * @since : JDK 11
 */
@Service
public class DeviceService {
    private static final String TABLE_NAME = "camera";
    private static final String PK_FIELD = "id";
    private static final LinkedList<String> ALL_FIELD = new LinkedList<>();

    static {
        ALL_FIELD.add("ip");
        ALL_FIELD.add("port");
        ALL_FIELD.add("username");
        ALL_FIELD.add("pwd");
        ALL_FIELD.add("remark");
        ALL_FIELD.add("status");
    }

    @Autowired
    private CommonService commonService;

    public boolean save(String ip, String port, String username, String pwd, String remark, String status) {
        return commonService.save(TABLE_NAME, ALL_FIELD, ip, port, username, pwd, remark, status);
    }

    public List<Map<String, Object>> select() {
        return commonService.select(TABLE_NAME);
    }

    public Map<String, Object> selectLastOne() {
        return commonService.selectLastOne(TABLE_NAME, PK_FIELD);
    }

    public boolean updateByFiledAndValue(long dataId, String fieldName, String fieldValue) {
        return commonService.updateByFiledAndValue(TABLE_NAME, dataId, fieldName, fieldValue);
    }

    public boolean del(long dataId) {
        return commonService.del(TABLE_NAME, dataId);
    }
}

标签:tableName,JDBC,return,String,spring,boot,import,sb,public
From: https://www.cnblogs.com/hhddd-1024/p/17128103.html

相关文章

  • springboot---多环境启动命令格式
    一、多环境命令启动maven插件中首先clean,再package打包,(修改字符集为UTF-8)使用cmd命令java-jars(Tab键自动补全) -spring.profiles.active=test启动项目  修改端......
  • spring-ImportSelector接口原理
    ImportSelector接口源码packageorg.springframework.context.annotation;importorg.springframework.core.type.AnnotationMetadata;/***Interfacetobeimple......
  • Springboot项目中注入bean失败的问题排查
    Springboot项目中注入bean失败的问题排查这是一个Spring常见的问题,下面我们从测试方法和普通方法出问题两个角度来下如何解决测试方法先查看目录是否有误测试类的包名......
  • Spring的配置、依赖注入、Bean的自动装配及注解开发
    Spring配置1.别名alias设置别名,为bean设置别名,可以设置多个别名<!--设置别名:在获取Bean的时候可以使用别名获取--><aliasname="userT"alias="userNew"/>......
  • 【IMX6ULL学习笔记】三、U-BOOT Makefile详解
    00、通识版本号VERSION=2016//主版本号PATCHLEVEL=03 //补丁版本号SUBLEVEL= //次版本号EXTRAVERSION=//附加版本信息NAME= //名字有关的,一般......
  • springboot基础配置yml
    yaml语法规则大小写敏感属性层级关系使用多行描述,每行结尾使用冒号结束使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)属性值前面添加空格(属性名与属......
  • springboot自定义校验工具类
    参考:https://betheme.net/news/txtlist_i120686v.html?action=onClickhttps://www.ngui.cc/el/2571188.html?action=onClick一、原生注解在springboot中,我们可以使用ja......
  • 申报发布的项目是用SpringSecurity-OAuth2模式登录认证的
    SpringSecurity-OAuth2万文详解https://blog.csdn.net/weixin_68320784/article/details/124103484清晰搞懂SpringSecurity的登录认证https://blog.csdn.net/Aqting/ar......
  • Hystrix + OpenFeign+ SpringCloud +Nacos
      注意:2023年2月 springcloud最新版本不支持nacos2.2和hystrix,测试发现以下这个版本还支持<groupId>org.springframework.cloud</groupI......
  • SpringBoot
    一.SpringBoot 1.1SpringBoot概述1.1.1什么是SpringBootSpringBoot是Spring项目中的一个子工程,与我们所熟知的Spring-framework同属于spring的产品:其最主......