#【SpringBoot】數據持久化——JdbcTemplate
如果餓了就吃,困了就睡,渴了就喝,人生就太無趣了
源碼地址:https://github.com/keer123456789/springbootstudy/tree/master/jdbctemplatedemo
1 項目配置
1.1 添加依賴
在創建SpringBoot
項目時,添加基本的Web
依賴,jdbc
依賴和數據庫驅動依賴。如圖1:
項目創建完成後修改一下pom.xml
,主要是修改mysql
的依賴
<dependencies>
<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>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
1.2 配置application.properties
文件
在application.properties
文件添加如下內容:
- url是mysql的ip地址,端口號如果沒有改動過默認是3306,斜杆後面是數據庫名稱
- username是登錄mysql的用戶名
- password是登錄密碼
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mydb?useSSL=false&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
2 使用JdbcTemplate(部分代碼,全部代碼github中)
在數據庫中創建user
表,如圖2:
創建User
對象類
public class User {
private String name;
private String password;
public User() {
}
public String getName() {
return name;
}
public String getPassword() {
return password;
}
public void setName(String name) {
this.name = name;
}
public void setPassWord(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", passWord='" + password + '\'' +
'}';
}
}
2.1 例子類圖
如圖3:
- 流程就是請求被
UserController
接收,之後調用UserService
的方法,進行數據處理,最後調用UserDao
對數據進行增刪改查 addUser()
增加在數據庫增加用戶信息removeUser()
刪除某個用戶信息updateUserPassword()
更新用戶密碼selectUserInfo()
查詢全部用戶信息
下面只介紹UserDao
中使用JdbcTemplate
用法,
JdbcTemplate
的用法和傳統的JDBC用法很相似,只不過將連接配置等工作交給spring來做了。
2.2 增(insert) addUser
insert
語句調用JdbcTemplate
API就可以了,傳入sql
語句即可,返回int
,表示修改庫錶行數
/**
* 在user表中插入新的用戶信息
*
* @param user
* @return
*/
public boolean insertUser(User user) {
int i = jdbcTemplate.update("insert into user(name,password) values(?,?)", user.getName(), user.getPassword());
if (i == 1) {
return true;
} else {
return false;
}
}
2.3 刪(delete) deleteUser()
delete
語句同樣是調用JdbcTemplate
API就可以了,和insert
的用法相同
/**
* 刪除user表中name= username 的記錄
*
* @param userName
* @return
*/
public boolean deleteUser(String userName) {
int i = jdbcTemplate.update("delete from user where name=?", userName);
if (i == 1) {
return true;
} else {
return false;
}
}
2.4 改(update) updateUserPassword()
update
語句也是調用調用JdbcTemplate.update()
API即可。
/**
* 更改對應用戶的密碼
*
* @param user
* @return
*/
public boolean updateUserPassword(User user) {
int i = jdbcTemplate.update("update user set password=? where name=?", user.getPassword(), user.getName());
if (i == 1) {
return true;
} else {
return false;
}
}
2.5 查(select) selectUserInfo()
select
語句調用的API使用query()
方法
/**
* 查詢用戶表全部信息
*
* @return
*/
public List selectUserInfo() {
return jdbcTemplate.query("select * from user",
new RowMapper<User>() {
@Override
public User mapRow(ResultSet resultSet, int i) throws SQLException {
User u = new User();
u.setName(resultSet.getString("name"));
u.setPassWord(resultSet.getString("password"));
return u;
}
});
}