14_Spring_JDBCTemplate的使用
14_Spring_JDBCTemplate的使用
JdbcTemplate概述
JdbcTemplate是spring框架中提供的一个对象,是对原始繁琐的Jdbc API对象的简单封装。spring框架为我们提供了很多的操作模板类。例如:操作关系型数据的
JdbcTemplate和,操作nosql数据库的RedisTemplate,操作消息队列的JmsTemplate等等。
按如下项目结构准备 maven jar项目即可
1 导入依赖
-
<dependencies> -
<!--spring核心容器包--> -
<dependency> -
<groupId>org.springframework</groupId> -
<artifactId>spring-context</artifactId> -
<version>5.3.5</version> -
</dependency> -
<!--spring切面包--> -
<dependency> -
<groupId>org.springframework</groupId> -
<artifactId>spring-aspects</artifactId> -
<version>5.3.5</version> -
</dependency> -
<!--aop联盟包--> -
<dependency> -
<groupId>aopalliance</groupId> -
<artifactId>aopalliance</artifactId> -
<version>1.0</version> -
</dependency> -
<!--德鲁伊连接池--> -
<dependency> -
<groupId>com.alibaba</groupId> -
<artifactId>druid</artifactId> -
<version>1.1.10</version> -
</dependency> -
<!--mysql驱动--> -
<dependency> -
<groupId>mysql</groupId> -
<artifactId>mysql-connector-java</artifactId> -
<version>8.0.22</version> -
</dependency> -
<!--springJDBC包--> -
<dependency> -
<groupId>org.springframework</groupId> -
<artifactId>spring-jdbc</artifactId> -
<version>5.3.5</version> -
</dependency> -
<!--spring事务控制包--> -
<dependency> -
<groupId>org.springframework</groupId> -
<artifactId>spring-tx</artifactId> -
<version>5.3.5</version> -
</dependency> -
<!--spring orm 映射依赖--> -
<dependency> -
<groupId>org.springframework</groupId> -
<artifactId>spring-orm</artifactId> -
<version>5.3.5</version> -
</dependency> -
<!--Apache Commons日志包--> -
<dependency> -
<groupId>commons-logging</groupId> -
<artifactId>commons-logging</artifactId> -
<version>1.2</version> -
</dependency> -
<!--Junit单元测试--> -
<dependency> -
<groupId>junit</groupId> -
<artifactId>junit</artifactId> -
<version>4.13.1</version> -
<scope>test</scope> -
</dependency> -
<!--lombok --> -
<dependency> -
<groupId>org.projectlombok</groupId> -
<artifactId>lombok</artifactId> -
<version>1.18.12</version> -
<scope>provided</scope> -
</dependency> -
</dependencies>
2 准备JDBC.properties
- jdbc_username=root
- jdbc_password=root
- jdbc_driver=com.mysql.cj.jdbc.Driver
- jdbc_url=jdbc:mysql://127.0.0.1:3306/mydb?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
3 准备applicationContext.xml
- <beans xmlns="http://www.springframework.org/schema/beans"
-
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" -
xmlns:p="http://www.springframework.org/schema/p" -
xmlns:c="http://www.springframework.org/schema/c" -
xmlns:util="http://www.springframework.org/schema/util" -
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 -
http://www.springframework.org/schema/util -
http://www.springframework.org/schema/util/spring-util.xsd -
http://www.springframework.org/schema/context -
http://www.springframework.org/schema/context/spring-context.xsd -
http://www.springframework.org/schema/aop -
http://www.springframework.org/schema/aop/spring-aop.xsd - ">
-
<!--spring 注解扫描--> -
<context:component-scan base-package="com.msb"/> -
<!--读取jdbc配置文件--> -
<context:property-placeholder location="classpath:jdbc.properties"/> -
<!--配置德鲁伊连接池--> -
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> -
<property name="username" value="${jdbc_username}"></property> -
<property name="password" value="${jdbc_password}"></property> -
<property name="url" value="${jdbc_url}"></property> -
<property name="driverClassName" value="${jdbc_driver}"></property> -
</bean> -
<!--配置JDBCTemplate对象,并向里面注入DataSource--> -
class="org.springframework.jdbc.core.JdbcTemplate"><bean id="jdbcTemplate" -
<!--通过set方法注入连接池--> -
<property name="dataSource" ref="dataSource"></property> -
</bean>
3 准备实体类
- package com.msb.pojo;
- import lombok.AllArgsConstructor;
- import lombok.Data;
- import lombok.NoArgsConstructor;
- import java.util.Date;
- /**
-
- @Author: Ma HaiYang
-
- @Description: MircoMessage:Mark_7001
- */
- @AllArgsConstructor
- @NoArgsConstructor
- @Data
- public class Emp implements Serializable{
-
private Integer empno; -
private String ename; -
private String job; -
private Integer mgr; -
private Date hiredate; -
private Double sal; -
private Double comm; -
private Integer deptno; - }
4 准备service层接口和实现类
-
package com.msb.service;
-
import com.msb.pojo.Emp;
-
import java.util.List;
-
/**
-
- @Author: Ma HaiYang
-
- @Description: MircoMessage:Mark_7001
-
*/
-
public interface EmpService {
-
int findEmpCount(); -
Emp findByEmpno(int empno); -
List<Emp> findByDeptno(int deptno); -
int addEmp(Emp emp); -
int updateEmp(Emp emp); -
int deleteEmp( int empno); -
}
-
package com.msb.service.impl;
-
import com.msb.dao.EmpDao;
-
import com.msb.pojo.Emp;
-
import com.msb.service.EmpService;
-
import org.springframework.beans.factory.annotation.Autowired;
-
import org.springframework.stereotype.Service;
-
import java.util.List;
-
/**
-
- @Author: Ma HaiYang
-
- @Description: MircoMessage:Mark_7001
-
*/
-
@Service
-
public class EmpServiceImpl implements EmpService {
-
@Autowired -
private EmpDao empDao; -
@Override -
public int findEmpCount() { -
return empDao.findEmpCount(); -
} -
@Override -
public Emp findByEmpno(int empno) { -
return empDao.findByEmpno( empno); -
} -
@Override -
public List<Emp> findByDeptno(int deptno) { -
return empDao.findByDeptno( deptno); -
} -
@Override -
public int addEmp(Emp emp) { -
return empDao.addEmp(emp); -
} -
@Override -
public int updateEmp(Emp emp) { -
return empDao.updateEmp(emp); -
} -
@Override -
public int deleteEmp(int empno) { -
return empDao.deleteEmp(empno); -
} -
}
5 准备dao层接口和实现类
-
package com.msb.dao;
-
import com.msb.pojo.Emp;
-
import java.util.List;
-
/**
-
- @Author: Ma HaiYang
-
- @Description: MircoMessage:Mark_7001
-
*/
-
public interface EmpDao {
-
int findEmpCount(); -
Emp findByEmpno(int empno); -
List<Emp> findByDeptno(int deptno); -
int addEmp(Emp emp); -
int updateEmp(Emp emp); -
int deleteEmp(int empno); -
}
-
package com.msb.dao.impl;
-
import com.msb.dao.EmpDao;
-
import com.msb.pojo.Emp;
-
import org.springframework.beans.factory.annotation.Autowired;
-
import org.springframework.jdbc.core.BeanPropertyRowMapper;
-
import org.springframework.jdbc.core.JdbcTemplate;
-
import org.springframework.jdbc.core.RowMapper;
-
import org.springframework.stereotype.Repository;
-
import java.sql.ResultSet;
-
import java.sql.SQLException;
-
import java.util.List;
-
/**
-
- @Author: Ma HaiYang
-
- @Description: MircoMessage:Mark_7001
-
*/
-
@Repository
-
public class EmpDaoImpl implements EmpDao {
-
@Autowired -
private JdbcTemplate jdbcTemplate; -
@Override -
public int findEmpCount() { -
/*查询员工个数 -
* queryForObject 两个参数 -
* 1 SQL语句 -
* 2 返回值类型 -
* -
* */ -
Integer empCount = jdbcTemplate.queryForObject("select count(1)from emp", Integer.class);
-
return empCount; -
} -
@Override -
public Emp findByEmpno(int empno) { -
/* -
* 查询单个员工对象 -
* queryForObject三个参数 -
* 1 SQL语句 -
* 2 RowMapper接口的实现类对象,用于执行返回的结果用哪个类来进行封装 ,实现类为BeanPropertyRowMapper -
* 3 SQL语句中需要的参数 (可变参数) -
* */ -
BeanPropertyRowMapper<Emp> rowMapper =newBeanPropertyRowMapper<>(Emp.class);
-
Emp emp = jdbcTemplate.queryForObject("select * from emp whereempno =?", rowMapper, empno);
-
return emp; -
} -
@Override -
public List<Emp> findByDeptno(int deptno) { -
/* -
* 查询单个员工对象 -
* query三个参数 -
* 1 SQL语句 -
* 2 RowMapper接口的实现类对象,用于执行返回的结果用哪个类来进行封装 ,实现类为BeanPropertyRowMapper -
* 3 SQL语句中需要的参数 (可变参数) -
* */ -
BeanPropertyRowMapper<Emp> rowMapper =newBeanPropertyRowMapper<>(Emp.class);
-
List<Emp> emps = jdbcTemplate.query("select * from emp where deptno=?", rowMapper, deptno);
-
return emps; -
} -
@Override -
public int addEmp(Emp emp) { -
/*增删改 -
* 统统用update方法 两个参数 -
* 1 SQL语句 -
* 2 SQL语句需要的参数 (可变参数) -
* -
* */ -
String sql ="insert into emp values(DEFAULT ,?,?,?,?,?,?,?)"; -
Object[] args={emp.getEname(),emp.getJob(),emp.getMgr(),emp.getHiredate(),emp.getSal(),em
.getComm(),emp.getDeptno()}; -
return jdbcTemplate.update(sql,args); -
} -
@Override -
public int updateEmp(Emp emp) { -
String sql ="update emp set ename =? , job =?, mgr=? , hiredate =?,sal=?, comm=?, deptno =? where empno =?";
-
Object[] args={emp.getEname(),emp.getJob(),emp.getMgr(),emp.getHiredate(),emp.getSal(),em
.getComm(),emp.getDeptno(),emp.getEmpno()}; -
return jdbcTemplate.update(sql,args); -
} -
@Override -
public int deleteEmp(int empno) { -
String sql ="delete from emp where empno =?"; -
return jdbcTemplate.update(sql, empno); -
} -
}
6 测试代码
- package com.msb.test;
- import com.msb.pojo.Emp;
- import com.msb.service.EmpService;
- import org.junit.Test;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- import java.util.Date;
- import java.util.List;
- /**
-
- @Author: Ma HaiYang
-
- @Description: MircoMessage:Mark_7001
- */
- public class Test1 {
-
@Test -
public void testEmpService(){ -
ClassPathXmlApplicationContext("applicationContext.xml");ApplicationContext context=new -
EmpService empService = context.getBean(EmpService.class); -
// 查询员工个数 -
/*int empCount = empService.findEmpCount(); -
System.out.println(empCount);*/ -
// 根据员工编号查询员工对象 -
/* Emp byEmpno = empService.findByEmpno(7521); -
System.out.println(byEmpno);*/ -
/*根据部门编号查询多个员工对象集合*/ -
/*List<Emp> emps = empService.findByDeptno(20); -
emps.forEach(System.out::println);*/ -
/*增加员工信息*/ -
7521, new Date(), 2000.0, 100.0, 10));/*int rows = empService.addEmp(new Emp(null, "TOM", "SALESMAN", -
System.out.println(rows);*/ -
/*根据员工编号修改员工信息*/ -
7839, new Date(), 3000.0, 0.0, 20));/*int rows = empService.updateEmp(new Emp(7939, "JERRY", "MANAGER", -
System.out.println(rows);*/ -
/*根据员工编号删除员工信息*/ -
/*int rows = empService.deleteEmp(7939); -
System.out.println(rows);*/ -
} - }
Generated with Mybase Desktop 8.2.13

浙公网安备 33010602011771号