IT虾米网

Spring 中的 JDBCTemplate详解

developer 2019年10月12日 编程语言 144 0

 新建一个java工程 写好spring配置文件,直接上代码

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd xsi:schemaLocation=”http://www.springframework.org/schema/beans  
http://www.springframework.org/schema/beans/spring-beans.xsd  
http://www.springframework.org/schema/aop  
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd  
http://www.springframework.org/schema/context  
http://www.springframework.org/schema/context/spring-context.xsd"> 
 
    <!-- 加载配置文件 --> 
 
    <context:property-placeholder location="db.properties"></context:property-placeholder> 
     
    <!-- 导入C3P0数据源 --> 
     
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> 
        <property name="user" value="${jdbc.Username}"></property> 
        <property name="password" value="${jdbc.password}"></property> 
        <property name="jdbcUrl" value="${jdbc.Url}"></property> 
        <property name="driverClass" value="${jdbc.Driver}"></property> 
    </bean> 
     
    <!-- 配置Spring JdbcTemplate --> 
    <bean id="JdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> 
        <property name="dataSource" ref="dataSource"></property> 
    </bean> 
     
     
</beans>

不知道什么意思可以看上面的注解,

接下来我们写好我们数据库的基本配置文件

jdbc.Driver=com.mysql.jdbc.Driver 
jdbc.Username=root 
jdbc.password=root 
jdbc.Url=JDBC:mysql://127.0.0.1:3306/mydata

这里的话是配合上面c3p0数据库使用的,以便可以成功读取到数据库。

接下来我们再写一个实体类,后面用到查询数据的时候会用到实体类。

package com.xiaojiang.template; 
 
public class MyJDBCData { 
     
    private int id; 
    private String name; 
    private int age; 
    private String sex; 
     
    public int getId() { 
        return id; 
    } 
    public void setId(int id) { 
        this.id = id; 
    } 
    public String getName() { 
        return name; 
    } 
    public void setName(String name) { 
        this.name = name; 
    } 
    public int getAge() { 
        return age; 
    } 
    public void setAge(int age) { 
        this.age = age; 
    } 
    public String getSex() { 
        return sex; 
    } 
    public void setSex(String sex) { 
        this.sex = sex; 
    } 
    @Override 
    public String toString() { 
        return "MyJDBCData [id=" + id + ", name=" + name + ", age=" + age + ", sex=" + sex + "]"; 
    } 
     
 
}

数据库和数据表自己去新建,然后再根据自己创建的字段名来写这个实体类。

接下来我们上测试代码

package com.xiaojiang.template; 
 
import static org.junit.jupiter.api.Assertions.*; 
 
import java.util.ArrayList; 
import java.util.List; 
 
import org.junit.jupiter.api.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 org.springframework.jdbc.core.RowMapper; 
 
class jdbcTest { 
     
    private String sql []  = { 
            "insert into attributes(id,name,age,sex) values(?,?,?,?)", 
            "update attributes set name = ?  where id = ?", 
            "delete from attributes where id = ?", 
            "select *from attributes where id = ?", 
            "select *from attributes where id >= ?", 
            "select count(id) attributes from attributes" 
            }; 
     
    private  ApplicationContext ac = null; 
    private  JdbcTemplate p = null; 
     
    { 
        ac = new ClassPathXmlApplicationContext("applicationContext.xml"); 
        p = (JdbcTemplate) ac.getBean("JdbcTemplate"); 
    } 
     
    //查询多条数据 
    @Test 
    public void testQueryForList() 
    { 
        RowMapper<MyJDBCData> rowMapper = new BeanPropertyRowMapper<>(MyJDBCData.class); 
        List<MyJDBCData> data = p.query(sql[4], rowMapper,1); 
        System.out.println(data); 
    } 
     
    //获取数据库指定的数据,并得到一个对象 
    @Test 
    public void testQueryForObject() 
    { 
        //把查询结果转换成一个实体 
        RowMapper<MyJDBCData> rowMapper = new BeanPropertyRowMapper<>(MyJDBCData.class); 
        MyJDBCData data = p.queryForObject(sql[3],rowMapper,1); 
        System.out.println(data.toString()); 
    } 
     
    //批量增加数据 
    @Test  
    public void testbatchData() 
    { 
        List<Object[]> batchArgs = new ArrayList<>(); 
        batchArgs.add(new Object[]{"1","测试1","18","男"}); 
        batchArgs.add(new Object[]{"2","测试2","19","男"}); 
        batchArgs.add(new Object[] {"3","测试3","20","女"}); 
        p.batchUpdate(sql[0], batchArgs); 
    } 
    //查询单个列的值,做统计查询 
    @Test 
    public void testQueryForObject1() 
    { 
        Long count = p.queryForObject(sql[5],Long.class); 
        System.out.println(count); 
    } 
     
    //执行单条 INSERT UPDATE DELETE 
    @Test  
    public void testInsert() 
    { 
        p.update(sql[0],"1","小江","18","男"); 
    } 
    //修改 
    @Test 
    public void testUpdate() 
    { 
        p.update(sql[1],"小红",1); 
    } 
    //删除 
    @Test 
    public void testDelete() 
    { 
        p.update(sql[2],1); 
    } 
 
    @Test 
    void test() { 
        fail("Not yet implemented"); 
    } 
 
}

我们在用的时候最好把他写成一个类,要用到谁的时候就去调用就行了,我这里只是测试一下,就不多写了,写的简单不喜勿喷。

发布评论

分享到:

IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

[shell] 一次性赋值多个变量详解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。