Spring jdbcTemplete查询
来源:互联网 发布:推荐高中数学视频软件 编辑:程序博客网 时间:2024/06/04 19:41
近日在工作中需要使用jdbcTemplete进行查询的操作,查了一些资料,解决了在项目中碰到的几个问题。
贴上代码:
实体类
public class User{ // id protected Long id; // 姓名 protected String name; // 家庭 protected List<Home> home; public void setId(Long id) { this.id = id; } /** * 返回 id * @return */ public Long getId() { return this.id; } public void setName (String name) { this.name = name; } /** * 返回 性别 * @return */ public String getName() { return this.name; } public void setHome(List<Home> home) { this.home = home; } /** * 返回 家庭信息 * @return */ public List<Home> getHome() { return this.home; }}
其中家庭信息类如下:
public class Home { private String address; private String phone; public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; }}
使用jdbcTemplete根据id值查询:
//使用jackson序列化ColumnDesc对象private ObjectMapper objectMapper = new ObjectMapper();/** * 根据ID查询 * @param primaryKey ID的值 * @return User 自定义列表对象 */public User getById(Long primaryKey) { String sql = "SELECT ID, NAME, HOME FROM TABLE WHERE ID=? "; //查询CLOB字段,HOME字段存储为CLOB final LobHandler lobHandler = new DefaultLobHandler(); final User user = jdbcTemplate.queryForObject(sql, new Object[]{primaryKey}, new RowMapper<User>() { @Override public User mapRow(ResultSet resultSet, int i) throws SQLException { User user1 = new User(); user1.setId(resultSet.getLong("ID")); user1.setName(resultSet.getString("NAME")); //从数据库中获取CLOB字段 String content = lobHandler.getClobAsString(resultSet, "HOME"); //将该字段的内容序列化 List<Home> home = null; try { home = objectMapper.readValue(content, new TypeReference<List<Home>>(){}); } catch (IOException e) { e.printStackTrace(); }; user1.setHome(home); return user1; } }); return user;}
查询使用queryForObject(sql,new Object[]{param...}, new RowMapper())
方法,在内部建立内联类实现RowMapper接口。
这段代码有两个需要注意的地方。
1. 在数据库中,Home字段存储的格式为CLOB大字段的方式,为了能够读取CLOB字段,使用 LobHandler
实例,它负责简化大字段的读取。它的API可参照下图:
2. 从数据库中获取到的Home字段现在是字符串的形式,需要将其反序列为Home对象,数据库中我们用Json格式存储Home字段,所以引入jackson这个工具来进行反序列化。jackson的使用可以参考这篇博客jackson序列化与反序列化,博客里详细介绍了如何将对单个对象以及列表进行序列化与反序列化。
参考文章:
* 使用Spring JdbcTemplate实现CLOB和BLOB的存取
* jackson序列化和反序列化(单个对象、列表)
* Jackson序列化和反序列化Json数据完整示例
* jackson 官方文档
阅读全文
0 0
- Spring jdbcTemplete查询
- spring JDBCTemplete
- Spring jdbcTemplete datasource
- SpringMvc + spring jdbctemplete 事务
- spring中jdbctemplete的使用
- spring 模糊查询,查询
- spring+hibernate 查询
- Spring+hibernate分页查询
- Spring JdbcTemplate 查询方法
- Spring JdbcTemplate 查询分页
- Spring 页面查询
- Spring JdbcTemplate 查询分页
- Spring批量查询
- spring mongo模糊查询
- spring mongodb 模糊查询
- Spring Data JPA 查询
- Spring jdbcTemplat插入,查询
- Spring前台查询
- Web前端案例_多选练习案例
- 自定义点击产生涟漪效果
- Unity UGUI 多张图片合成一张 记时 显示ICO
- 使用原生的JavaScript代替jQuery的操作DOM
- 多年的博客账号丢失了,新开一个
- Spring jdbcTemplete查询
- [译]The Python Tutorial#4. More Control Flow Tools
- 骑士的移动(Knight Moves, UVa 439)
- ContentProvider之call()方法
- js 实现 复制、粘贴
- opencv 模板匹配(cvMatchTemplate)
- 教你上传本地代码到github
- idea InterliJ 2017.01.04 UML插件安装及使用
- Android dex2oat命令参数解释