• Spring JDBC


    简述

      原生的JDBC操作过于繁琐,spring框架提供了一个JDBCTemplate对象来简化JDBC的开发。连接的获取,释放,结果集的封装等操作均交给template干就行。

    使用流程

      第一步我们得先导入JDBCTamplate的相关jar包,对没错有5个

      然后我们可以创建JDBCTamplate对象依赖于数据源DataSource

      然后我们就可以使用Tamplate的方法来进行CRUD操作了,我们常用的方法有:

    update():执行DML语句。增、删、改语句
    queryForMap():查询结果将结果封装为一个map集
    queryForList():查询结果将结果封装为一个list集
    query():查询结果,将结果封装为一个javabean对象
    queryForObject():查询结果,将结果封装为对象

      设现在有一个stduent表,我们已经完成了stduent的bean初始化

      

      我们以如下代码来测试teamplate的好用:

    package hjj.JDBCTamplate;
    
    import hjj.JDBCTamplate.domain.Student;
    import hjj.datasource.utils.JDBCUtils;
    import org.junit.Test;
    import org.springframework.jdbc.core.BeanPropertyRowMapper;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.jdbc.core.RowMapper;
    
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.List;
    import java.util.Map;
    import java.util.Set;
    
    public class StudentDemo {
        private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
    
        /**
         * 修改id=1的学生的分数为200
         */
        @Test
        public void test1(){
                //2.定义sql
                String sql = "update student set score = 200 where id = ?";
                //3.执行sql
                int count = template.update(sql, 1);
                System.out.println(count);
        }
    
        /**
         * 添加一条记录
         */
        @Test
        public void test2(){
            String sql = "insert into student values(null,?,?)";
            int count = template.update(sql,"jjj",999);
            System.out.println(count);
        }
        /**
         * 删除刚刚添加的记录
         */
        @Test
        public void test3(){
            String sql = "delete from student where id = 3";
            int count = template.update(sql);
            System.out.println(count);
        }
        /**
         * 查询id为1的记录,将其结果封装为Map集合
         */
        @Test
        public void test4(){
            String sql = "select * from student where id = ?";
            Map map = template.queryForMap(sql,1);
            System.out.println(map);//键值为字段名,值为该记录的值
        }
        /**
         * 查询id为1的记录,将其结果封装为Map集合
         */
        @Test
        public void test5(){
            String sql = "select * from student";
            List<Map<String, Object>> list = template.queryForList(sql);//将每一条记录都封装为一个map,然后将每个map封装为一个list
            for (Map<String, Object> stringObjectMap : list) {
                System.out.println(stringObjectMap);
            }
        }
        /**
         * 查询所有记录,然后封装为student的list集合
         * 写法一自己实现mapRow接口
         */
        @Test
        public void test6(){
            String sql = "select * from student";
            List<Student> students = template.query(sql, new RowMapper<Student>() {
                @Override
                public Student mapRow(ResultSet resultSet, int i) throws SQLException {
                    Student student = new Student();
                    int id = resultSet.getInt("id");
                    String name = resultSet.getString("name");
                    int score = resultSet.getInt("score");
                    student.setId(id);
                    student.setName(name);
                    student.setScore(score);
                    return student;
                }
            });
            System.out.println(students);
        }
        /**
         * 查询所有记录,然后封装为student的list集合
         * 写法二用别人写好的
         */
        @Test
        public void test7(){
            String sql = "select * from student";
            List<Student> students = template.query(sql, new BeanPropertyRowMapper<Student>(Student.class));
            System.out.println(students);
        }
    
        /**
         * 查询总记录条数
         */
        @Test
        public void test8(){
            String sql = "select count(id) from student";
            Long tot = template.queryForObject(sql, Long.class);
            System.out.println(tot);
        }
    }
    View Code
    一点一点积累,一点一点蜕变!
  • 相关阅读:
    工作实战之项目常用技术
    Thymeleaf的错误解决方式
    实用小demo
    idea常用的几个插件
    idea2019+Plugins中搜索不到任何插件解决办法
    git的初体验
    springboot2.+的整合log4j2错误解决浅谈
    MobaXterm百度网盘下载
    阿里云RDS云数据库连接步骤
    读源码学编程之——死循环妙用
  • 原文地址:https://www.cnblogs.com/qq2210446939/p/14759854.html
Copyright © 2020-2023  润新知