1. 程式人生 > >《SpringBoot從入門到放棄》之第(七)篇——JdbcTemplate訪問資料庫,postman 的下載、使用

《SpringBoot從入門到放棄》之第(七)篇——JdbcTemplate訪問資料庫,postman 的下載、使用

為了測試方便,需要重新建立一個測試專案,以免受到之前測試專案的干擾,同時慢慢深入業務程式碼分離、為分散式開發做準備。

配置資料來源 ,在 pom.xml 新增依賴包(pom.xml裡面的內容可以複製之前的):

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

連線生產資料來源

本篇部落格以連線 mysql 資料庫為例:

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.45</version>
		</dependency>

O的K,建立資料庫mytest,表:t_user,並新增一些資料以做測試

DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL COMMENT '使用者名稱',
  `signature` varchar(100) DEFAULT NULL COMMENT '個性簽名',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

INSERT INTO `t_user` VALUES ('1', '流放深圳', '讓天下沒有難寫的程式碼');
INSERT INTO `t_user` VALUES ('2', '扁蛋', '港榮蒸蛋糕,好吃不上火。');

建立實體類 User,並提供 getter、setter 方法。

public class User {
    private Integer id;
    private String name;
    private String signature;

    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSignature() {
        return signature;
    }
    public void setSignature(String signature) {
        this.signature = signature;
    }
}

為了體現低耦合的架構設計模式,我們採用介面設計模式。

建立 UserService,定義操作使用者的基本方法。

import com.test.entity.User;
import java.util.List;

public interface UserService {

    /**
     * 增加使用者
     * @param user
     * @return
     */
    Integer addUser(User user);

    /**
     * 根據 id 刪除使用者
     * @param id
     * @return
     */
    Integer deleteUser(Integer id);

    /**
     * 更新使用者資訊
     * @param user
     * @return
     */
    Integer updateUser(User user);

    /**
     * 查詢所有使用者資訊
     * @return
     */
    List<User> getUser();
    
}

實現類:UserServiceImpl:

import com.test.entity.User;
import com.test.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    /**
     * 新增使用者
     * @param user
     * @return
     */
    @Override
    public Integer addUser(User user){
        String name = user.getName();
        String signture = user.getSignature();
        return jdbcTemplate.update("insert into t_user (name,signature) values (?,?)",name,signture);
    }

    /**
     * 根據 id 刪除使用者
     * @param id
     * @return
     */
    @Override
    public Integer deleteUser(Integer id){
        return jdbcTemplate.update("delete from t_user where id = ?",id);
    }

    /**
     * 更新使用者資訊
     * @param user
     * @return
     */
    @Override
    public Integer updateUser(User user){
        Integer id = user.getId();
        String name = user.getName();
        String signature = user.getSignature();
        return jdbcTemplate.update("update t_user set name = ?,signature = ? where id = ?",name,signature,id);
    }

    /**
     * 查詢所有使用者資訊
     * @return
     */
    @Override
    public List<User> getUser(){
        List<User> list =(List)jdbcTemplate.queryForList("select * from t_user");
        return list;
    }
}

編寫測試類 JdbcTemplateController :


import com.test.entity.User;
import com.test.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

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

@Controller
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 新增使用者
     * @param name
     * @param signature
     * @return
     */
    @RequestMapping(value = "/addUser")
    @ResponseBody
    public Map<String,Integer> addUser(@RequestParam String name, @RequestParam String signature){
        User u=new User();
        u.setName(name);
        u.setSignature(signature);
        Integer count = userService.addUser(u);
        Map<String, Integer> map = new HashMap<>();
        map.put("count", count);
        return map;
    }

    /**
     * 根據 id 刪除使用者
     * @param id
     * @return
     */
    @RequestMapping(value = "/deleteUser")
    @ResponseBody
    public Map<String,Integer> deleteUser(@RequestParam Integer id) {
        Integer count = userService.deleteUser(id);
        Map<String, Integer> map = new HashMap<>();
        map.put("count", count);
        return map;
    }

    /**
     * 更新使用者
     * @param id
     * @param name
     * @param signature
     * @return
     */
    @RequestMapping(value = "/updateUser")
    @ResponseBody
    public Map<String,Integer> updateUser(@RequestParam Integer id, @RequestParam String name, @RequestParam String signature){
        User u=new User();
        u.setId(id);
        u.setName(name);
        u.setSignature(signature);
        Integer count = userService.updateUser(u);
        Map<String,Integer> map = new HashMap<>();
        map.put("count",count);
        return map;
    }

    /**
     * 查詢所有使用者
     * @return
     */
    @RequestMapping(value = "/getUser")
    @ResponseBody
    public List<User> getUser(){
        List<User> list = userService.getUser();
        return list;
    }
}

說明:如果在類 ​UserController 的簽名上使用 @RestController 註解,則方法簽名上就不需要使用 @ResponseBody 註解,預設的返回的格式是 Json。

application.properties 配置檔案。說明:資料庫名、使用者名稱、密碼都是根據自己的實際情況配置的。

# 服務埠
server.port=9090

spring.datasource.url=jdbc:mysql://localhost:3306/mytest
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

啟動服務,瀏覽器地址輸入:http://localhost:9090/

出現以下狀況:

需要在 application.properties 配置檔案裡新增以下程式碼:使用者名稱就是 user,密碼:123,登陸即可。

spring.security.basic.enabled=true
spring.security.user.name=user
spring.security.user.password=123

完整的 application.properties 配置檔案

# 服務埠
server.port=9090

spring.datasource.url=jdbc:mysql://localhost:3306/mytest
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.security.basic.enabled=true
spring.security.user.name=user
spring.security.user.password=123

如果在學習階段,經常遇到每個請求都要登陸驗證,有個好方法,那就是在pom.xml 去掉security的引用,然後去 maven 的中央倉庫中刪掉security的相關檔案。一般的路徑在:repository\org\springframework\security

O的K,接下來進行測試。

①測試增加使用者,在瀏覽器地址輸入:http://localhost:9090/addUser?name=阿里巴巴&signature=上天貓,就夠了

結果返回:{"count":1}

去資料庫檢視,發現很OK。

②測試刪除使用者,瀏覽器地址輸入:http://localhost:9090/deleteUser?id=3

結果返回:{"count":1}

去資料庫檢視,發現很OK,id=3的記錄被刪除掉了。

③測試修改使用者,瀏覽器地址輸入:http://localhost:9090/updateUser?id=2&name=喬丹&signature=籃球之神

結果返回:{"count":1}

④測試查詢所有使用者,瀏覽器地址輸入:http://localhost:9090/getUser

結果返回:[{"id":1,"name":"流放深圳","signature":"讓天下沒有難寫的程式碼"},{"id":2,"name":"喬丹","signature":"籃球之神"}]

O的K,接下來介紹一款測試利器:postman。postman官網下載地址

一般選擇 64 位,點選下載:

下載、解壓、安裝、開啟。多研究一下就學會怎麼使用了。很方便。複雜點的時候,還需要填寫Headers等引數。。。