Spring Boot整合JdbcTemplates

1、數據準備

  • 創建tb_user表
DROP TABLE IF EXISTS `tb_user`;
CREATE TABLE `tb_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `username` varchar(50) NOT NULL COMMENT '用戶名',
  `age` int(11) NOT NULL COMMENT '年齡',
  `ctm` datetime NOT NULL COMMENT '創建時間',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
  • 插入數據
INSERT INTO `db_springboot`.`tb_user` (`username`, `age`, `ctm`) VALUES('張三啊', '18', NOW()) ;
INSERT INTO `db_springboot`.`tb_user` (`username`, `age`, `ctm`) VALUES('李四', '20', NOW()) ;
INSERT INTO `db_springboot`.`tb_user` (`username`, `age`, `ctm`) VALUES('王五', '19', NOW()) ;

2、在pom.xml中引入依賴

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

<!-- MySQL連接 -->
<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <scope>runtime</scope>
</dependency>

<!-- Add typical dependencies for a web application -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
</dependency>

3、在application.yaml中添加mysql連接屬性

spring:
    datasource:
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://localhost:3306/db_springboot?characterEncoding=utf8&useSSL=true
        username: root
        password: root

4、項目結構


5、代碼部分

  • 實體類:User
package com.springboot.testone.bean;

import java.util.Date;

public class User {

    /**
     * ID
     */
    private int id;
    /**
     * 用戶名
     */
    private String username;
    /**
     * 年齡
     */
    private int age;
    /**
     * 創建時間
     */
    private Date ctm;

    public User() {
    }

    public User(String username, int age) {
        this.username = username;
        this.age = age;
        this.ctm = new Date();
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Date getCtm() {
        return ctm;
    }

    public void setCtm(Date ctm) {
        this.ctm = ctm;
    }
}
  • dao層接口 ==> UserDao
package com.springboot.testone.dao;

import com.springboot.testone.bean.User;

import java.util.List;

public interface UserDao {
    User getUserById(Integer id);

    public List<User> getUserList();

    public int add(User user);

    public int update(Integer id, User user);

    public int delete(Integer id);
}
  • dao層實現類 ==> UserDaoImpl
package com.springboot.testone.dao.impl;

import com.springboot.testone.bean.User;
import com.springboot.testone.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;

//@Repository可以確保DAO或者repositories提供異常轉譯
@Repository
public class UserDaoImpl implements UserDao {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Override
    public User getUserById(Integer id) {
        List<User> list = jdbcTemplate.query("select * from tb_user where id = ?", new Object[]{id}, new BeanPropertyRowMapper(User.class));
        if(list!=null && list.size()>0){
            return list.get(0);
        }else{
            return null;
        }
    }

    @Override
    public List<User> getUserList() {
        List<User> list = jdbcTemplate.query("select * from tb_user", new Object[]{}, new BeanPropertyRowMapper(User.class));
        if(list!=null && list.size()>0){
            return list;
        }else{
            return null;
        }
    }

    @Override
    public int add(User user) {
        String sql = "insert into tb_user(username, age, ctm) values(?, ?, ?)";
        return jdbcTemplate.update(sql,user.getUsername(),user.getAge(), new Date());
    }

    @Override
    public int update(Integer id, User user) {
        String sql = "UPDATE tb_user SET username = ? , age = ? WHERE id=?";
        return jdbcTemplate.update(sql,user.getUsername(),user.getAge(), id);
    }

    @Override
    public int delete(Integer id) {
        String sql = "DELETE from tb_user where id = ? ";
        return jdbcTemplate.update(sql,id);
    }
}
  • service層接口 ==> UserService
package com.springboot.testone.service;

import com.springboot.testone.bean.User;

import java.util.List;

public interface UserService {

    User getUserById(Integer id);

    public List<User> getUserList();

    public int add(User user);

    public int update(Integer id, User user);

    public int delete(Integer id);
}
  • service層實現類 ==> UserServiceImpl
package com.springboot.testone.service.impl;

import com.springboot.testone.bean.User;
import com.springboot.testone.dao.UserDao;
import com.springboot.testone.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserDao userDao;

    @Override
    public User getUserById(Integer id) {
        return userDao.getUserById(id);
    }

    @Override
    public List<User> getUserList() {
        return userDao.getUserList();
    }

    @Override
    public int add(User user) {
        return userDao.add(user);
    }

    @Override
    public int update(Integer id, User user) {
        return userDao.update(id, user);
    }

    @Override
    public int delete(Integer id) {
        return userDao.delete(id);
    }
}
  • 編寫controller類 【restful風格】==> UserController
package com.springboot.testone.controller;

import com.springboot.testone.bean.JsonResult;
import com.springboot.testone.bean.User;
import com.springboot.testone.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.Date;
import java.util.List;

@RestController
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 查詢用戶列表
     * @return
     */
    @RequestMapping(value = "/userList", method = RequestMethod.GET)
    public List<User> getUserList(){
        return userService.getUserList();
    }

    /**
     * 根據ID查詢用戶
     * @param id
     * @return
     */
    @RequestMapping(value = "/getUserById/{id}", method = RequestMethod.GET)
    public User getUserById(@PathVariable(value = "id") int id){
        return userService.getUserById(id);
    }

    /**
     * 添加用戶
     * @return
     */
    @RequestMapping(value = "/addUser", method = RequestMethod.POST)
    public String add(@RequestBody User user){
        int t= userService.add(user);
        if(t==1){
            return user.toString();
        }else {
            return "fail";
        }

    }
   
    /**
     * 根據id刪除用戶
     * @param id
     * @return
     */
    @RequestMapping(value = "/delUser/{id}", method = RequestMethod.DELETE)
    public int  delete(@PathVariable(value = "id") int id){
        return userService.delete(id);
    }

    /**
     * 根據id修改用戶信息
     * @param user
     * @return
     */
    @RequestMapping(value = "/updateUser/{id}", method = RequestMethod.PUT)
    public int update(@PathVariable("id") int id, @RequestBody User user){
        return userService.update(id,user);
    }
}

6、使用postman進行相應測試

  • 查詢所有用戶信息

  • 根據id查詢用戶信息


  • 添加用戶(此處需注意提交的格式及內容)

  • 根據id刪除用戶信息

  • 根據id修改用戶信息

最終的用戶信息

postman教程—界面功能導航:https://www.jellythink.com/archives/135


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