springboot集合MySQL删除_SpringBoot集成Spring JdbcTemplate并完成增删改查操作
JdbcTemplate是Spring用来简化JDBC操作的核心类,有助于与Spring集成,并且避免了过多冗长的JDBC代码。不过在实际使用中,我们通常使用NamedParameterJdbcTemplate代替JdbcTemplate,因为在传入的参数不确定的时候,使用它会是更好的选择。在本文中,我会介绍如何在SpringBoot中使用NamedParameterJdbcTemplate来完成一整个增删改查的流程。
环境介绍JDK1.8+
SpringBoot:2.1.5.RELEASE
MYSQL:8.0.15
项目搭建:maven 依赖:主要是Jdbc、mysql-connector、lombok三个,lombok用于省略实体类中的getter/setter方法,看起来更加清爽
org.springframework.boot
spring-boot-starter-jdbc
mysql
mysql-connector-java
8.0.15
org.projectlombok
lombok
1.18.8
provided
application.properties配置:
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=true&autoReconnect=true&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.pool-size=30
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
server.port=8885
spring.application.name=user-service
有些版本url不添加serverTimezone=UTC的话会报错:
Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value '
此问题为时区问题,在 JDBC 的连接 url 部分加上 serverTimezone=UTC 即可。 - User实体类:
package com.liuj.userjdbc.domain;
import lombok.Data;
/**
* @author hgvgh
* @version 1.0
* @description
* @date 2019/5/31
*/
@Data
public class User {
private String id;
private String name;
private Integer age;
}DAO操作类:UserDao:
@Repository
public class UserDao {
@Autowired
private NamedParameterJdbcTemplate jdbcTemplate;
//其余代码省略
}
插入数据:
public int insert(User user) {
String sql = "INSERT INTO USER (ID, NAME, AGE) VALUES (:id, :name, :age)";
MapSqlParameterSource ps = new MapSqlParameterSource();
ps.addValue("id", user.getId());
ps.addValue("name", user.getName());
ps.addValue("age", user.getAge());
return jdbcTemplate.update(sql, ps);
}
根据ID查询单条数据:
public User getById(String id) {
String sql = "SELECT ID, NAME, AGE FROM USER WHERE ID = :id";
MapSqlParameterSource ps = new MapSqlParameterSource();
ps.addValue("id", id);
RowMapper rm = BeanPropertyRowMapper.newInstance(User.class);
return jdbcTemplate.queryForObject(sql, ps, rm);
}
多条件查询数据集合
(带有模糊查询,需要注意的是LIKE '%' :name '%'中空格不能少):
public List queryList(User user) {
StringBuilder sb = new StringBuilder();
sb.append("SELECT ID, NAME, AGE FROM USER WHERE 1 =1 ");
MapSqlParameterSource ps = new MapSqlParameterSource();
if (!StringUtils.isEmpty(user.getId())) {
sb.append(" AND ID = :id ");
ps.addValue("id", user.getId());
}
if (!StringUtils.isEmpty(user.getName())) {
sb.append(" AND NAME LIKE '%' :name '%' ");
ps.addValue("name", user.getName());
}
if (!StringUtils.isEmpty(user.getAge())) {
sb.append(" AND AGE = :age ");
ps.addValue("age", user.getAge());
}
return jdbcTemplate.query(sb.toString(), ps, BeanPropertyRowMapper.newInstance(User.class));
}
根据条件查询数据条数:
public int count(User user) {
StringBuilder sb = new StringBuilder();
sb.append("SELECT COUNT(1) FROM USER WHERE 1 =1 ");
MapSqlParameterSource ps = new MapSqlParameterSource();
if (!StringUtils.isEmpty(user.getId())) {
sb.append(" AND ID = :id ");
ps.addValue("id", user.getId());
}
if (!StringUtils.isEmpty(user.getName())) {
sb.append(" AND NAME LIKE '%' :name '%' ");
ps.addValue("name", user.getName());
}
if (!StringUtils.isEmpty(user.getAge())) {
sb.append(" AND AGE = :age ");
ps.addValue("age", user.getAge());
}
return jdbcTemplate.queryForObject(sb.toString(), ps, Integer.class).intValue();
}
更新数据:
public int update(User user) {
String sql = "UPDATE USER SET NAME = :name,AGE = :age WHERE ID = :id;";
SqlParameterSource ps = new BeanPropertySqlParameterSource(user);
return jdbcTemplate.update(sql, ps);
}
根据ID删除单条数据:
public int deleteById(String id) {
MapSqlParameterSource ps = new MapSqlParameterSource();
String sql = "DELETE FROM USER WHERE ID = :id";
ps.addValue("id", id);
return jdbcTemplate.update(sql, ps);
}
批量插入数据:
public void batchInsert(List users) {
String sql = "INSERT INTO USER(ID, NAME, AGE) VALUES (:id, :name, :age)";
SqlParameterSource[] batchValues = SqlParameterSourceUtils.createBatch(users.toArray());
jdbcTemplate.batchUpdate(sql, batchValues);
}
批量更新(删除操作类似):
public void batchUpdate(List users) {
String sql = "UPDATE USER SET NAME = :name,AGE = :age WHERE id = :id;";
SqlParameterSource[] batch = SqlParameterSourceUtils.createBatch(users.toArray());
jdbcTemplate.batchUpdate(sql, batch);
}
附:数据库脚本:
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` varchar(255) NOT NULL,
`name` varchar(255) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
springboot集合MySQL删除_SpringBoot集成Spring JdbcTemplate并完成增删改查操作相关推荐
- Spring整合JDBCTemplate实现数据库增删改查操作
SpringJDBC: 正常jdbc连接数据库流程: 1.注册驱动 2. 获取连接 2. 获取Statement或者PreparedStatement对象 3. 执行sql操作 4. 处理结果集 查询 ...
- oracle 删除xml记录,Oracle之xml的增删改查操作
工作之余,总结一下xml操作的一些方法和心得! tip: xmltype函数是将clob字段转成xmltype类型的函数,若字段本身为xmltype类型则不需要引用xmltype()函数 同名标签用数 ...
- 1.mysql sql语句介于两者时间之内的增删改查操作
1.创建表a CREATE TABLE a ( m int(11) NOT NULL, n int(11) NOT NULL DEFAULT 0, x varchar(255) DEFAULT NUL ...
- mysql删除分表键_一文看懂 MySQL 分区和分表,提高表增删改查效率
原标题:一文看懂 MySQL 分区和分表,提高表增删改查效率 作者:冯帅,精通Oracle. MySQL. 擅长异构数据库数据同步及迁移.数据库的设计和调优,对高可用方案有深入研究. MySQL分区和 ...
- Spring Boot (十五): Spring Boot + Jpa + Thymeleaf 增删改查示例
<p>这篇文章介绍如何使用 Jpa 和 Thymeleaf 做一个增删改查的示例.</p> 先和大家聊聊我为什么喜欢写这种脚手架的项目,在我学习一门新技术的时候,总是想快速的搭 ...
- c mysql 添加数据类型_MYSQL的常用命令和增删改查语句和数据类型
连接命令:mysql -h[主机地址] -u[用户名] -p[用户密码] 创建数据库:create database [库名] 显示所有数据库: show databases; 打开数据库:use [ ...
- JAVA-使用MyEclipse连接MySQL进行增删改查操作
前言 在笔者学习搭建WEB项目的时候,遇到过不少问题,如连接驱动失败,连接数据库失败,通过SQL操作数据库失败等等. 今天就做个笔记,关于如何通过JDBC连接MySQL,以及如何在MyEclips ...
- python操作mysql的增删改查_详解使用pymysql在python中对mysql的增删改查操作(综合)...
这一次将使用pymysql来进行一次对MySQL的增删改查的全部操作,相当于对前五次的总结: 先查阅数据库: 现在编写源码进行增删改查操作,源码为: #!/usr/bin/python #coding ...
- java调用oracle删除,使用IDEA对Oracle数据库进行简单增删改查操作
1.1 java中的数据存储技术 在java中,数据库存取技术可分为如下几类: 1.jdbc直接访问数据库 2.jdo(java data object)是java对象持久化的新的规范,也是一个用于存 ...
最新文章
- 第十五章 动态规划——最优二叉搜索树
- 分布式熔断降级平台aegis
- Python自学之乐-Python字典实现简单的三级菜单
- python写入数据的一种措施_Python 文件数据读写的具体实现
- 移植mysql到嵌入式ARM平台
- C# semaphore的使用
- (25)二分频verilog与VHDL编码(学无止境)
- JSK-353 求同存异【暴力+排序+二分】
- mysql.sock文件丢失的一个原因
- session与cookie的区别和用法
- 反射注解知识点复习(第一次)
- 计算机组成原理核心总结
- Python零基础福利来了!
- 在线画板_在线画画_在线画图工具-速写板
- excel数据分析 - 17个计算统计类函数
- 计算机试图启动宏,打开电子表格时,将提示禁用或启用宏的解决方案
- base64解码中文乱码
- Irvue for Mac(苹果壁纸软件)
- 2021年计算机类考研人数,2021年考研79所院校报考人数汇总
- 微信的营销策略你了解多少?
热门文章
- 【Ubuntu日常技巧】Ubuntu开机自动设置笔记本屏幕亮度
- Monte Carlo and bootstrap and Permutation Test
- /usr/bin/yum: /usr/bin/python3.6.8: bad interpreter: No such file or directo
- 如何提高ElasticSearch 索引速度
- [R]提高R语言速度
- vue前端项目启动报错,node-sass安装失败
- 用Python和Google AppEngine开发基于Google架构的应用软件
- python语言中不属于组合数据类型的是_下列不属于组合数据类型的是()。
- 小米平板4无信号服务器,小米平板4黑屏假死怎么办
- 股指期货套期保值、套利、投机