springBoot入門總結(四)整合JdbcTemplate

        Spring對JDBC訪問數據庫同樣做了深層次的封裝,使用Spring的注入功能,將DataSource註冊到JdbcTemplate中。JdbcTemplate在JDBC api的基礎上提供了更爲抽象的封裝,並提供了基於方法註解的事務管理功能。

        以下通過記錄SpringBoot整合JdbcTemplate訪問MySQL數據庫來總結相關知識點。

一、數據準備

MySQL(數據庫安裝可以參考:http://blog.csdn.net/weixin_41557632/article/details/78943248)中創建名爲test的數據庫,在數據庫中執行以下腳本,創建名爲t_user的表,並初始化數據。

USE test;
CREATE TABLE t_user(
t_id INT PRIMARY KEY AUTO_INCREMENT,#部門編號 整形 主鍵 自增長
t_name VARCHAR (30),
t_age INT (10),
t_address VARCHAR (150)
)ENGINE=INNODB DEFAULT CHARSET=jbk;

INSERT INTO `t_user` (`t_id`, `t_name`, `t_age`, `t_address`) VALUES('3','小明','23','北京市');
INSERT INTO `t_user` (`t_id`, `t_name`, `t_age`, `t_address`) VALUES('4','小毛','18','北京市');


二、SpringBoot整合JdbcTemplate

開發工具IntelliJ IDEA,創建名稱爲springBoot-demo的工程,目錄結構如下:


1.POM文件引入依賴

添加JdbcTemplate依賴。

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

因爲我們使用的是MySQL,所以還需要引入MySQL的依賴。

<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<scope>runtime</scope>
</dependency>

2.配置數據源

因爲使用MySQL訪問數據庫,所以我們需要修改applicable.properties文件,配置MySQL數據源。

spring.datasource.username=root
spring.datasource.password=1q2w3e4r
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

3.編寫代碼完成簡單的CRUD操作

src/main/java 目錄下創建service目錄,新建JdbcService類,JdbcService類中直接使用@Autowired註解引入JdbcTemplate使用,編寫CRUD相應方法。

package com.mxy.springboot;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementSetter;
import org.springframework.jdbc.core.RowCallbackHandler;
import org.springframework.stereotype.Service;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
public class JdbcService {
    @Autowired
    private JdbcTemplate jdbcTemplate;

    /**
     * 查詢
     * */
    public List findAll(){
        String listSql = "select * from t_user";
        final List result = new ArrayList();
        jdbcTemplate.query(listSql, new RowCallbackHandler() {
            @Override
            public void processRow(ResultSet rs) throws SQLException {
                Map row = new HashMap();
                row.put("id", rs.getInt("t_id"));
                row.put("name", rs.getString("t_name"));
                row.put("age", rs.getInt("t_age"));
                row.put("address", rs.getString("t_address"));
                result.add(row);
            }});
        return result;
    }
    /**
     * 新增
     * */
    public int save(String name,String age,String address){
        String insertSql = "insert into t_user(t_name,t_age,t_address) values (?,?,?)";
        int count = jdbcTemplate.update(insertSql, new PreparedStatementSetter() {
            @Override
            public void setValues(PreparedStatement pstmt) throws SQLException {
                pstmt.setObject(1, name);
                pstmt.setObject(2, age);
                pstmt.setObject(3, address);
            }
        });
        return count;
    }
    /**
     * 更新
     * */
    public int update(String id,String name){
        String insertSql = "update t_user set t_name = ? where t_id = ?";
        int count = jdbcTemplate.update(insertSql, new PreparedStatementSetter() {
            @Override
            public void setValues(PreparedStatement pstmt) throws SQLException {
                pstmt.setObject(1, name);
                pstmt.setObject(2, id);
            }
        });
        return count;
    }
    /**
     * 刪除
     * */
    public int delere(String id){
        return  jdbcTemplate.update("delete from t_user where t_id=?", new Object[] {id});
    }
}

src/main/java 目錄下創建Controller控制器目錄結構,新建JdbcController控制器類,編寫添加CRUD相應方法。

package com.mxy.springboot.controller;

import com.mxy.springboot.JdbcService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;

@RestController
@RequestMapping(value = "/jdbc")
public class JdbcController {
    @Autowired
    private JdbcService jdbcService;
    /**
     *查詢方法,返回表中所有值
     * */
    @RequestMapping(value = "/list",method = RequestMethod.GET)
    public List list(){
        return jdbcService.findAll();
    }
    /**
     *新增記錄,成功返回save success,失敗返回save failed
     * */
    @RequestMapping(value = "/save",method = RequestMethod.GET)
    public String save(String name,String age,String address){
        int count = jdbcService.save(name,age,address);
        if (count>0){
            return "save success";
        }else{
            return "save failed";
        }
    }
    /**
     *更新記錄名稱字段,成功返回update name success,失敗返回update name failed
     * */
    @RequestMapping(value = "/update",method = RequestMethod.GET)
    public String update(String id,String name){
        int count = jdbcService.update(id,name);
        if (count>0){
            return "update name success";
        }else{
            return "update name failed";
        }
    }
    /**
     *刪除,返回剩餘所有記錄
     * */
    @RequestMapping(value = "/delete",method = RequestMethod.GET)
    public List delete(String id){
        jdbcService.delere(id);
        return jdbcService.findAll();
    }
}

啓動程序,驗證結果。

  • 查詢方法請求地址:http://localhost:8080/jdbc/list


  • 新增記錄請求地址http://localhost:8080/jdbc/save?name=周星馳&age=50&address=中國香港


查看數據庫驗證


新增成功

  • 更新記錄名稱請求地址:http://localhost:8080/jdbc/update?id=4&name=成龍


產看數據庫驗證


更新成功

  • 刪除記錄請求地址:http://localhost:8080/jdbc/delete?id=6


刪除成功



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章