springboot系列文章点击阅读原文直达
上一篇文章中我们使用spring-data-jpa实现了操作MySQL数据库,完成了对数据的增删改查,这一篇我们学习使用JdbcTemplate来实现同样的操作。
JdbcTemplate是Spring框架自带的对JDBC操作的封装,目的是提供统一的模板方法使对数据库的操作更加方便、友好,效率也不错。但是功能还是不够强大,在实际应用中通常和hibernate、mybaties等框架混合使用。
新建一个MySQL数据库,这里数据库名为springboot,建立user_info数据表,作为我们示例操作的表对象。
user_info信息如下:
DROP TABLE IF EXISTS `user_info`; CREATE TABLE `user_info` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) DEFAULT NULL, `password` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of user_info -- ---------------------------- INSERT INTO `user_info` VALUES ('1', 'Java之音', '12345'); INSERT INTO `user_info` VALUES ('2', '张无忌', '123');
数据库及表创建成功后,回到我们的工程中
第零步,引入JdbcTemplate的依赖包:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
第一步,在yml配置文件中配置数据库连接信息:
spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=UTF-8&useSSL=false username: root password: 1011
第二步,创建一个实体类:
package com.javazhiyin; /** * Created by 57783 on 2018/7/4. */ public class UserInfo { private Integer id; private String username; private String password; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public UserInfo(){ } }
第三步,新建一个Controller,实现对数据库的增删改查操作:
package com.javazhiyin; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.jdbc.core.JdbcTemplate; import java.util.List; import java.util.Map; /** * Created by 57783 on 2018/7/4. */ @RestController public class UserInfoController { @Autowired private JdbcTemplate jdbcTemplate; /** * 查 * @return */ @GetMapping(value = "/list") public List<Map<String, Object>> getUserList(){ String sql = "select * from user_info"; List<Map<String, Object>> list = jdbcTemplate.queryForList(sql); return list; } /** * 增 * @param username * @param password * @return */ @PostMapping(value = "/addUser") public String addUser(@RequestParam("username") String username, @RequestParam("password") String password){ String sql = "insert into user_info (username,password) value (?,?)"; Object args[] = {username,password}; int temp = jdbcTemplate.update(sql, args); if(temp > 0) { return "新增成功"; } return "新增失败"; } /** * 改 * @param id * @param username * @param password * @return */ @PutMapping(value = "updUser/{id}") public UserInfo updUser(@PathVariable("id") Integer id, @RequestParam("username") String username, @RequestParam("password") String password){ String sql = "update user_info set username = ?,password = ? where id = ?"; Object args[] = {username,password,id}; int temp = jdbcTemplate.update(sql, args); UserInfo user = new UserInfo(); if(temp > 0) { user.setId(id); user.setUsername(username); user.setPassword(password); return user; } return user; } /** * 删 * @param id */ @DeleteMapping(value = "delUser/{id}") public String delUser(@PathVariable("id") Integer id){ UserInfo user = new UserInfo(); user.setId(id); String sql = "delete from user_info where id = ?"; Object args[] = {id}; int temp = jdbcTemplate.update(sql, args); if(temp > 0) { return "删除成功"; } return "删除出现错误"; } }
测试上述代码,这里我们使用postman测试,非常方便:
查询测试:
新增测试:
删除测试:
我们可以看到可以全部测试通过,完成了springboot使用JdbcTemplate进行增删改查的操作。