Spring jdbcTemplate的简单入门

news/2024/5/18 22:22:36 标签: JDBC, Spring JDBC, JdbcTemplate

1.基本介绍

  Spring jdbcTemplate是Spring框架对JDBC的简单封装。它提供了JDBCTemplate对象,简化了JBDC的开发。

2.使用步骤

(1)导入jar包
  在这里插入图片描述
(2)创建JdbcTemplate对象

JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());

(3)调用JdbcTemplate的方法来完成数据库CRUD操作
 ① update()

  • 功能:执行增删改操作

 ② queryForMap()

  • 功能:查询结果,并将结果集封装为map集合
  • 注意:这个方法查询的结果集只能是一条记录。结果集将列名作为key,将值作为value,从而将这条记录封装成一个map集合。

 ③ queryForList()

  • 功能:查询结果,并将结果封装为List结合
  • 注意:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中。

 ④ query()

  • 功能:查询结果,将结果封装为JavaBean结合。
  • 注意:一般我们使用 BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装。new BeanPropertyRowMapper<类型>(类型.class)。

 ⑤ queryForObject()

  • 功能:查询结果,将结果封装为对象。
  • 注意:一般用于聚合函数的查询,将返回结果封装为对象。

3.简单示例

package cn.ecarg.jdbctemplate;

import cn.ecarg.datasource.JDBCUtils.JDBCUtils;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import org.springframework.jdbc.core.JdbcTemplate;

import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * JdbcTemplate入门
 */
public class JdbcTemplateDemo1 {
    public static void main(String[] args) {
        //1.导入jar包

        try {
            //2.获取数据库连接池对象
            //2.1.加载配置文件
            Properties pro = new Properties();
            InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
            pro.load(is);

            //2.2获取DataSource(创建并得到连接池对象)
            DataSource ds = DruidDataSourceFactory.createDataSource(pro);

            //3.创建JDBCTemplate对象
            JdbcTemplate template = new JdbcTemplate(ds);

            //4.调用方法执行sql
            String sql = "update account set balance = 5000 where id = ?";
            int count = template.update(sql,3);
            System.out.println(count);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

druid.properties

driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/ecargdb2?userSSL=false&serverTimezone=UTC
username=root
password=109815
# 初始化连接数
initialSize=5
# 最大连接数
maxActive=10
# 最大超时时间
maxWait=3000
maxIdle=8
minIdle=3

JdbcTemplateCRUDfont_90">4.调用JdbcTemplate的方法完成CRUD简单示例

操作的数据库表emp
  在这里插入图片描述
(0)为了简化代码书写,将获取数据库连接池对象封装到JDBC工具类JDBCUtiles中。
JDBCUtils.java

package cn.ecarg.datasource.JDBCUtils;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * Druid连接池的工具类
 */
public class JDBCUtils {

    //1.定义成员变量DataSource
    private static DataSource ds;

    static{
        try {
            //1.加载配置文件
            Properties pro = new Properties();
            InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
            pro.load(is);

            //2.获取DataSource(创建并得到连接池对象)
            ds = DruidDataSourceFactory.createDataSource(pro);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 获取连接池
     * @return
     */
    public static DataSource getDataSource(){
        return ds;
    }
}

(1)调用 update() 进行增删改操作

/**
* 1.修改1号数据的 salary 为10000
*/
@Test
public void test1(){
	//1.使用JDBCUtiles工具类获取JDBCTemplate对象
    JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
    //2.定义sql
    String sql = "update emp set salary = 10000 where id = 1";
    //3.执行sql
    int count = template.update(sql);
    System.out.println(count);
}
/**
* 2.添加一条数据
*/
@Test
public void test2(){
	//1.获取JDBCTemplate对象
	JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
    //2.定义sql语句
    String sql = "insert into emp values(?,?,?,?,?,?)";
    //3.执行sql
    int count = template.update(sql,null,"太白金星","男",100000,"2019-10-4",2);
    System.out.println(count);
}
/**
* 3.删除刚才添加的那条数据
*/
@Test
public void test3(){
	//1.获取JDBCTemplate对象
    JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
    //2.定义sql
    String sql = "delete from emp where name = '太白金星'";
    //3.执行sql
    int count = template.update(sql);
    System.out.println(count);
}

(2)调用 queryForMap() 进行查询

/**
* 4.查询id为1的记录,将其封装为Map集合
* 注意:queryFormap查询的结果集 只能是一条。
*/
@Test
public void test4(){
	//1.获取JDBCTemplate对象
    JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
    //2.定义sql
    String sql = "select * from emp where id = ?";
    //3.执行sql
    Map<String, Object> map = template.queryForMap(sql, 1);
    System.out.println(map);//{id=1, name=孙悟空, gender=男, salary=10000.0, join_date=2013-02-24, dept_id=1}
}

(3)调用 queryForList() 进行查询

/**
* 5.查询所有记录,将其封装为List
*/
@Test
public void test5(){
	//1.获取JDBCTemplate对象
    JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
    //2.定义sql
    String sql = "select * from emp";
    //3.执行sql
    List<Map<String, Object>> mapList = template.queryForList(sql);
    for(Map<String,Object> map : mapList){
        System.out.println(map);
    }
}

(4)调用 query() 进行查询

/**
* 6.2.查询所有记录,将其封装为Emp对象的List集合
*/
@Test
public void test6_2() {
	//1.获取JDBCTemplate对象
	JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
    //2.定义sql
    String sql = "select * from emp";
    //3.执行sql
    List<Emp> empList = template.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class));
    for(Emp emp : empList){
        System.out.println(emp);
    }
}

Emp.java

package cn.ecarg.domain;

import java.util.Date;

/**
 * 封装Emp表数据的JavaBean
 */
public class Emp {
    private Integer id;
    private String name;
    private String gender;
    private Double salary;
    private Date join_date;
    private Integer dept_id;

    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 getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public Double getSalary() {
        return salary;
    }

    public void setSalary(Double salary) {
        this.salary = salary;
    }

    public Date getJoin_date() {
        return join_date;
    }

    public void setJoin_date(Date join_date) {
        this.join_date = join_date;
    }

    public Integer getDept_id() {
        return dept_id;
    }

    public void setDept_id(Integer dept_id) {
        this.dept_id = dept_id;
    }

    @Override
    public String toString() {
        return "Emp{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", gender='" + gender + '\'' +
                ", salary=" + salary +
                ", join_date=" + join_date +
                ", dept_id=" + dept_id +
                '}';
    }
}

(5)调用 queryForObject() 进行查询

/**
* 7.查询总记录数
*/
@Test
public void test7() {
	//1.获取JDBCTemplate对象
    JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
    //2.定义sql
    String sql = "select count(id) from emp";
    //3.执行sql
    Long total = template.queryForObject(sql, Long.class);
    System.out.println(total);
}

http://www.niftyadmin.cn/n/1741045.html

相关文章

frps server端配置_Nginx/Httpd负载均衡tomcat配置

今天我们来聊一聊用Nginx和httpd对tomcat集群做负载均衡的配置以及需要注意的点&#xff1b;在前边的演示和配置都是以单台tomcat来配置使用&#xff1b;但是在生产中单台tomcat实在支撑不了大规模的访问&#xff0c;这个时候我们就需要考虑把多台tomcat做成集群对外提供服务&a…

python学生成绩管理系统实验报告_python入门级实例:学生信息管理系统

【实例简介】简单的python实现一个管理系统 【实例截图】【核心代码】 def showInfo(): print("-"*30) print(" 学生管理系统 v1.0") print(" 1.添加学生的信息") print(" 2.删除学生的信息") print(" 3.修改学生的信息") p…

ensp删除静态路由命令_从零开始学习华为路由交换 | 配置浮动静态路由

浮动静态路由原理当网络中存在多条相同路由前缀时&#xff0c;会优先选取AD值(路由可信度&#xff0c;值越小&#xff0c;路由越优先)小的路由为主用路由&#xff0c;AD值大的路由为备份路由。当主用路由的下一跳不可达时&#xff0c;主用路由消失&#xff0c;备用路由生效切换…

python要学哪些_学习Python需要哪些基础知识?

今天是腊月二十七&#xff0c;给各位朋友拜个早年&#xff01; Python学习可以分为几个阶段&#xff0c;入门、进阶、应用。 先说说入门需要哪些基本的知识储备。 Python因为易于学习的特点&#xff0c;入门很简单&#xff0c;掌握基本的Python知识点&#xff0c;比如变量、数据…

XML基本入门

文章目录1.XML概述 1.1 基本概念 1.2 XML和HTML区别2.XML语法 2.1 XML基本语法 2.2 XML组成部分3.XML约束 3.1 约束概念 3.2 约束技术 4.xml解析 4.1 概述 4.2 解析xml的方式&#xff08;思想&#xff09; 4.3 xml常见的解析器 4.4 Jsoup解析器使用方式 4.4.1 使用步…

Tomcat配置及在IDEA上部署方法

1.服务器软件 1.1 基本概念 &#xff08;1&#xff09;服务器   安装了服务器软件的计算机。   比如&#xff1a;计算机上安装了mysql&#xff0c;就可以称计算机为mysql服务器&#xff0c;此时就可以通过用户名、密码登录mysql服务器&#xff0c;进行相应的操作。 &am…

python做一些好用的小工具_几款好用的python工具库(小结)

1、Lux Lux 是一个 Python 库&#xff0c;它可以自动化的进行数据探索&#xff0c;让你能更轻松的玩转数据科学。Lux 旨在与 Pandas 紧密集成&#xff0c;可以按原样使用&#xff0c;而无需修改现有的Pandas代码。要启用Lux&#xff0c;只需将 import lux 与 Pandas import 语句…

Servlet入门学习

1.概述 ​web服务器中有一些静态资源和动态资源&#xff0c;其中动态资源是由java代码来实现的&#xff0c;需要服务器中的tomcat来执行它。当然&#xff0c;想要tomcat执行它&#xff0c;这些java代码必须要遵守一些规则&#xff0c;才能被tomcat所识别。这些规则就是Servlet接…