一,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);
}
}
原文:https://www.cnblogs.com/liuying23/p/11781471.html