spring —— 使用 JDBCTemplate 对数据库操作

在传统方法中,我们一般建立 Connection 链接,然后通过 Statement stm = conn.createStatement() 来获取 Statement 对象,最后用 Statement 对象操作数据库。

在 spring 中,则是通过 com.alibaba druid 配置数据源工具,来配置要连接的数据库,然后将配置好的数据源作为属性传入 JDBCTemplate 对象当中,最后用 JDBCTemplate 对象操作数据库。

一、pom 文件所需依赖


    
    org.springframework
    spring-jdbc
    6.0.2


    
    mysql
    mysql-connector-java
    8.0.30


    
    com.alibaba
    druid
    1.0.31

二、spring-config.xml 文件配置




    
    
    
    
    
    
        
        
        
        
    
    
    
        
    

三、java 代码

package com.mysql.conn;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;

//使用spring整合junit5进行测试
@SpringJUnitConfig(locations = "classpath:bean-jdbc.xml")
public class TestUpdate {
    @Autowired
    public JdbcTemplate jdbcTemplate;
    @Test
    public void testUpdate() {        
        String sql ="insert into user values(?,?,?)";
        int rows = jdbcTemplate.update(sql,11,"lucy","30");
        System.out.println(rows);
    }
}

四、常用 sql 语句

(一)增加

String sql ="insert into user values(?,?,?)";
Object[] x={11,"lucy","30"};
int rows = jdbcTemplate.update(sql,x);
System.out.println(rows);

(二)删除

String sql ="delete from user where id = ? ";
int rows = jdbcTemplate.update(sql,10);
System.out.println(rows);

(三)更改

String sql ="update user set account=?,password=? where id=?";
int rows = jdbcTemplate.update(sql,"James",123,8);
System.out.println(rows);

(四)查询

1、查询单个对象

① 创建对象类

package com.mysql.conn;

public class User {
    private int id;
    private String account;
    private String password;

    //生成set方法,这一步很关键
    public void setId(int id) {
        this.id = id;
    }
    public void setAccount(String account) {
        this.account = account;
    }
    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", account='" + account + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

② 测试类

package com.mysql.conn;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;

@SpringJUnitConfig(locations = "classpath:bean-jdbc.xml")
public class TestUpdate {
    @Autowired
    public JdbcTemplate jdbcTemplate;
    @Test
    public void testUpdate() {
        String sql ="select * from user where id = ?";
        //第一种写法
        User user1 = jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<>(User.class),1);
        System.out.println(user1);
        //第二种写法
        User user2 = jdbcTemplate.queryForObject(sql,
               (rs, rowNum) -> {
                    User user = new User();
                    user.setId(rs.getInt("id"));
                    user.setAccount(rs.getString("account"));
                    user.setPassword(rs.getString("password"));
                    return user;
                }, 2);
        System.out.println(user2);
    }
}

 2、查询 list 集合

① 目标类不变

② 测试类

package com.mysql.conn;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;

import java.util.List;

@SpringJUnitConfig(locations = "classpath:bean-jdbc.xml")
public class TestUpdate {
    @Autowired
    public JdbcTemplate jdbcTemplate;
    @Test
    public void testUpdate() {
        String sql ="select * from user";
        List list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));
        System.out.println(list);       
    }
}

3、查询单个值

测试类(查询多少行)

package com.mysql.conn;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;

@SpringJUnitConfig(locations = "classpath:bean-jdbc.xml")
public class TestUpdate {
    @Autowired
    public JdbcTemplate jdbcTemplate;
    @Test
    public void testUpdate() {
        String sql ="select count(account) from user";
        Integer i = jdbcTemplate.queryForObject(sql, Integer.class);
        System.out.println(i);       
    }
}

你可能感兴趣的:(spring,数据库,spring,oracle)