SpringBoot使用JdbcTemplate访问操作数据库基本用法
Spring
对数据库的操作在jdbc上s面做了深层次的封装,使用spring的注入功能,可以把DataSource
注册到JdbcTemplate
之中。
JdbcTemplate
在Spring-jdbc
包下面,还需要Spring-tx
包支持,里面包含事务和异常控制.
一、建一个rumenz_springboot库
创建user表:
create table user( id int primary key auto_increment, name varchar(100) not null default '', domain varchar(100) not null default '' )engine=innodb default charset=utf8;
二、加入pom的依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency>
三、SpringBoot配置文件
application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/rumenz_springboot spring.datasource.username=root spring.datasource.password=root1234 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
四、创建User实体类
@Builder @Data @AllArgsConstructor public class User implements RowMapper { private Integer id; private String name; private String domain; @Override public Object mapRow(ResultSet rs, int rowNum) throws SQLException { User user=new User(); user.setId(rs.getInt("id")); user.setName(rs.getString("name")); user.setDomain(rs.getString("domain")); return user; } }
五、Service接口
UserService.java
package com.rumenz.lession14.controller.service; import com.rumenz.lession14.controller.entity.User; import java.util.List; /** * @className: UserService * @description: TODO 类描述 * @author: 入门小站 rumenz.com * @date: 2021/12/13 **/ public interface UserService { Integer save(User user); List<User> list(); Integer update(User user); Integer batchSave(); }
六、Service接口实现类
UserServiceImpl.java
package com.rumenz.lession14.controller.service.Impl; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.json.JsonMapper; import com.rumenz.lession14.controller.entity.User; import com.rumenz.lession14.controller.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; /** * @className: UserServiceImpl * @description: TODO 类描述 * @author: 入门小站 rumenz.com * @date: 2021/12/13 **/ @Service public class UserServiceImpl implements UserService { @Autowired private JdbcTemplate jdbcTemplate; @Override public Integer save(User user) { int reint = jdbcTemplate.update("insert into user(name,domain) values (?,?)", user.getName(), user.getDomain()); return reint; } @Override public Integer batchSave() { String sql="insert into user(name,domain) values(?,?)"; List<Object[]> par=new ArrayList<>(); for (int i = 0; i < 10; i++) { String[] s=new String[2]; s[0]="入门小站"+i; s[1]="https://rumenz.com/"+i; par.add(s); } int[] ints = jdbcTemplate.batchUpdate(sql, par); System.out.println(ints.toString()); return 0; } @Override public List<User> list() { //User实现RowMapper接口,实现接口里的mapRow方法。 List<User> list = jdbcTemplate.query("select * from user",new User()); return list; } @Override public Integer update(User user) { Integer reint=jdbcTemplate.update("update user set name=?,domain=? where id=?", user.getName(),user.getDomain(),user.getId()); // return reint; } }
七、Controller测试
RumenzController.java
package com.rumenz.lession14.controller; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.rumenz.lession14.controller.entity.User; import com.rumenz.lession14.controller.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; /** * @className: RumenzController * @description: TODO 类描述 * @author: 入门小站 rumenz.com * @date: 2021/12/13 **/ @RestController @RequestMapping("/rumenz") public class RumenzController { @Autowired private UserService userService; //添加数据 @GetMapping("/save") public String save(){ User user=User.builder().name("入门小站").domain("https://rumenz.com").build(); Integer reint = userService.save(user); return reint.toString(); } //批量添加数据 @GetMapping("/batchSave") public String batchSave(){ Integer reint = userService.batchSave(); return reint.toString(); } //查询数据 @GetMapping("/list") public String list() throws JsonProcessingException { List<User> list = userService.list(); ObjectMapper objectMapper=new ObjectMapper(); String val = objectMapper.writeValueAsString(list); return val; } //更新数据 @GetMapping("/update") public String update() throws JsonProcessingException { User user=User.builder().id(1).name("入门小站-修改").domain("https://tooltt.com").build(); Integer reint = userService.update(user); return reint.toString(); } }
八、总结
常用CURD操作大致使用以下三个方法:
- 1.execute方法,用于直接执行SQL语句
- 2.update方法,用户新增修改删除操作
- 3.query方法,用于查询方法
到此这篇关于SpringBoot使用JdbcTemplate访问操作数据库基本用法的文章就介绍到这了,更多相关SpringBoot使用JdbcTemplate访问操作数据库内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!
原文出处:https://blog.51cto.com/u_12214037/5025688
相关文章
解决springboot使用logback日志出现LOG_PATH_IS_UNDEFINED文件夹的问题
这篇文章主要介绍了解决springboot使用logback日志出现LOG_PATH_IS_UNDEFINED文件夹的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-28- 这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
- 这篇文章主要介绍了详解springBoot启动时找不到或无法加载主类解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-09-16
- 这篇文章主要介绍了SpringBoot集成Redis实现消息队列的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-10
- 这篇文章主要介绍了解决Springboot get请求是参数过长的情况,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-17
Spring Boot项目@RestController使用重定向redirect方式
这篇文章主要介绍了Spring Boot项目@RestController使用重定向redirect方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-02- 这篇文章主要介绍了Springboot+TCP监听服务器搭建过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-10-28
- 这篇文章主要介绍了springBoot 项目排除数据库启动方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-10
详解SpringBoot之访问静态资源(webapp...)
这篇文章主要介绍了详解SpringBoot之访问静态资源(webapp...),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-09-14- 这篇文章主要介绍了SpringBoot接口接收json参数解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-10-19
springboot中使用@Transactional注解事物不生效的坑
这篇文章主要介绍了springboot中使用@Transactional注解事物不生效的原因,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-26- 这篇文章主要介绍了springboot多模块包扫描问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-09-16
Springboot+MDC+traceId日志中打印唯一traceId
本文主要介绍了Springboot+MDC+traceId日志中打印唯一traceId,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-10-17- 这篇文章主要介绍了Springboot实现多线程注入bean的工具类操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-27
Springboot mybatis plus druid多数据源解决方案 dynamic-datasource的使用详解
这篇文章主要介绍了Springboot mybatis plus druid多数据源解决方案 dynamic-datasource的使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-11-18SpringBoot部署到Linux读取resources下的文件及遇到的坑
本文主要给大家介绍SpringBoot部署到Linux读取resources下的文件,在平时业务开发过程中,很多朋友在获取到文件内容乱码或者文件读取不到的问题,今天给大家分享小编遇到的坑及处理方案,感兴趣的朋友跟随小编一起看看吧...2021-06-21- 这篇文章主要介绍了springboot中nacos动态路由的配置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-11
SpringBoot高版本修改为低版本时测试类报错的解决方案
这篇文章主要介绍了SpringBoot高版本修改为低版本时测试类报错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-18解决Springboot整合shiro时静态资源被拦截的问题
这篇文章主要介绍了解决Springboot整合shiro时静态资源被拦截的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-26- 这篇文章主要介绍了详解SpringBoot读取配置文件的N种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-10