凯哥学堂

搜索

凯哥学堂

通过JdbcTemplate实现增删查改

2018-11-13 18:38| 发布者: 可可| 查看: 1| 评论: 0

凯哥学堂 首页 资讯 学习笔记 JavaEE 查看内容

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。

通过JdbcTemplate来编写一个简单的增删查改小例题:

接口:

package org.zero01.dao;

import org.zero01.pojo.Student;

import java.util.List;

public interface DAO {

    public int insert(Student student);

    public int delete(int sid);

    public List<Student> selectAll();

    public List<Student> selectByLimit(int start, int end);

    public Student selectById(int sid);

    public long countAll();

    public int update(Student student);
}

因为JdbcTemplate不提供表格字段自动映射到对象的属性上的功能,所以我们需要自己实现它的一个接口来进行手动配置映射:

package org.zero01.dao;

import org.springframework.jdbc.core.RowMapper;
import org.zero01.pojo.Student;

import java.sql.ResultSet;
import java.sql.SQLException;

// Student对象的属性映射类
public class StudentMapper implements RowMapper<Student> {

    public Student mapRow(ResultSet resultSet, int i) throws SQLException {
        Student student = new Student();
        student.setSid(resultSet.getInt("sid"));
        student.setName(resultSet.getString("sname"));
        student.setAge(resultSet.getInt("age"));
        student.setSex(resultSet.getString("sex"));
        student.setAddress(resultSet.getString("address"));

        return student;
    }
}

StudentDAO类:

package org.zero01.dao;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.zero01.pojo.Student;

import javax.sql.DataSource;
import java.util.List;

@Component("stuDAO")
public class StudentDAO extends JdbcTemplate implements DAO {

    @Autowired
    // 重写父类的setDataSource来设置数据源对象
    public void setDataSource(DataSource dataSource) {
        super.setDataSource(dataSource);
    }

    // 插入单行数据
    public int insert(Student student) {
        String sql = "INSERT INTO student(sname,age,sex,address) VALUES (?,?,?,?)";
        int row = update(sql, student.getName(), student.getAge(), student.getSex(), student.getAddress());

        return row;
    }

    // 根据id进行删除
    public int delete(int sid) {
        return update("DELETE FROM student WHERE sid=?", sid);
    }

    // 查询多行数据
    public List<Student> selectAll() {

        // 查询多个对象就需要自己传递映射类进行映射
        List<Student> studentList = query("SELECT * FROM student", new StudentMapper());

        return studentList;
    }

    // 分页查询数据
    public List<Student> selectByLimit(int start, int end) {

        // 查询多个对象就需要自己传递映射类进行映射
        List<Student> studentList = query("SELECT * FROM student LIMIT " + start + "," + end, new StudentMapper());

        return studentList;
    }

    // 根据id查询单行数据
    public Student selectById(int sid) {
        // 存储参数
        Object[] objects = {sid};
        Student student = queryForObject("SELECT * FROM student where sid=?", objects, new StudentMapper());

        return student;
    }

    // 查询表的总行数
    public long countAll() {
        Long countNumber = queryForObject("SELECT count(*) FROM student", Long.class);

        return countNumber;
    }

    // 更新单行数据
    public int update(Student student) {
        String sql = "UPDATE student SET sname=?,age=?,sex=?,address=? WHERE sid=?";
        return update(sql, student.getName(), student.getAge(), student.getSex(), student.getAddress(), student.getSid());
    }
}

如上,可以看到,通过使用Spring提供的JdbcTemplate,我们只需要编写具体的sql语句即可,比起编写普通的JDBC代码要简洁许多,也没有出现多余的代码。当项目不需要使用到Mybatis、Hibernate等框架时,使用JdbcTemplate也不错。


关注我们


微信

微博

QQ