Spring JDBC配置与使用

Spring JDBC

Spring JDBC 框架负责所有的低层细节,从开始打开连接,准备和执行 SQL 语句,处理异常,处理事务,到最后关闭连接。大大简化了开发人员对数据库的操作,使得开发人员可以从繁琐的数据库操作中解脱出来,从而将更多的精力投入到编写业务逻辑中。

Spring框架提供了JdbcTemplate类,该类是Spring框架数据抽象层的基础这是管理所有数据库通信和异常处理的中央框架类。

JdbcTemplate

是spring框架中提供的一个对象,是对原始繁琐的Jdbc API对象的简单封装。spring框架为我们提供了很多的操作模板类。

JdbcTemplate虽然简单,功能却非常强大。它提供了非常丰富、实用的方法,归纳起来主要有以下几种类型的方法:

  1. execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句。
  2. update、batchUpdate方法:用于执行新增、修改与删除等语句。
  3. query和queryForXXX方法:用于执行查询相关的语句。
  4. call方法:用于执行数据库存储过程和函数相关的语句。

总的来说,新增、删除与修改三种类型的操作主要使用update和batchUpdate方法来完成query和queryForObject方法中主要用来完成查询功能。execute方法可以用来执行任意的SQL、call方法来调用存储过程,

Spring JDBC 示例

一数据库表

sql 复制代码
create database mybatis_demo; 

use mybatis_demo;

CREATE TABLE `user` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(32) NOT NULL COMMENT '用户名称',
`birthday` datetime default NULL COMMENT '生日',
`sex` char(1) default NULL COMMENT '性别',
`address` varchar(256) default NULL COMMENT '地址',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert into `user`(`id`,`username`,`birthday`,`sex`,`address`) values (1,'老王','2018-02-27
17:47:08','男','北京'),(2,'熊大','2018-03-02 15:09:37','女','上海'),(3,'熊二','2018-03-04
11:34:34','女','深圳'),(4,'光头强','2018-03-04 12:04:06','男','广州');

二添加依赖

pom.xml中加入Springmysql相关的包

XML 复制代码
<dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
    <scope>test</scope>
  </dependency>

  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>5.2.7.RELEASE</version>
  </dependency>

  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>5.2.7.RELEASE</version>
  </dependency>

  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.2.7.RELEASE</version>
  </dependency>

  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>5.2.7.RELEASE</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-expression</artifactId>
    <version>5.2.7.RELEASE</version>
  </dependency>

  <dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
  </dependency>
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.20</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.2.7.RELEASE</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
    <version>5.2.7.RELEASE</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aop</artifactId>
    <version>5.2.7.RELEASE</version>
  </dependency>
</dependencies>

三创建实体类

java 复制代码
public class User {
    private Integer id;
    private String username;
    private Date birthday;
    private String sex;
    private String address;
    //get  set方法
    
 }

四、在Spring.xml当中配置数据库的链接和idbcTemplate

XML 复制代码
 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">



    <!--配置连接DriverManagerDataSource -->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/mybatis_demo"/>
        <property name="username" value="root"/>
        <property name="password" value="2020"/>
    </bean>

    <!-- 配置jdbcTemplate -->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource"  ref="dataSource"></property>
    </bean>
</beans>

五创建类实现增删改查操作

java 复制代码
import com.qcby.entity.User;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;

import java.util.List;

public class SpringTest {
    ApplicationContext ctx=new ClassPathXmlApplicationContext("Application.xml");;
    JdbcTemplate jdbcTemplate= (JdbcTemplate) ctx.getBean("jdbcTemplate");

    @Test
    public void testInsert(){
        String sql="insert into user(username,address) values('李连杰','上海')";
        jdbcTemplate.execute(sql);
    }

    @Test
    public void testUpdate(){
        String sql="update user set username='稳杰',address='南海' where id=?";
        int res=jdbcTemplate.update(sql,2);
        System.out.println(res);
    }

    @Test
    public void testDelete(){
        String sql="delete from user where id=?";
        int res=jdbcTemplate.update(sql,18);
        System.out.println(res);
    }

    //查询列表
    @Test
    public void testQueryList(){
        String sql = "select * from user where address like '%京%'";
        List<User> userList= (List<User>) jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(User.class));
        System.out.println("查询List: ");
        for (User user : userList) {
            System.out.println(user);
        }
        System.out.println("数量: "+userList.size());
    }
}

结果:

相关推荐
u01092727111 小时前
使用XGBoost赢得Kaggle比赛
jvm·数据库·python
定偶11 小时前
MySQL多表连接查询详解
c语言·数据库·mysql
她说..11 小时前
策略模式+工厂模式实现审批流(面试问答版)
java·后端·spring·面试·springboot·策略模式·javaee
woshilys11 小时前
sql server 索引选择
数据库·sqlserver
bamboolm11 小时前
java mysql 权限状态、流程问题
数据库·mysql
怣5011 小时前
MySQL排序分组限制:零基础速成语法(零基础入门版)
数据库·mysql
tb_first11 小时前
SSM速通4
java·jvm·spring·tomcat·maven·mybatis
CDA数据分析师干货分享11 小时前
【干货】CDA一级知识点拆解1:《CDA一级商业数据分析》第1章 数据分析思维
数据库·人工智能·数据分析·cda证书·cda数据分析师
数据知道11 小时前
PostgreSQL 核心原理:如何从日志中定位死锁根源(死锁检测与预防)
数据库·postgresql
物联网软硬件开发-轨物科技12 小时前
【轨物方案】告别“盲维”时代:如何不动一根电线,帮老旧电站找回消失的 5% 收益?
服务器·网络·数据库