《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等引數。。。