springboot使用JdbcTemplate完成对数据库的增删改查

首先新建一个简单的数据表,通过操作这个数据表来进行演示

 
  1. DROP TABLE IF EXISTS `items`;

  2. CREATE TABLE `items` (

  3. `id` int(11) NOT NULL AUTO_INCREMENT,

  4. `title` varchar(255) DEFAULT NULL,

  5. `name` varchar(10) DEFAULT NULL,

  6. `detail` varchar(255) DEFAULT NULL,

  7. PRIMARY KEY (`id`)

  8. ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

引入JdbcTemplate的maven依赖及连接类

 
  1. <dependency>

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

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

  4. </dependency>

  5. <dependency>

  6.   <groupId>mysql</groupId>

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

  8.   <scope>runtime</scope>

  9. </dependency>


在application.properties文件配置mysql的驱动类,数据库地址,数据库账号、密码信息,application.properties新建在src/main/resource文件夹下

 
  1. spring.datasource.url=jdbc:mysql://127.0.0.1:3306/spring?useSSL=false

  2. spring.datasource.username=root

  3. spring.datasource.password=123456

  4. spring.datasource.driver-class-name=com.mysql.jdbc.Driver

  5. spring.datasource.max-idle=10

  6. spring.datasource.max-wait=10000

  7. spring.datasource.min-idle=5

  8. spring.datasource.initial-size=5

  9.  
  10. server.port=8080

  11. server.session.timeout=10

  12. server.tomcat.uri-encoding=UTF-8

新建一个实体类,属性对应sql字段

 
  1. package org.amuxia.start;

  2.  
  3. public class Items {

  4. private Integer id;

  5. private String title;

  6. private String name;

  7. private String detail;

  8.  
  9. public Integer getId() {

  10. return id;

  11. }

  12.  
  13. public void setId(Integer id) {

  14. this.id = id;

  15. }

  16.  
  17. public String getTitle() {

  18. return title;

  19. }

  20.  
  21. public void setTitle(String title) {

  22. this.title = title;

  23. }

  24.  
  25. public String getName() {

  26. return name;

  27. }

  28.  
  29. public void setName(String name) {

  30. this.name = name;

  31. }

  32.  
  33. public String getDetail() {

  34. return detail;

  35. }

  36.  
  37. public void setDetail(String detail) {

  38. this.detail = detail;

  39. }

  40.  
  41. public Items() {

  42. super();

  43. // TODO Auto-generated constructor stub

  44. }

  45.  
  46. public Items(Integer id, String title, String name, String detail) {

  47. super();

  48. this.id = id;

  49. this.title = title;

  50. this.name = name;

  51. this.detail = detail;

  52. }

  53.  
  54. @Override

  55. public String toString() {

  56. return "Items [id=" + id + ", title=" + title + ", name=" + name + ", detail=" + detail + "]";

  57. }

  58.  
  59. }


新增操作

 
  1. /**

  2. * 新增数据

  3. * @param items

  4. * @return

  5. */

  6. @RequestMapping("/add")

  7. public @ResponseBody String addItems(Items items) {

  8. String sql = "insert into items (id,title,name,detail) value (?,?,?,?)";

  9. Object args[] = {items.getId(),items.getTitle(),items.getName(),items.getDetail()};

  10. int temp = jdbcTemplate.update(sql, args);

  11. if(temp > 0) {

  12. return "文章新增成功";

  13. }

  14. return "新增出现错误";

  15. }

我们做一个测试。在postman测试工具中输入http://localhost:8080/items/add

我们可以看到,新增已经成功了,确实很方便,也没有繁琐的配置信息。

其余删除,更新操作与新增代码不变,只是sql的变化,这里不做演示。

全部查询操作

 
  1. /**

  2. * @return

  3. * 查询全部信息

  4. */

  5. @RequestMapping("/list")

  6. public List<Map<String, Object>> itemsList() {

  7. String sql = "select * from items";

  8. List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);

  9. return list;

  10. }


我们做一个测试。在postman测试工具中输入http://localhost:8080/items/list

我们看到,包括刚才新增的数据,都已经被查出来了。

这里为了学习一下springboot的JdbcTemplate操作,所有增删改查代码都写在ItemsController类中,也方便演示,这里把代码贴出来,需要的可以运行一下

 
  1. package org.amuxia.start;

  2.  
  3. import java.util.List;

  4. import java.util.Map;

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

  7. import org.springframework.context.annotation.ComponentScan;

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

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

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

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

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

  13.  
  14. @ComponentScan

  15. @RestController

  16. @RequestMapping("/items")

  17. public class ItemsController {

  18.  
  19. @Autowired

  20. private JdbcTemplate jdbcTemplate;

  21.  
  22. /**

  23. * @return

  24. * 查询全部信息

  25. */

  26. @RequestMapping("/list")

  27. public List<Map<String, Object>> itemsList() {

  28. String sql = "select * from items";

  29. List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);

  30. return list;

  31. }

  32.  
  33. /**

  34. * @param id

  35. * @return

  36. * 根据ID查询单条信息

  37. */

  38. @RequestMapping("/detail/{id}")

  39. public Map<String, Object> detail(@PathVariable int id) {

  40. Map<String, Object> map = null;

  41. List<Map<String, Object>> list = itemsList();

  42. map = list.get(id);

  43. return map;

  44. }

  45.  
  46. /**

  47. * 新增数据

  48. * @param items

  49. * @return

  50. */

  51. @RequestMapping("/add")

  52. public @ResponseBody String addItems(Items items) {

  53. String sql = "insert into items (id,title,name,detail) value (?,?,?,?)";

  54. Object args[] = {items.getId(),items.getTitle(),items.getName(),items.getDetail()};

  55. int temp = jdbcTemplate.update(sql, args);

  56. if(temp > 0) {

  57. return "文章新增成功";

  58. }

  59. return "新增出现错误";

  60. }

  61.  
  62. /**

  63. * @param items

  64. * @return

  65. * 删除数据

  66. */

  67. @RequestMapping("/del")

  68. public @ResponseBody String delItems(Items items) {

  69. String sql = "delete from items where id = ?";

  70. Object args[] = {items.getId()};

  71. int temp = jdbcTemplate.update(sql, args);

  72. if(temp > 0) {

  73. return "文章删除成功";

  74. }

  75. return "删除出现错误";

  76. }

  77.  
  78. /**

  79. * @param items

  80. * @return

  81. * 更新操作

  82. */

  83. @RequestMapping("/upd")

  84. public @ResponseBody String updItems(Items items) {

  85. String sql = "update items set title = ?,detail = ? where id = ?";

  86. Object args[] = {items.getTitle(),items.getDetail(),items.getId()};

  87. int temp = jdbcTemplate.update(sql, args);

  88. if(temp > 0) {

  89. return "文章修改成功";

  90. }

  91. return "修改出现错误";

  92. }

  93. }



这里解释一个注解

@ComponentScan:

        @ComponentScan告诉Spring 哪个注解标识的类会被spring自动扫描并且装入bean容器。如果你有个类用@Controller注解标识了,那么,如果不加上@ComponentScan自动扫描该controller,那么该Controller就不会被spring扫描到,更不会装入spring容器中,Controller就不会起作用。

启动类代码

 
  1. package org.amuxia.start;

  2.  
  3. import org.springframework.boot.SpringApplication;

  4. import org.springframework.boot.autoconfigure.EnableAutoConfiguration;

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

  6.  
  7. @RestController

  8. @EnableAutoConfiguration

  9. public class App

  10. {

  11.  
  12. public static void main( String[] args )

  13. {

  14. System.out.println( "start....." );

  15. SpringApplication.run(ItemsController.class, args);

  16. }

  17. }

猜你喜欢

转载自blog.csdn.net/baidu_37366055/article/details/81079126