Spring Boot 整合持久层技术——使用JdbcTemlate实现数据库的增删改查
发布日期:2021-06-30 22:58:39
浏览次数:2
分类:技术文章
本文共 4246 字,大约阅读时间需要 14 分钟。
当然,目前国内最主流是还是springBoot+mybatis来对数据库进行操作,很少会用到JdbcTemlate来实现对数据库的操作,因此可以作为了解。
一、构建Spring工程
1.依赖
如果说是本地连接数据库只需要mysql驱动就够了,但是远程连接的话,需要加入jdbcApi依赖,并且会用到alibaba的数据库连接池,后面会叙述。2.创建数据库
3.配置数据库连接
# 服务器端口,如果不配置默认是8080端口server.port=8080# 数据库设置spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver#test为我的数据库名称spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8#root为mysql用户名spring.datasource.username=root#password为数据库密码spring.datasource.password=Passw0rd!
4.创建实体类
二、进行数据库的增、删、改、查。
在对数据库进行增删改查操作的时候,按照传统的写法:controller
层——接口;service
层——业务逻辑;Bean
层——数据;分别进行数据库的增、删、改、查。
update
,具体实现取决于update里面的sql语句。 1.编写实体类
User
package com.alvin.testmysql.bean;public class User { private Long id; private String username; private String gender; @Override public String toString() { return "User{" + "id=" + id + ", username='" + username + '\'' + ", gender='" + gender + '\'' + '}'; }//省略getter/setter方法}
UserService
@Servicepublic class UserService { @Autowired JdbcTemplate jdbcTemplate; //增 public Integer addUser(User user){ return jdbcTemplate.update( "insert into user (username,gender) values (?,?);" ,user.getUsername(),user.getGender()); } //改 public Integer updateUser(User user){ return jdbcTemplate.update( "update user set username = ? where id = ?;" ,user.getUsername(),user.getId()); } //删 public Integer deleteUser(User user){ return jdbcTemplate.update( "delete from user where id =?",user.getId()); } //查 public ListgetAllUsers(){ return jdbcTemplate.query("select * from user", new RowMapper () { @Override public User mapRow(ResultSet resultSet, int i) throws SQLException { User user = new User(); long id = resultSet.getLong("id"); String username = resultSet.getString("username"); String gender = resultSet.getString("gender"); user.setId(id); user.setUsername(username); user.setGender(gender); return user; } }); } /** * 如果说你的数据库表里的字段以及属性和Bean中的字段名和属性严格一一对应, * 那么可以用下面这个简单的方法来进行数据库的查询 */ public List getAllUsers2(){ return jdbcTemplate.query( "select * from user" ,new BeanPropertyRowMapper<>(User.class)); }}
UserController
@RestControllerpublic class UserController { @Autowired JdbcTemplate jdbcTemplate; @Autowired UserService userService; //增 @GetMapping("/addUser") public User addUser( ){ User user = new User(); user.setUsername("kitty"); user.setGender("女"); userService.addUser(user); return user; } //改 @GetMapping("/updateUser") public User updateUser( @RequestParam Long id ){ User user = new User(); user.setUsername("小红"); user.setId(id); userService.updateUser(user); return user; } //删 @GetMapping("/deleteUser") public User deleteUser( @RequestParam Long id ){ User user = new User(); user.setId(id); userService.deleteUser(user); return user; } //查 @GetMapping("/selectUser") public ListselectAllUsers(){ List userList = userService.getAllUsers(); return userList; } //查2 @GetMapping("/selectUser2") public List selectAllUsers2(){ List userList = userService.getAllUsers2(); return userList; }
2.分别用浏览器访问即可实现
增:localhost:8080/addUser
localhost:8080/updateUser?id=1
删:localhost:8080/deleteUser?id=1
查:localhost:8080/selectUser
查2:localhost:8080/selectUser2
两个查询方法的区别:
如果说你的数据库表里的字段以及属性和Bean中的字段名和属性严格一一对应, 那么可以用selectUser2
来进行数据库的查询,一般情况下我们都要求一一对应,防止因为字段名不一致而导致不必要的错误。 三、心得体会
通过对JdbcTemlate的使用可以发现并不是很方便,尤其是把sql写入业务逻辑中去,会增加代码的阅读难度,耦合性比较高,但是因为有Spring的提供,相比于jdbc简单了很多,基本上留给我们的就是对sql语句的编写。因此,JdbcTemlate必须于Spring框架结合在一起使用、不支持数据库跨平台并且默认没有缓存。
转载地址:https://lukeyalvin.blog.csdn.net/article/details/104113493 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年04月15日 09时44分16秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
一份来自掘金社区的开发者报告
2019-05-01
一本书搞定Python入门到实践
2019-05-01
20-40k+期权,蚂蚁金服招 Python 开发工程师
2019-05-01
2017半年文章合集(建议收藏)
2019-05-01
简析 __init__、__new__、__call__ 方法
2019-05-01
程序员如何优雅地写公众号
2019-05-01
@classmethod与@staticmethod的区别
2019-05-01
只有1%的程序员搞懂过浮点数陷阱
2019-05-01
一个网络请求的历险之旅
2019-05-01
Google 为什么把几十亿行代码放在一个库
2019-05-01
Erlang 之父 Joe Armstrong 去世
2019-05-01
来不及了,世界读书日,送10本书
2019-05-01
速来,上期中奖名单
2019-05-01
一名 Google 工程师的大数据处理经验
2019-05-01
30分钟学会pyecharts数据可视化
2019-05-01
从一个骗子身上学到的
2019-05-01
关于Python爬虫,这里有一条高效的学习路径
2019-05-01
Python学习指南,看这篇清晰多了!
2019-05-01
Oracle裁员,3点建议
2019-05-01
「忙」只是借口
2019-05-01