前言
最近做对接用到了JdbcTemplate,百度搜集了一些用法,整理了一下平常经常能用到的,便于日后用到能够快速查找;
1. 查询
a、读取单个对象
如:根据用户id获取用户对象
String sql="select id,name,deptid from user where id=?";
RowMapper<User> rowMapper=new BeanPropertyRowMapper<User>(User.class);
User user= jdbcTemplate.queryForObject(sql, rowMapper,52);
System.out.println(user);
【注意】:
1、使用BeanProperytRowMapper要求sql数据查询出来的列和实体属性需要一一对应。如果数据中列明和属性名不一致,在sql语句中需要用as重新取一个别名;若不想改,另一种方式在最下面;
2、使用JdbcTemplate对象不能获取关联对象
b、读取多个对象
String sql="select id,name,deptid from user";
RowMapper<User> rowMapper=new BeanPropertyRowMapper<User>(User.class);
List<User> users= jdbcTemplate.query(sql, rowMapper);
for (User user : users) {
System.out.println(user);
}
c、获取某个记录某列或者count、avg、sum等函数返回唯一值
String sql="select count(*) from user";
int count= jdbcTemplate.queryForObject(sql, Integer.class);
System.out.println(count);
2. 修改
String sql="update user set name=?,deptid=? where id=?";
jdbcTemplate.update(sql,new Object[]{"zhh",5,51});
3. 添加
String sql="insert into user (name,deptid) values (?,?)";
int count= jdbcTemplate.update(sql, new Object[]{"caoyc",3});
System.out.println(count);
4. 删除
String sql="delete from user where id=?";
jdbcTemplate.update(sql,51);
5、批量插入、更新或删除
String sql="insert into user (name,deptid) values (?,?)";
List<Object[]> batchArgs=new ArrayList<Object[]>();
batchArgs.add(new Object[]{"caoyc",6});
batchArgs.add(new Object[]{"zhh",8});
batchArgs.add(new Object[]{"cjx",8});
jdbcTemplate.batchUpdate(sql, batchArgs);
ps:查询单个或多个对象的另一种方式
/**
* 功能:查询返回单个对象
* 步骤:新建MyRowMapper类实现RowMapper接口,重写mapRow方法,指定返回User对象
*/
public static void queryForObject(JdbcTemplate jdbcTemplate) {
String sql = "select * from user where name = ?";
// 新建MyRowMapper类实现RowMapper接口,重写mapRow方法,指定返回User对象
User user = jdbcTemplate.queryForObject(sql, new MyRowMapper(), "Tom");
System.out.println(user);
}
/**
* 功能:查询返回对象集合
* 步骤:新建MyRowMapper类实现RowMapper接口,重写mapRow方法,指定返回User对象
*/
public static void queryForList(JdbcTemplate jdbcTemplate) {
String sql = "select * from user";
//第三个参数可以省略
List<User> users = jdbcTemplate.query(sql, new MyRowMapper());
System.out.println(users);
}
MyRowMapper.java
/**
* 实现RowMapper接口,返回User对象
* */
public class MyRowMapper implements RowMapper<User>{
@Override
public User mapRow(ResultSet resultSet, int i) throws SQLException {
//获取结果集中的数据
String name = resultSet.getString("name");
String age = resultSet.getString("age");
//把数据封装成User对象
User user = new User();
user.setName(name);
user.setAge(age);
return user;
}
}