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层——数据;分别进行数据库的增、删、改、查。

 另外需要注意,Jdbc中没有具体的增删方法,所用的增删改都是用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 List
getAllUsers(){
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 List
selectAllUsers(){
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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Navicat远程连接远程数据库Mysql
下一篇:让你的Windows变成一台Mac

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月15日 09时44分16秒