学习创建项目之使用SpringJDBCTemplate

前言

我的上篇文章中有关于java项目创建,下边开始建立SpringJdbcTemplate配置连接数据库

SpringJDBCTemplate简介

Spring对数据库的操作在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到JdbcTemplate之中。

JdbcTemplate主要提供以下五类方法:

  • execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
  • update方法:update方法用于执行新增、修改、删除等语句;
  • batchUpdate方法:batchUpdate方法用于执行批处理相关语句;
  • query方法及queryForXXX方法:用于执行查询相关语句;
  • call方法:用于执行存储过程、函数相关语句。

案例

  • *在mysql创建一张学生表
CREATE TABLE `student` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `student_id` varchar(11) NOT NULL,
 `name` varchar(255) NOT NULL,
 `age` int(11) NOT NULL,
 `birthday` date DEFAULT NULL,
 PRIMARY KEY (`id`),
 UNIQUE KEY `student_id` (`student_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  • 创建一个学生实体类
package cn.java.db;

public class studentEntity {
   /**
    * 实体类
    */
   private String student_id;
   private String name;
   private String age;
   private String birthday;
   
   public String getStudent_id() {
   	return student_id;
   }
   public void setStudent_id(String student_id) {
   	this.student_id = student_id;
   }
   public String getName() {
   	return name;
   }
   public void setName(String name) {
   	this.name = name;
   }
   public String getAge() {
   	return age;
   }
   public void setAge(String age) {
   	this.age = age;
   }
   public String getBirthday() {
   	return birthday;
   }
   public void setBirthday(String birthday) {
   	this.birthday = birthday;
   }
   
   @Override
   public String toString() {
   	return "student [student_id=" + student_id + ", name=" + name + ", age=" + age + ", birthday=" + birthday + "]";
   }
}
  • 创建一个类并继承JdbcDaoSupport
	package cn.java.db;

import org.springframework.jdbc.core.support.JdbcDaoSupport;

public class TestDao extends JdbcDaoSupport {

}

  • 创建一个实现dao的类
	package cn.java.data;

import cn.java.db.TestDao;

/**
* @author wang
*
*/

public class DataReaDao {

   private static TestDao dao;

   public static TestDao getDao() {
   	return dao;
   }

   public static void setDao(TestDao dao) {
   	DataReaDao.dao = dao;
   }

}
  • 在src下创建一个名为属性配置文件 jdbc.properties(名字最好浅俗易懂),通常我们会将数据连接方式放到一个单独的文件中,方便后期维护
# MySQL database connection drive configuration
mysql.driverClassName=com.mysql.jdbc.Driver
mysql.url=jdbc\:mysql\://127.0.0.1\:3306/student_manage?useUnicode\=true&characterEncoding\=UTF-8
mysql.username=root
mysql.password=123456
mysql.initialSize=1
mysql.maxActive=500
mysql.maxIdle=2
mysql.minIdle=1
  • 配置Spring配置文件applicationContext-mysql.xml(将数据源单独写一个xml文件方便分离理解)
<!-- 获取配置资源 -->  
   <context:property-placeholder location="classpath:jdbc.properties" />  
   
   <!-- 数据源 -->
   <bean id="mysqlDataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
   		<property name="driverClassName" value="${mysql.driverClassName}" />
   		<property name="url" value="${mysql.url}" />
   		<property name="username" value="${mysql.username}" />
   		<property name="password" value="${mysql.password}" />
   		<!-- 连接池启动时的初始值 -->
   		<property name="initialSize" value="${mysql.initialSize}" />
   		<!-- 连接池的最大值 -->
   		<!-- <property name="maxActive" value="${mysql.maxActive}" /> -->
   		<!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 -->
   		<property name="maxIdle" value="${mysql.maxIdle}" />
   		<!-- 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->
   		<property name="minIdle" value="${mysql.minIdle}" />
   </bean>
   
   <!-- The original JdbcTemplate definition -->
   <!-- 引入数据源,ref 引入一个名为*mysqlDataSource*的bean对象 -->
   <bean id="mysqlJdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
     	<constructor-arg ref="mysqlDataSource" />
   </bean>
  • 配置Spring配置文件applicationContext.xml
   <!-- 获取配置资源 -->
   <context:property-placeholder location="classpath:jdbc.properties" />
   <!-- 导入配置文件 -->
   <import resource="applicationContext-mysql.xml" />
   
   <bean id="studentDao" class="cn.java.db.TestDao">
   		<property name="dataSource" ref="mysqlDataSource" />
   </bean>
   
   <bean id="DataServer" class="cn.java.data.DataClient">
   		<property name="studentDao" ref="studentDao" />
   </bean>
  • 创建一个测试类,运行update方法插入一条数据
   package cn.java.data;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class mainRun {
   public static void main(String arg[]) {
   		//启动IOC容器
       ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
       //获取dao
       DataReaDao dataReaDao = (DataReaDao) ctx.getBean("DataReaDao");
       String sql = "insert into student(student_id,name,age,birthday) values(?,?,?,?)";
       int res = dataReaDao.getDao().getJdbcTemplate().update(sql,"00006","zhaoqi","21","1997-07-21");
       if(res>0) {
       	System.out.println("成功插入一条数据!");
       }else {
       	System.out.println("数据插入失败!");
       }
   }
}

运行main方法,输出成功插入
在这里插入图片描述
查看数据库
在这里插入图片描述

  • 批量处理数据,batchUpdate方法第二参数是一个元素为Object[]数组类型的List集合
package cn.java.data;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class mainRun {
   public static void main(String arg[]) {
   		//启动IOC容器
       ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
       //获取dao
       DataReaDao dataReaDao = (DataReaDao) ctx.getBean("DataReaDao");
   	    String sql="update student set name = \"zhang\" where id = ?";

       List<Object[]> batchArgs=new ArrayList<Object[]>();
       batchArgs.add(new Object[]{1});
       batchArgs.add(new Object[]{2});
       batchArgs.add(new Object[]{3});

       dataReaDao.getDao().getJdbcTemplate().batchUpdate(sql, batchArgs);
   }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值