SpringBoot整合JdbcTemplate

一、数据准备

  1. CREATE TABLE `tb_user` (

  2. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',

  3. `username` varchar(50) NOT NULL COMMENT '用户名',

  4. `age` int(11) NOT NULL COMMENT '年龄',

  5. `ctm` datetime NOT NULL COMMENT '创建时间',

  6. PRIMARY KEY (`id`)

  7. ) ENGINE=InnoDB DEFAULT CHARSET=utf8

  1. INSERT INTO `db_test`.`tb_user` (`username`, `age`, `ctm`) VALUES('张三', '18', NOW()) ;

  2. INSERT INTO `db_test`.`tb_user` (`username`, `age`, `ctm`) VALUES('李四', '20', NOW()) ;

  3. INSERT INTO `db_test`.`tb_user` (`username`, `age`, `ctm`) VALUES('王五', '19', NOW()) ;

二、引入依赖

  1. <!-- jdbcTemplate -->

  2. <dependency>

  3. <groupId>org.springframework.boot</groupId>

  4. <artifactId>spring-boot-starter-jdbc</artifactId>

  5. </dependency>

  6. <!-- MySQL连接 -->

  7. <dependency>

  8. <groupId>mysql</groupId>

  9. <artifactId>mysql-connector-java</artifactId>

  10. <scope>runtime</scope>

  11. </dependency>

另外web依赖也需要,因为我们采用MVC模式。

  1. <!-- Add typical dependencies for a web application -->

  2. <dependency>

  3. <groupId>org.springframework.boot</groupId>

  4. <artifactId>spring-boot-starter-web</artifactId>

  5. </dependency>

三、数据库配置文件

一如既往,我们采用yaml文件配置,当然properties文件也是一样。

注意点,SpringBoot默认采用tomcat-jdbc连接池,如果需要C3P0,DBCP,Druid等作为连接池,需要加入相关依赖以及配置,这里不作说明,采用默认配置即可。

  1. spring:

  2. datasource:

  3. driver-class-name: com.mysql.jdbc.Driver

  4. url: jdbc:mysql://localhost:3306/db_user

  5. username: root

  6. password: root

四、代码

项目结构如下:

实体类User.class

  1. package cn.saytime.bean;

  2. import java.util.Date;

  3. /**

  4. * @ClassName cn.saytime.bean.User

  5. * @Description

  6. * @date 2017-07-04 22:47:28

  7. */

  8. public class User {

  9. private int id;

  10. private String username;

  11. private int age;

  12. private Date ctm;

  13. public User() {

  14. }

  15. public User(String username, int age) {

  16. this.username = username;

  17. this.age = age;

  18. this.ctm = new Date();

  19. }

  20. // Getter、Setter

  21. }

UserDao.class

  1. package cn.saytime.dao;

  2. import cn.saytime.bean.User;

  3. import java.util.List;

  4. /**

  5. * @ClassName cn.saytime.dao.UserDao

  6. * @Description

  7. * @date 2017-07-04 22:48:45

  8. */

  9. public interface UserDao {

  10. User getUserById(Integer id);

  11. public List<User> getUserList();

  12. public int add(User user);

  13. public int update(Integer id, User user);

  14. public int delete(Integer id);

  15. }

UserDaoImpl.class

  1. package cn.saytime.dao.impl;

  2. import cn.saytime.bean.User;

  3. import cn.saytime.dao.UserDao;

  4. import org.springframework.beans.factory.annotation.Autowired;

  5. import org.springframework.jdbc.core.BeanPropertyRowMapper;

  6. import org.springframework.jdbc.core.JdbcTemplate;

  7. import org.springframework.stereotype.Repository;

  8. import java.util.Date;

  9. import java.util.List;

  10. /**

  11. * @ClassName cn.saytime.dao.impl.UserDaoImpl

  12. * @Description

  13. * @date 2017-07-04 22:50:07

  14. */

  15. @Repository

  16. public class UserDaoImpl implements UserDao {

  17. @Autowired

  18. private JdbcTemplate jdbcTemplate;

  19. @Override

  20. public User getUserById(Integer id) {

  21. List<User> list = jdbcTemplate.query("select * from tb_user where id = ?", new Object[]{id}, new BeanPropertyRowMapper(User.class));

  22. if(list!=null && list.size()>0){

  23. return list.get(0);

  24. }else{

  25. return null;

  26. }

  27. }

  28. @Override

  29. public List<User> getUserList() {

  30. List<User> list = jdbcTemplate.query("select * from tb_user", new Object[]{}, new BeanPropertyRowMapper(User.class));

  31. if(list!=null && list.size()>0){

  32. return list;

  33. }else{

  34. return null;

  35. }

  36. }

  37. @Override

  38. public int add(User user) {

  39. return jdbcTemplate.update("insert into tb_user(username, age, ctm) values(?, ?, ?)",

  40. user.getUsername(),user.getAge(), new Date());

  41. }

  42. @Override

  43. public int update(Integer id, User user) {

  44. return jdbcTemplate.update("UPDATE tb_user SET username = ? , age = ? WHERE id=?",

  45. user.getUsername(),user.getAge(), id);

  46. }

  47. @Override

  48. public int delete(Integer id) {

  49. return jdbcTemplate.update("DELETE from tb_user where id = ? ",id);

  50. }

  51. }

UserService.class

  1. package cn.saytime.service;

  2. import cn.saytime.bean.User;

  3. import org.springframework.stereotype.Service;

  4. import java.util.List;

  5. /**

  6. * @ClassName cn.saytime.service.UserService

  7. * @Description

  8. * @date 2017-07-04 22:49:05

  9. */

  10. public interface UserService {

  11. User getUserById(Integer id);

  12. public List<User> getUserList();

  13. public int add(User user);

  14. public int update(Integer id, User user);

  15. public int delete(Integer id);

  16. }

UserServiceimpl.class

  1. package cn.saytime.service.impl;

  2. import cn.saytime.bean.User;

  3. import cn.saytime.dao.UserDao;

  4. import cn.saytime.service.UserService;

  5. import org.springframework.beans.factory.annotation.Autowired;

  6. import org.springframework.stereotype.Service;

  7. import java.util.List;

  8. /**

  9. * @ClassName cn.saytime.service.impl.UserServiceImpl

  10. * @Description

  11. * @date 2017-07-04 22:49:27

  12. */

  13. @Service

  14. public class UserServiceImpl implements UserService {

  15. @Autowired

  16. private UserDao userDao;

  17. @Override

  18. public User getUserById(Integer id) {

  19. return userDao.getUserById(id);

  20. }

  21. @Override

  22. public List<User> getUserList() {

  23. return userDao.getUserList();

  24. }

  25. @Override

  26. public int add(User user) {

  27. return userDao.add(user);

  28. }

  29. @Override

  30. public int update(Integer id, User user) {

  31. return userDao.update(id, user);

  32. }

  33. @Override

  34. public int delete(Integer id) {

  35. return userDao.delete(id);

  36. }

  37. }

JsonResult.class 通用json返回类

  1. package cn.saytime.bean;

  2. public class JsonResult {

  3. private String status = null;

  4. private Object result = null;

  5. public JsonResult status(String status) {

  6. this.status = status;

  7. return this;

  8. }

  9. // Getter Setter

  10. }

UserController.class(Restful风格)

  1. package cn.saytime.web;

  2. import cn.saytime.bean.JsonResult;

  3. import cn.saytime.bean.User;

  4. import cn.saytime.service.UserService;

  5. import org.springframework.beans.factory.annotation.Autowired;

  6. import org.springframework.http.HttpStatus;

  7. import org.springframework.http.ResponseEntity;

  8. import org.springframework.web.bind.annotation.PathVariable;

  9. import org.springframework.web.bind.annotation.RequestBody;

  10. import org.springframework.web.bind.annotation.RequestMapping;

  11. import org.springframework.web.bind.annotation.RequestMethod;

  12. import org.springframework.web.bind.annotation.RequestParam;

  13. import org.springframework.web.bind.annotation.RestController;

  14. import java.util.List;

  15. /**

  16. * @ClassName cn.saytime.web.UserController

  17. * @Description

  18. * @date 2017-07-04 22:46:14

  19. */

  20. @RestController

  21. public class UserController {

  22. @Autowired

  23. private UserService userService;

  24. /**

  25. * 根据ID查询用户

  26. * @param id

  27. * @return

  28. */

  29. @RequestMapping(value = "user/{id}", method = RequestMethod.GET)

  30. public ResponseEntity<JsonResult> getUserById (@PathVariable(value = "id") Integer id){

  31. JsonResult r = new JsonResult();

  32. try {

  33. User user = userService.getUserById(id);

  34. r.setResult(user);

  35. r.setStatus("ok");

  36. } catch (Exception e) {

  37. r.setResult(e.getClass().getName() + ":" + e.getMessage());

  38. r.setStatus("error");

  39. e.printStackTrace();

  40. }

  41. return ResponseEntity.ok(r);

  42. }

  43. /**

  44. * 查询用户列表

  45. * @return

  46. */

  47. @RequestMapping(value = "users", method = RequestMethod.GET)

  48. public ResponseEntity<JsonResult> getUserList (){

  49. JsonResult r = new JsonResult();

  50. try {

  51. List<User> users = userService.getUserList();

  52. r.setResult(users);

  53. r.setStatus("ok");

  54. } catch (Exception e) {

  55. r.setResult(e.getClass().getName() + ":" + e.getMessage());

  56. r.setStatus("error");

  57. e.printStackTrace();

  58. }

  59. return ResponseEntity.ok(r);

  60. }

  61. /**

  62. * 添加用户

  63. * @param user

  64. * @return

  65. */

  66. @RequestMapping(value = "user", method = RequestMethod.POST)

  67. public ResponseEntity<JsonResult> add (@RequestBody User user){

  68. JsonResult r = new JsonResult();

  69. try {

  70. int orderId = userService.add(user);

  71. if (orderId < 0) {

  72. r.setResult(orderId);

  73. r.setStatus("fail");

  74. } else {

  75. r.setResult(orderId);

  76. r.setStatus("ok");

  77. }

  78. } catch (Exception e) {

  79. r.setResult(e.getClass().getName() + ":" + e.getMessage());

  80. r.setStatus("error");

  81. e.printStackTrace();

  82. }

  83. return ResponseEntity.ok(r);

  84. }

  85. /**

  86. * 根据id删除用户

  87. * @param id

  88. * @return

  89. */

  90. @RequestMapping(value = "user/{id}", method = RequestMethod.DELETE)

  91. public ResponseEntity<JsonResult> delete (@PathVariable(value = "id") Integer id){

  92. JsonResult r = new JsonResult();

  93. try {

  94. int ret = userService.delete(id);

  95. if (ret < 0) {

  96. r.setResult(ret);

  97. r.setStatus("fail");

  98. } else {

  99. r.setResult(ret);

  100. r.setStatus("ok");

  101. }

  102. } catch (Exception e) {

  103. r.setResult(e.getClass().getName() + ":" + e.getMessage());

  104. r.setStatus("error");

  105. e.printStackTrace();

  106. }

  107. return ResponseEntity.ok(r);

  108. }

  109. /**

  110. * 根据id修改用户信息

  111. * @param user

  112. * @return

  113. */

  114. @RequestMapping(value = "user/{id}", method = RequestMethod.PUT)

  115. public ResponseEntity<JsonResult> update (@PathVariable("id") Integer id, @RequestBody User user){

  116. JsonResult r = new JsonResult();

  117. try {

  118. int ret = userService.update(id, user);

  119. if (ret < 0) {

  120. r.setResult(ret);

  121. r.setStatus("fail");

  122. } else {

  123. r.setResult(ret);

  124. r.setStatus("ok");

  125. }

  126. } catch (Exception e) {

  127. r.setResult(e.getClass().getName() + ":" + e.getMessage());

  128. r.setStatus("error");

  129. e.printStackTrace();

  130. }

  131. return ResponseEntity.ok(r);

  132. }

  133. }

五、测试

GET http://localhost:8080/users 获取用户列表 

GET http://localhost:8080/user/{id} 根据ID获取用户信息 

POST http://localhost:8080/user 添加用户(注意提交格式以及内容) 

PUT http://localhost:8080/user/{id} 根据ID修改用户信息 

再次查询所有用户信息

DELETE http://localhost:8080/user/{id} 根据ID删除用户

最终用户数据

测试结果通过,ok

SpringBoot整合JdbcTemplate相关推荐

  1. druid连接池_SpringBoot整合JDBCTemplate及Druid连接池

    SpringBoot整合JDBCTemplate 本篇文章将会介绍用SpringBoot整合JDBCTemplate来实现简单的增删改查的功能.及通过SpringBoot整合Druid数据库连接池实时 ...

  2. 玩转springboot:整合JdbcTemplate访问数据库进行操作

    这篇文章我们看一下springboot整合jdbc,做一个小例子来讲解. 数据源配置 在pom.xml文件中导入 <dependency><groupId>org.spring ...

  3. Java学习之SpringBoot整合SSM Demo

    背景:在Java Web中Spring家族有着很重要的地位,之前JAVA开发需要做很多的配置,一堆的配置文件和部署调试一直是JavaWeb开发中的一大诟病,但现在Spring推出了SpringBoot ...

  4. SpringBoot 精通系列-SpringBoot整合Redis的常用操作

    导语   在之前的博客中介绍过关于Memcache的使用,这篇文章中主要介绍关于Redis的有关概念及如何与SpringBoot整合使用.   首先Redis是目前使用最为广泛的缓存中间件,相比较Me ...

  5. druid 手动指定数据源_Spring Boot2 系列教程(二十)整合JdbcTemplate 多数据源

    多数据源配置也算是一个常见的开发需求,Spring 和 SpringBoot 中,对此都有相应的解决方案,不过一般来说,如果有多数据源的需求,我还是建议首选分布式数据库中间件 MyCat 去解决相关问 ...

  6. Springboot整合JPA多数据源(Oracle+Mysql)

    Springboot整合JPA多数据源 1. Maven 2. 基本配置 2.1 DataSource 3. 多数据源配置 3.1 JpaConfigOracle 3.2 JpaConfigMysql ...

  7. SpringBoot | SpringBoot整合数据库

    文章目录 SpringBoot整合数据库 前言:关于本节的问题汇总 1.整合JDBC 1.1.SpringData简介 1.2.整合JDBC 1.3.分析源码 1.4.JdbcTemplate 1.5 ...

  8. SpringBoot整合第三方技术学习笔记(自用)

    SpringBoot整合第三方技术学习笔记 搬运黑马视频配套笔记 KF-4.数据层解决方案 KF-4-1.SQL 回忆一下之前做SSMP整合的时候数据层解决方案涉及到了哪些技术?MySQL数据库与My ...

  9. SpringBoot整合Druid连接池

    SpringBoot整合Druid连接池 前言 第一种整合方式 自定义的方式 引入Druid依赖 配置文件 配置类 实现监控功能 开启SQL防火墙 实现web应用 访问Druid页面需登录 第二种整合 ...

最新文章

  1. 【推荐】大型网站图片服务器架构的演进
  2. python数字类型-详解python的数字类型变量与其方法
  3. CSS笔记(十)position属性与定位
  4. Windows下VisualSVN Server的安装与配置方法(图文)
  5. Important table for launchpad Designer and configuration
  6. 又见链表 --- 另一种Creat方式与反转
  7. 10亿级!淘宝大规模图像检索引擎算法设计概览
  8. java Stream 流
  9. Windows下多线程的使用
  10. android 距离设置多少dp核实,【Android学习】android布局中几个距离单位的区别:px、dp、sp...
  11. JiBX 入门级使用
  12. linux中用c语言做一个游戏主播,当一个游戏主播需要做什么直播准备?
  13. java未_Java未被捕获的异常
  14. mysql 超时异常捕获_Mysql的链接超时异常CommunicationsException
  15. python学习——python平台搭建
  16. mysql的max_allowed_packet配置
  17. http请求 405错误 方法不被允许 (Method not allowed)
  18. 《操作系统真象还原》第十四章 ---- 实现文件系统 任务繁多 饭得一口口吃路得一步步走啊(上二)
  19. 精通 Python OpenCV4:第一部分
  20. 从零开始搭建服务器之登录和登出远程服务器

热门文章

  1. 【Arduino】OTTO机器人(做二次开发的一点点总结)
  2. mysql not exists优化_MySQL优化--NOT EXISTS和LEFT JOIN方式差异
  3. Java面试之锁-自旋锁
  4. RabbitMQ入门:路由(Routing)
  5. C#的发展历程第五 - C# 7开始进入快速迭代道路
  6. 我的Markdown的利器——Markdown Here、有道云笔记、iPic
  7. 转: React系统的入门系统
  8. nginx 平滑升级
  9. 为什么要搭建自己的缓存管理模块?
  10. git tag的使用