一,JDBCTemplate介绍
为了使 JDBC 更加易于使用,Spring 在 JDBCAPI 上定义了一个抽象层, 以此建立一个JDBC存取框架,Spring Boot Spring Data-JPA。
作为 SpringJDBC 框架的核心, JDBC 模板的设计目的是为不同类型的JDBC操作提供模板方法. 每个模板方法都能控制整个过程,并允许覆盖过程中的特定任务。
通过这种方式,可以在尽可能保留灵活性的情况下,将数据库存取的工作量降到最低。
二,JDBCTemplate方法介绍
1、execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;Execute、executeQuery、executeUpdate
2、update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句 SQL SERVCER(GO SQL语句 GO) ;
3、query方法及queryForXXX方法:用于执行查询相关语句;
4、call方法:用于执行存储过程、函数相关语句。
三,案例
实体类:
dao层:
dao层实现类:
@Repository public class IStudentDaoImpl implements IStudentDao { @Resource private JdbcTemplate jdbcTemplate; @Override public List<Student> getAllStudent() { //获取JDBC模板对象 String sql="select * from studentinfo"; /*List<Student> studentList=jdbcTemplate.query(sql, new RowMapper<Student>() { @Override public Student mapRow(ResultSet rs, int i) throws SQLException { Student stu=new Student(); stu.setStuId(rs.getInt("stuid")); stu.setStudentName(rs.getString("studentName")); stu.setAddress(rs.getString("address")); return stu; } });*/ RowMapper<Student> rowMapper=new BeanPropertyRowMapper<>(Student.class); List<Student> studentList=jdbcTemplate.query(sql,rowMapper); return studentList; } @Override public int addStudent(Student stu) { String sql="insert into studentinfo values(default,?,?) "; Object[] objs={stu.getStudentName(),stu.getAddress()}; int count=jdbcTemplate.update(sql,objs); System.out.println("受影响行数"+count); return count; } @Override public int update(Student stu) { String sql="update studentinfo set studentName=? where stuid=?"; int update=jdbcTemplate.update(sql,stu.getStudentName(),stu.getStuId()); return update; } @Override public int delete(int id) { String sql="delete from studentinfo where stuid=?"; int count=jdbcTemplate.update(sql,id); return count; } }
service层:
service层实现类:
@Service("iStudentService") public class IStudentServiceImpl implements IStudentService { @Resource private IStudentDao istudentDao; @Override public List<Student> getAllStudent() { return istudentDao.getAllStudent(); } @Override public int addStudent(Student stu) { return istudentDao.addStudent(stu); } @Override public int update(Student stu) { return istudentDao.update(stu); } @Override public int delete(int id) { return istudentDao.delete(id); } public IStudentDao getIstudentDao() { return istudentDao; } public void setIstudentDao(IStudentDao istudentDao) { this.istudentDao = istudentDao; } }
配置文件:
测试类:
public class JdbcTemplateTest { public static void main(String[] args) { ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationcontext.xml"); IStudentService iStudentService =(IStudentService) ctx.getBean("iStudentService"); /* List<Student> allStudent = iStudentService.getAllStudent();*/ /*Student stu=new Student(); stu.setStudentName("肖战"); stu.setAddress("陈晨心里"); iStudentService.addStudent(stu); */ Student student=new Student(); student.setStuId(2); student.setStudentName("北野"); int count=iStudentService.update(student); System.out.println(count); /*for (Student student:allStudent){ System.out.println(student.getStudentName()); }*/ Student stu=new Student(); iStudentService.delete(5); } }