一丶jdbcTemplate是什么
jdbcTemplate是Spring提供的一种操作数据库的技术,是对Jdbc的封装。语法非常接近DBUtils.
使用JdbcTemplate可以直接操作数据库,加快效率。
二丶jdbcTemplate完整实现步骤
2.1)创建web项目
2.2)添加String jar包
2.3)添加String Template支持(配置applicationContext.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">
//配置数据源
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
<property name="url" value="jdbc:mysql:///tb_test"/>
</bean>
//添加jdbcTemplate对应的bean
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>
</beans>
2.4)创建一个Dept类(dept.java)
public class dept {
private String deptno;
private String dname;
private String loc;
public String getDeptno() {
return deptno;
}
public void setDeptno(String deptno) {
this.deptno = deptno;
}
public String getDname() {
return dname;
}
public void setDname(String dname) {
this.dname = dname;
}
public String getLoc() {
return loc;
}
public void setLoc(String loc) {
this.loc = loc;
}
public dept(String deptno, String dname, String loc) {
this.deptno = deptno;
this.dname = dname;
this.loc = loc;
}
public dept(){
super();
}
@Override
public String toString() {
return "dept{" +
"deptno='" + deptno + '\'' +
", dname='" + dname + '\'' +
", loc='" + loc + '\'' +
'}';
}
}
2.5)创建一个对Dept类进行CURD操作的类(deptService.java)
public class DeptService {
private JdbcTemplate jdbcTemplate;//注入jdbcTemplate
//代码块,在执行方法之前获取jdbcTemplate
{
ApplicationContext act = new ClassPathXmlApplicationContext("applicationContext.xml");
jdbcTemplate = (JdbcTemplate) act.getBean("jdbcTemplate");//对应applicationContext.xml文件中配置的 jdbcTemplate
System.out.println("jdbcTemplate:"+jdbcTemplate);
}
//查询操作
public void selectAllDepts()throws SQLException {
BeanPropertyRowMapper<dept> rowMapper = new BeanPropertyRowMapper<>(dept.class);//使用Spring的JdbcTemplate查询数据库,获取List结果列表,数据库表字段和实体类自动对应,可以使用BeanPropertyRowMapper
List<dept> depts = jdbcTemplate.query("select * from tb_dept", rowMapper);
for(dept item:depts){
System.out.println(item);
}
}
//使用jdbcTemplate进行插入操作
public void addDept(dept dept) throws SQLException{
int add = jdbcTemplate.update("insert into tb_dept values (?,?,?)", dept.getDeptno(), dept.getDname(), dept.getLoc());
if (add==1){
System.out.println("insert success");
}else{
System.out.println("insert failed");
}
}
//更新操作
public void updateDept(dept dept) throws SQLException{
int update = jdbcTemplate.update("update tb_dept set dname=?,loc=?,where deptno=?");
if (update==1){
System.out.println("insert success");
}else{
System.out.println("insert failed");
}
}
//删除操作
public void deleteDept(dept dept)throws SQLException{
int delete = jdbcTemplate.update("delete from tb_dept where deptno =? ",dept.getDeptno());
if (delete==1){
System.out.println("insert success");
}else{
System.out.println("insert failed");
}
}
//批量添加
public void batchAdd()throws SQLException{
String sql="insert into tb_dept values(?,?,?)";
List<Object[]> depts = new ArrayList<>();
depts.add(new Object[]{"a","aa","aaa"});
depts.add(new Object[]{"b","bb","bbb"});
depts.add(new Object[]{"c","cc","ccc"});
int[] batchadd = jdbcTemplate.batchUpdate(sql, depts);
}
//查询数据库中记录的数量
public long selectCount()throws SQLException{
String sql="select count(*) from tb_dept";
Long res = jdbcTemplate.queryForObject(sql, long.class);
return res;
}
}
2.6)创建一个测试类(DeptTest.java)
public class DeptTest {
public static void main(String[] args) throws SQLException {
DeptService deptService = new DeptService();
deptService.addDept(new dept("g","ggg","gggg"));
deptService.batchAdd();
deptService.selectAllDepts();
System.out.println(deptService.selectCount());
deptService.deleteDept("g");
}
}//时间原因,只测试几个