Springboot JdbcTemplate查询输入中文报错的debug
学到spring data,其中提供了jdbcTemplate来使用jdbc,比原生jdbc好用很多,排除了很多容易犯的错误,且不需要自己关闭
在我查询数据库中last_name = 秦疆这样的sql语句时,报错
一、原生数据库console测试
select * from employee where last_name = "秦疆"


发现并没有报错
二、Java代码排错
//修改用户信息
@GetMapping("/update/{name}")
public String updateUser2(@PathVariable("name") String name){
//插入语句
String sql = "update employee set last_name=?,email=? where last_name=" + name;
//数据
Object[] objects = new Object[2];
objects[0] = "秦疆";
objects[1] = "24736743@sina.com";
jdbcTemplate.update(sql,objects);
//查询
return "updateOk";
}


感到很奇怪,我把sql打印sout一下

发现这与原生MySQL console是不一样的,少了`号
三、修改代码
//修改用户信息
@GetMapping("/update/{name}")
public String updateUser(@PathVariable("name") String name){
//插入语句
String sql = "update employee set last_name=?,email=? where last_name=?";
//数据
Object[] objects = new Object[3];
objects[0] = "秦疆";
objects[1] = "24736743@sina.com";
objects[2] = name;
jdbcTemplate.update(sql,objects);
//查询
return "updateOk";
}
之前是字符串拼接肯定没有符号,这次让jdbcTemplate来做

控制台返回正确

数据库中同样完成了更改
四、总结
在数据库sql语句中,尽量少用字符串拼接这种原始操作

浙公网安备 33010602011771号