JdbcTemplate常用用法

前言

最近做對接用到了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;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章