引入依赖
<!-- JdbcTemplate依赖包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- MYSQL包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
数据源配置
application.properties
添加如下连接配置:
# spring database config
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false
spring.datasource.password=root
spring.datasource.username=root
实体Model
import java.io.Serializable;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class User implements Serializable {
/**
*
*/
private static final long serialVersionUID = 8150275276859257942L;
private Long id;
private String username;
private String password;
}
JdbcTemplate服务
@Service
public class Chapter4Service {
private final JdbcTemplate jdbcTemplate;
@Autowired
public Chapter4Service(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public List<User> queryUsers() {
// 查询所有用户
String sql = "select * from t_user";
return jdbcTemplate.query(sql, new Object[]{}, new BeanPropertyRowMapper<>(User.class));
}
public User getUser(Long id) {
// 根据主键ID查询
String sql = "select * from t_user where id = ?";
return jdbcTemplate.queryForObject(sql, new Object[]{id}, new BeanPropertyRowMapper<>(User.class));
}
public int delUser(Long id) {
// 根据主键ID删除用户信息
String sql = "DELETE FROM t_user WHERE id = ?";
return jdbcTemplate.update(sql, id);
}
public int addUser(User user) {
// 添加用户
String sql = "insert into t_user(username, password) values(?, ?)";
return jdbcTemplate.update(sql, user.getUsername(), user.getPassword());
}
public int editUser(Long id, User user) {
// 根据主键ID修改用户信息
String sql = "UPDATE t_user SET username = ? ,password = ? WHERE id = ?";
return jdbcTemplate.update(sql, user.getUsername(), user.getPassword(), id);
}
}
验证示例
- 注意自已的项目是否配置path
- model要填加属性构造函数
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Chapter4Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class Chapter4ApplicationTests {
private static final Logger log = LoggerFactory.getLogger(Chapter4ApplicationTests.class);
@Autowired
private TestRestTemplate template;
@LocalServerPort
private int port;
@Test
public void test1() throws Exception {
template.postForEntity("http://localhost:" + port + "/users", new User("user1", "pass1"), Integer.class);
log.info("[添加用户成功]\n");
// TODO 如果是返回的集合,要用 exchange 而不是 getForEntity ,后者需要自己强转类型
ResponseEntity<List<User>> response2 = template.exchange("http://localhost:" + port + "/users", HttpMethod.GET, null, new ParameterizedTypeReference<List<User>>() {
});
final List<User> body = response2.getBody();
log.info("[查询所有] - [{}]\n", body);
Long userId = body.get(0).getId();
ResponseEntity<User> response3 = template.getForEntity("http://localhost:" + port + "/users/{id}", User.class, userId);
log.info("[主键查询] - [{}]\n", response3.getBody());
template.put("http://localhost:" + port + "/users/{id}", new User("user11", "pass11"), userId);
log.info("[修改用户成功]\n");
template.delete("http://localhost:" + port + "/users/{id}", userId);
log.info("[删除用户成功]");
}
}