14_Spring_JDBCTemplate的使用
14_Spring_JDBCTemplate的使用
JdbcTemplate概述
JdbcTemplate是spring框架中提供的一个对象,是对原始繁琐的Jdbc API对象的简单封装。spring框架为我们提供了很多的操作模板类。例如:操作关系型数据的
JdbcTemplate和,操作nosql数据库的RedisTemplate,操作消息队列的JmsTemplate等等。
按如下项目结构准备 maven jar项目即可
1 导入依赖
org.springframework spring-context 5.3.5 org.springframework spring-aspects 5.3.5 aopalliance aopalliance 1.0 com.alibaba druid 1.1.10 mysql mysql-connector-java 8.0.22 org.springframework spring-jdbc 5.3.5 org.springframework spring-tx 5.3.5 org.springframework spring-orm 5.3.5 commons-logging commons-logging 1.2 junit junit 4.13.1 test org.projectlombok lombok 1.18.12 provided
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
- ">
- <context:component-scan base-package="com.msb"/>
- <context:property-placeholder location="classpath:jdbc.properties"/>
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
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
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
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
rowMapper =new
BeanPropertyRowMapper<>(Emp.class); -
Emp emp = jdbcTemplate.queryForObject("select * from emp where
empno =?", rowMapper, empno); -
return emp;
-
}
-
@Override
-
public List
findByDeptno(int deptno) { -
/*
-
* 查询单个员工对象
-
* query三个参数
-
* 1 SQL语句
-
* 2 RowMapper接口的实现类对象,用于执行返回的结果用哪个类来进行封装 ,实现类为BeanPropertyRowMapper
-
* 3 SQL语句中需要的参数 (可变参数)
-
* */
-
BeanPropertyRowMapper
rowMapper =new
BeanPropertyRowMapper<>(Emp.class); -
List
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(){
- ApplicationContext context=new
ClassPathXmlApplicationContext("applicationContext.xml"); - EmpService empService = context.getBean(EmpService.class);
- // 查询员工个数
- /*int empCount = empService.findEmpCount();
- System.out.println(empCount);*/
- // 根据员工编号查询员工对象
- /* Emp byEmpno = empService.findByEmpno(7521);
- System.out.println(byEmpno);*/
- /根据部门编号查询多个员工对象集合/
- /*List
emps = empService.findByDeptno(20); - emps.forEach(System.out::println);*/
- /增加员工信息/
- /*int rows = empService.addEmp(new Emp(null, "TOM", "SALESMAN",
7521, new Date(), 2000.0, 100.0, 10)); - System.out.println(rows);*/
- /根据员工编号修改员工信息/
- /*int rows = empService.updateEmp(new Emp(7939, "JERRY", "MANAGER",
7839, new Date(), 3000.0, 0.0, 20)); - System.out.println(rows);*/
- /根据员工编号删除员工信息/
- /*int rows = empService.deleteEmp(7939);
- System.out.println(rows);*/
- }
- }
Generated with Mybase Desktop 8.2.13

浙公网安备 33010602011771号