准备工作
所需依赖
需要的依赖如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.23</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
<version>8.0.21</version>
</dependency>
注意,MySQL 依赖的版本,取决于安装的 MySQL 版本。如果本地或者服务器装的 MySQL5,就用 MySQL5 的依赖,使用 <version></version>
标签进行锁定。
配置文件
application.properties 文件如下:
# spring.datasource.type 配置数据源的类型
# Spring Boot默认的数据源是org.apache.tomcat.jdbc.pool.DataSource
# 这里指定数据源为 druid
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://xxx.xxx.xxx.xxx/example?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8
如果使用的 MySQL8 ,一定要设置时区serverTimezone
,否则会报错。
在数据库中建好表格
这里使用的 example 数据库,在其中建一个 user 表,有三个字段:id、username、address:
增删改查操作
先建一个实体类,对应于数据库中 user 表。这里类名用的User1
,是因为 User
这个类名和系统类名冲突。
public class User1 {
private Integer id;
private String username;
private String address;
@Override
public String toString() {
return "User1{" +
"id=" + id +
", username='" + username + '\'' +
", address='" + address + '\'' +
'}';
}
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 getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
建一个 UserService 类,在其中编写增删改查的方法:
@Service
public class UserService {
@Autowired
JdbcTemplate jdbcTemplate;
// 增加数据
public Integer adduser(User1 user){
return jdbcTemplate.update("insert into user(username, address) values (?,?);", user.getUsername(), user.getAddress());
}
// 更新数据
public Integer updateUsernameById(User1 user){
return jdbcTemplate.update("update user set username=? where id=?;",user.getUsername(), user.getId());
}
// 删除数据
public Integer deleteUserById(User1 user1){
return jdbcTemplate.update("delete from user where id=?;", user1.getId());
}
// 查询数据
// 如果实体类中的属性名和数据库中的字段名不是一一对应的
// 就用这种方式查询
public List<User1> getAllUsers(){
return jdbcTemplate.query("select * from user", new RowMapper<User1>() {
@Override
public User1 mapRow(ResultSet resultSet, int i) throws SQLException {
User1 user1 = new User1();
int id = resultSet.getInt("id");
String username = resultSet.getString("username");
String address = resultSet.getString("address");
user1.setId(id);
user1.setUsername(username);
user1.setAddress(address);
return user1;
}
});
}
// 查询数据
// 如果实体类中的属性名和数据库中的字段名是一一对应的
// 就可以使用这种方式查询
public List<User1> getAllUsers2(){
return jdbcTemplate.query("select * from user;", new BeanPropertyRowMapper<>(User1.class));
}
}
在测试文件中进行测试,每一个增删改查操作,对应一个测试方法:
@SpringBootTest
class JdbctemplateApplicationTests {
@Autowired
UserService userService;
@Test
void contextLoads() {
User1 user = new User1();
user.setUsername("you");
user.setAddress("chengdu");
userService.adduser(user);
}
@Test
public void test1(){
User1 user1 = new User1();
user1.setId(1);
user1.setUsername("lin");
userService.updateUsernameById(user1);
}
@Test
public void test2(){
User1 user1 = new User1();
user1.setId(1);
userService.deleteUserById(user1);
}
@Test
public void test3(){
List<User1> allUsers = userService.getAllUsers();
System.out.println(allUsers);
}
@Test
public void test4(){
List<User1> allUsers2 = userService.getAllUsers2();
System.out.println(allUsers2);
}
}
每天学习一点点,每天进步一点点。