spring-boot JdbcTemplate增删改查笔记

本文详细记录了使用Spring Boot的JdbcTemplate进行数据库的查询、修改、新增、删除以及批量插入等操作,并探讨了如何处理SQL保留字的问题,提供了一定的实践参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 查询操作

	//列表查询
	List<Map<string, Object>> results = jdbctemplate.query("select * from tableName")
	// 查询数量
	jdbcTemplate.queryForInt("select count(0) from tableName");
	//查询自增id
	String sql = "show table status where Name = 'tableName'";
    Map<String, Object> queryData = jdbcTemplate.queryForMap(sql);

2. 修改操作

sql: update tableName set param = "1" WHERE id = 25
jdbcTemplate.update(sql)

3. 新增操作

	jdbcTemplate.update("insert into tb_test1(name,password) values(?,?)",   
                new Object[]{user.getUsername(),user.getPassword()});  

4. 删除操作

jdbcTemplate.update(  
                "delete from tb_test1 where id = ?",   
                new Object[]{user.getId()},   
                new int[]{java.sql.Types.INTEGER});  

5. 批量插入,并返回插入数量

import org.springframework.jdbc.core.BatchPreparedStatementSetter;
String sql = "update tableName set param = '1' WHERE id = 25"
int[] updateCounts = jdbcTemplate.batchUpdate(sqlStr, new BatchPreparedStatementSetter() {
            @Override
            public int getBatchSize() {
                return data.size();
            }
            @Override
            public void setValues(PreparedStatement ps, int i)
                    throws SQLException {
                DataObject dataItem = data.get(i);
                ps.setString(1, dataItem.getTitle());
                ps.setInt(2, dataItem.getRepo_id());
                ps.setString(3, dataItem.getType());
                ps.setString(4, dataItem.getParams());
            }
        });
        return updateCounts.length;

6. 一些保留字的处理

6.1 查看保留字

mysql是支持使用关键字做字段名的,但是针对保留关键字是必须要加引用。mysql官网提供了三个例子是可以很好的说明这些的。

interval begin、end都是关键字,interval是保留关键字,因此会报错

mysql> CREATE TABLE interval (begin INT, end INT);
ERROR 1064 (42000): You have an error in your SQL syntax ...
near 'interval (begin INT, end INT)'

当给interval加上引用’'后便可以正确执行该sql语句,也不会报begin、end的错,因为这是mysql允许的,但是不推荐这个用法,谁知道升级之后会不会变成保留字。。。。。。

mysql> CREATE TABLE `interval` (begin INT, end INT);
Query OK, 0 rows affected (0.01 sec)

(这个可以略过,,,,,反正不推荐使用关键字做这些事,)还有一种情况——内置函数的名字,官网是这样说的:

Names of built-in functions are permitted as identifiers but may 
require care to be used as such

mysql> CREATE TABLE mydb.interval (begin INT, end INT);
Query OK, 0 rows affected (0.01 sec)

参考链接

1. [Spring中jdbcTemplate的用法实例(一)](http://lehsyh.iteye.com/blog/1579737)
2. [SQL 多条件查询](https://blog.youkuaiyun.com/sjf0115/article/details/8720520)

持续更新中…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值