- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) > 編程語(yǔ)言 >
- 如何使用jdbcTemplate查詢(xún)返回自定義對象集合
小編給大家分享一下如何使用jdbcTemplate查詢(xún)返回自定義對象集合,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
1、在UserInfo.java
中添加一個(gè)Map轉換為UserInfo的方法
public static UserInfo toObject(Map map) { UserInfo userInfo = new UserInfo(); userInfo.setId((Integer) map.get(id)); userInfo.setUname((String) map.get(uname)); userInfo.setUnumber((Integer) map.get(unumber)); userInfo.setuRegisterTime((Date) map.get(uregister_time)); return userInfo; } public static List toObject(List> lists){ List userInfos = new ArrayList(); for (Map map : lists) { UserInfo userInfo = UserInfo.toObject(map); if (userInfo != null) { userInfos.add(userInfo); } } return userInfos; }
dao層實(shí)現:
public List findAll() { String sql = SELECT * FROM user_info; List<Map<String,Object>> lists = jdbcTemplate.queryForList(sq); return UserInfo.toObject(lists); }
總結:這種方法能夠實(shí)現,但是速度相比很慢。
2、使用jdbcTemplate.query(sql,RowMapper)
方式實(shí)現:
dao層實(shí)現
jdbcTemplate.query(sql, new RowMapper<UserInfo>() { @Override public UserInfo mapRow(ResultSet rs, int rowNum) throws SQLException { UserInfo userInfo = new UserInfo(); userInfo.setUname(rs.getString("uname")); userInfo.setUnumber(rs.getInt("unumber")); userInfo.setuRegisterTime(rs.getDate("uregister_time")); return userInfo; } });
總結:在其他查詢(xún)方法中無(wú)法重用。
3、 使用RowMapper實(shí)現接口方式,覆蓋mapRow方法:
public class UserInfo implements RowMapper, Serializable{ @Override public UserInfo mapRow(ResultSet rs, int rowNum) throws SQLException { UserInfo userInfo = new UserInfo(); userInfo.setId(rs.getInt(id)); userInfo.setUname(rs.getString(uname)); userInfo.setUnumber(rs.getInt(unumber)); userInfo.setuRegisterTime(rs.getDate(uregister_time)); return userInfo; } }
dao層實(shí)現:
public UserInfo getById(Integer id) { String sql = SELECT * FROM user_info WHERE id = ?; UserInfo userInfo = jdbcTemplate.queryForObject(sql, new UserInfo(), new Object[] { id }); return userInfo; } public List findAll() { String sql = SELECT * FROM user_info; List userInfos = jdbcTemplate.query(sql, new UserInfo()); return userInfos; }
4、dao層使用
jdbcTemplate.query(sql.toString(), new BeanPropertyRowMapper<UserInfo>(Qsfymxb.class));
Spring 提供了一個(gè)便利的RowMapper實(shí)現-----BeanPropertyRowMapper
它可自動(dòng)將一行數據映射到指定類(lèi)的實(shí)例中 它首先將這個(gè)類(lèi)實(shí)例化,然后通過(guò)名稱(chēng)匹配的方式,映射到屬性中去。
例如:屬性名稱(chēng)(vehicleNo)匹配到同名列或帶下劃線(xiàn)的同名列(VEHICLE_NO)。如果某個(gè)屬性不匹配則返回屬性值為Null
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站