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


删除成功



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