JDBCTemplate

一,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