【SpringBoot】數據持久化——JdbcTemplate

#【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 語句調用JdbcTemplateAPI就可以了,傳入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 語句同樣是調用JdbcTemplateAPI就可以了,和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;
                    }
                });
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章