二.二 增删改 基本用法
均省略 UserService接口中的方法。
增,删,改,调用的都是 update 方法, 可以进行单条数据更新,也可以进行批量数据的更新。
二.二.一 添加数据
二.二.一.一 测试方法
@Test public void addTest(){ //1. 构建对象 User user=new User(); user.setName("欢欢"); user.setAge(22); user.setSex("女"); user.setDescription("一个非常可爱的女孩纸"); //2. 添加方法 userService.addUser(user); }
二.二.一.二 实现方法
@Override public void addUser(User user) { //1.sql语句 String sql="insert into user(name,sex,age,description) values(?,?,?,?) "; //2.调用 update语句,执行方法 jdbcTemplate.update(sql,user.getName(),user.getSex(),user.getAge(), user.getDescription()); }
二.二.一.三 查看数据结果
可以发现,数据被插入到数据库里面了。
二.二.二 修改数据
二.二.二.一 测试方法
@Test public void updateTest(){ //1. 构建对象 User user=new User(); user.setId(2); user.setName("欢欢"); user.setDescription("岳泽霖最好的朋友"); //2. 修改方法 userService.updateUser(user); }
二.二.二二 实现方法
@Override public void updateUser(User user) { //1.sql语句 String sql="update user set name=?,description=? where id=? "; //2.调用 update语句,执行方法 jdbcTemplate.update(sql,user.getName(),user.getDescription(),user.getId()); }
二.二.二.三 查看数据结果
数据修改成功。
二.二.三 删除数据
老蝴蝶不想删除 欢欢这条数据,所以新添加一条 岳泽霖的数据,将岳泽霖进行删除,欢欢保留在数据库里面。
二.二.三.一 测试方法
@Test public void deleteTest(){ userService.deleteUser(3); }
二.二.三.二 实现方法
@Override public void deleteUser(Integer id) { String sql="delete from user where id=?"; jdbcTemplate.update(sql,id); }
二.二.三.三 查看数据结果
数据删除成功。
二.二.四 批量数据
二.二.四.一 测试方法
@Test public void batchAddTest(){ //1. 构建对象 User user=new User(); user.setName("小欢欢"); user.setAge(22); user.setSex("女"); user.setDescription("一个小坏蛋"); User user1=new User(); user1.setName("小泽霖"); user1.setAge(25); user1.setSex("男"); user1.setDescription("一个大坏蛋"); //2. 放置到集合里面 List<User> userList=new ArrayList<>(); userList.add(user); userList.add(user1); userService.batchAddUser(userList); }
二.二.四.二 实现方法
@Override public void batchAddUser(List<User> userList) { //1.sql语句 String sql="insert into user(name,sex,age,description) values(?,?,?,?) "; //2. 构建参数集合信息 List<Object[]> objects=new ArrayList<>(); for(User user:userList){ Object[] obj=new Object[4]; obj[0]=user.getName(); obj[1]=user.getSex(); obj[2]=user.getAge(); obj[3]=user.getDescription(); objects.add(obj); } //3.调用 batchUpdate 批量更新,执行方法 jdbcTemplate.batchUpdate(sql,objects); }
二.二.五.三 查看数据结果
数据批量添加成功,批量修改与批量删除,也是相同的用法。
三 查询的基本用法
新建一个 QueryJdbcApplicationTests 测试类,用于测试查询的相关方法。
三.一 queryForObject 方法
三.一.一 方法重载
通常使用的是
<T> T queryForObject(String sql, RowMapper<T> rowMapper, @Nullable Object... args)
方法
三.一.二 举例,根据 Id进行查询单个对象信息
三.一.二.一 测试方法
@Test public void queryByIdTest(){ User user=userService.queryById(2); log.info(user); }
三.一.二.二 实现方法
@Override public User queryById(Integer id) { String sql="select id,name,sex,age,description from user where id=?"; //用 RowMapper 进行封装对象信息 User user=jdbcTemplate.queryForObject(sql, new RowMapper<User>() { @Override public User mapRow(ResultSet resultSet, int num) throws SQLException { //根据resultSet 表示结果集, num 表示索引行 User tempUser=new User(); tempUser.setId(resultSet.getInt("id")); tempUser.setName(resultSet.getString("name")); tempUser.setSex(resultSet.getString("sex")); tempUser.setAge(resultSet.getInt("age")); tempUser.setDescription(resultSet.getString("description")); return tempUser; } },id); jdbcTemplate.queryForObject return user; }
三.一.二.三 查看数据结果
三.二 query方法
三.二.一 方法重载
通常使用的是
<T> List<T> query(String sql, RowMapper<T> rowMapper, @Nullable Object... args)
方法。
三.二.二 举例,查询全部数据
三.二.二.一 测试方法
@Test public void queryAllTest(){ List<User> userList=userService.queryForAll(); userList.forEach(n->log.info(n)); }
三.二.二.二 实现方法
@Override public List<User> queryForAll() { String sql="select id,name,sex,age,description from user "; List<User> userList=jdbcTemplate.query(sql, new RowMapper<User>() { @Override public User mapRow(ResultSet resultSet, int num) throws SQLException { //根据resultSet 表示结果集, num 表示索引行 User tempUser=new User(); tempUser.setId(resultSet.getInt("id")); tempUser.setName(resultSet.getString("name")); tempUser.setSex(resultSet.getString("sex")); tempUser.setAge(resultSet.getInt("age")); tempUser.setDescription(resultSet.getString("description")); return tempUser; } }); return userList; }
三.二.二.三 查看数据结果