Springboot单元测试和Jdbctemplate的使用

来源:互联网 发布:nike跑步软件下载 编辑:程序博客网 时间:2024/06/01 09:14

1、搭建springboot项目,加入mysql和jdbc依赖

                <!--mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!--jdbc--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency>

2、在application.yml中配置数据库连接

#数据库配置spring:  datasource:    driver-class-name: com.mysql.jdbc.Driver    url: jdbc:mysql://127.0.0.1:3306/db_test    username: root    password: root

mysql中student表数据:



3、单元测试

如果使用的springboot版本是1.4.0之前的,需要将@SpringBootTest改为@SpringApplicationConfiguration和@WebAppConfiguration

(1)查询

从数据库中查询id为2的数据

在使用jdbctemplate的queryForObject方法查询时,如果结果集为空或者结果集size大于2,将会抛出异常,如果想在结果集为空时,返回null,需要继承jdbctemplate重写该方法。

@RunWith(SpringJUnit4ClassRunner.class)@SpringBootTestpublic class JDBCTest {    @Autowired    private JdbcTemplate jdbcTemplate;//创建jdbctemplate对象,并使用spring的自动注入完成实例化    @Test    public void selectTest1() {        Student student;        String sql = "select * from student where id=?";//sql语句        Object[] params = new Object[]{2};//设置参数        //使用queryForObject方法查询,当查询结果为空或者结果size大于2时,会抛出异常        student = (Student) jdbcTemplate.queryForObject(sql, params, new RowMapper() {            //重写mapRow方法,resultSet为查询的结果集            @Override            public Object mapRow(ResultSet resultSet, int i) throws SQLException {                Student stu = new Student();                stu.setId(resultSet.getInt("id"));                stu.setAge(resultSet.getInt("age"));                stu.setName(resultSet.getString("name"));                return stu;            }        });        System.out.println(student.getId());        System.out.println(student.getAge());        System.out.println(student.getName());    }}
输出结果

219lysin


如果不想重写mapRow方法,可以使用execute方法,并创建一个PreparedStatementCallback匿名类,重写doInPrepareStatement方法,然后使用JDBC中的PreparedStatement执行查询。

   @Test    public void selectTest2() {        Student student;        String sql = "select * from student where id=?";//sql语句        //使用queryForObject方法查询,当查询结果为空或者结果size大于2时,会抛出异常        student = (Student) jdbcTemplate.execute(sql,new PreparedStatementCallback(){            @Override            public Object doInPreparedStatement(PreparedStatement preparedStatement) throws SQLException, DataAccessException {                preparedStatement.setInt(1,1);//设置第一个参数为1                ResultSet resultSet=preparedStatement.executeQuery();//执行查询                if(resultSet.next()){                    Student stu = new Student();                    stu.setId(resultSet.getInt("id"));                    stu.setAge(resultSet.getInt("age"));                    stu.setName(resultSet.getString("name"));                    return stu;//当查询结果有多条,也可以创建list返回                }else{                    return null;                }            }        });        if(student!=null){            System.out.println(student.getId());            System.out.println(student.getAge());            System.out.println(student.getName());        }else {            System.out.println("未找到数据");        }    }
输出:

未找到数据

(2)查询

将id为2的name改为aaa

    @Test    public void updateTest(){        int result=0;        String sql="update student set name=? where id=?";        Object[] params = new Object[]{"aaaaa",2};//设置参数        result=jdbcTemplate.update(sql,params);//返回受影响的行数        System.out.println(result);    }
输出结果:

1
数据库记录:

+----+------+--------+| id | age  | name   |+----+------+--------+|  2 |   19 | aaaaa  ||  3 |   21 | wangwu |+----+------+--------+

(3)插入

 @Test    public void insertTest(){        int result=0;        String sql="insert into student(id,age,name) values(?,?,?)";        Object[] params = new Object[]{4,21,"wangwu"};//设置参数        result=jdbcTemplate.update(sql,params);//通过update方法实现插入功能        System.out.println(result);    }
+----+------+--------+| id | age  | name   |+----+------+--------+|  2 |   19 | aaaaa  ||  3 |   21 | wangwu ||  4 |   21 | wangwu |+----+------+--------+
(4)删除

删除id为2的数据

   @Test    public void deleteTest(){        int result=0;        String sql="delete from student where id=?";        Object[] params = new Object[]{2};//设置参数        result=jdbcTemplate.update(sql,params);//通过update方法实现插入功能        System.out.println(result);    }
+----+------+--------+| id | age  | name   |+----+------+--------+|  3 |   21 | wangwu ||  4 |   21 | wangwu |+----+------+--------+


参考:

http://www.cnblogs.com/caoyc/p/5630622.html

http://blog.csdn.net/view1933/article/details/7579169

http://www.cnblogs.com/ilinuxer/p/6481228.html

http://blog.csdn.net/zknxx/article/details/53244255

http://n-meng.iteye.com/blog/1055870

原创粉丝点击