zoukankan      html  css  js  c++  java
  • 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
    一点一点积累,一点一点蜕变!
  • 相关阅读:
    玩转手工测试之客户端产品手工测试提效实践
    接口测试常用工具及测试方法(新手篇)
    我北漂 7 年,再也不打工了!
    测试人如何高效地设计自动化测试框架?
    你这样,测试人员不能活了。。。
    如何优雅地记录操作日志?
    C#String.IndexOf检索字符串中字符出现的次数
    C#基础之数组
    C#基础之is,as关键字
    C#委托与事件
  • 原文地址:https://www.cnblogs.com/qq2210446939/p/14759854.html
Copyright © 2011-2022 走看看