springmvc工具类封装RowMapper (未测试)
2016-07-22 13:22
399 查看
springmvc通常是先写实体,在数据库查询,最后增删改差,最感觉代码很冗余,自己在封装了一下。
常见的结构是:
entity:如
object:如
service
下面是简化的工具类
要是有很多实体,每写一个,都要重复这3个,效率很低,其中后两个是可以封装工具类:通用object
这个可以放在utils中,具体用法如下:
service亦可以简化的,网上有很多,关于通用增删改查,自己可以搜一下。希望能有所帮助。
SpringMVC
评论该代码
1评论:
最早最新最多投票
fishing
2016-02-18 15:49 代码数:0
只有搞有时候可能会出问题,
如:不是查询所有字段时,查询的返回结果中没有field的名称时 ( rs.getString(field.getName())); )
就会报异常
常见的结构是:
entity:如
package com.liuxinquan.entiry; /** * @author:lxq * @类说明:Book * */ public class Book { private String id; private String user_id; private String item_id; private String prefer; private String time; public String getId() { return id; } public String getUser_id() { return user_id; } public void setUser_id(String user_id) { this.user_id = user_id; } public String getItem_id() { return item_id; } public void setItem_id(String item_id) { this.item_id = item_id; } public String getPrefer() { return prefer; } public void setPrefer(String prefer) { this.prefer = prefer; } public String getTime() { return time; } public void setTime(String time) { this.time = time; } public void setId(String id) { this.id = id; } }
object:如
package com.liuxinquan.object; import java.sql.ResultSet; import java.sql.SQLException; import org.springframework.jdbc.core.RowMapper; import com.liuxinquan.entiry.Book; /** * @author:lxq * @类说明:bookobject * */ public class BookObj implements RowMapper<Book> { @Override public Book mapRow(ResultSet rs, int arg1) throws SQLException { Book book = new Book(); book.setId(rs.getString("id")); book.setItem_id(rs.getString("item_id")); book.setPrefer(rs.getString("prefer")); book.setTime(rs.getString("time")); book.setUser_id(rs.getString("user_id")); return book; } }
service
package com.liuxinquan.service; import java.util.List; import javax.annotation.Resource; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import com.liuxinquan.entiry.Book; import com.liuxinquan.utils.CommonObj; /** * @author: @类说明: * */ @Service public class BookService { @Resource(name = "jdbcTemplate") public JdbcTemplate jdbcTemplate; public List<Book> findAll() { String sql = "select * from recommender_prefer "; List<Book> books = jdbcTemplate.query(sql, new bookObj()); return books; } public Book findbyId(String id) { String sql = "select * from recommender_prefer where id =" + id; Book book = jdbcTemplate.queryForObject(sql, new BookObj()); return book; } }
下面是简化的工具类
要是有很多实体,每写一个,都要重复这3个,效率很低,其中后两个是可以封装工具类:通用object
package com.liuxinquan.utils; import java.lang.reflect.Field; import java.sql.ResultSet; import java.sql.SQLException; import org.springframework.jdbc.core.RowMapper; /** * @author:lxq * @类说明:通用dao工具 * */ public class CommonObj implements RowMapper<Object> { private Class<?> cl; public CommonObj(Class<?> cl) { this.cl = cl; } @Override public Object mapRow(ResultSet rs, int i) throws SQLException { try { Field[] fields = cl.getDeclaredFields(); Object entity = cl.newInstance(); for (Field f : fields) { f.setAccessible(tr 4000 ue); this.typeMapper(f, entity, rs); f.setAccessible(false); } return entity; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } private void typeMapper(Field field, Object obj, ResultSet rs) throws Exception { String type = field.getType().getName(); if (type.equals("java.lang.String")) { field.set(obj, rs.getString(field.getName())); } else if (type.equals("int") || type.equals("java.lang.Integer")) { field.set(obj, rs.getInt(field.getName())); } else if (type.equals("long") || type.equals("java.lang.Long")) { field.set(obj, rs.getLong(field.getName())); } else if (type.equals("boolean") || type.equals("java.lang.Boolean")) { field.set(obj, rs.getBoolean(field.getName())); } else if (type.equals("java.util.Date")) { field.set(obj, rs.getDate(field.getName())); } } }
这个可以放在utils中,具体用法如下:
package com.liuxinquan.service; import java.util.List; import javax.annotation.Resource; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import com.liuxinquan.entiry.Book; import com.liuxinquan.utils.CommonObj; /** * @author: @类说明: * */ @Service public class BookService { @Resource(name = "jdbcTemplate") public JdbcTemplate jdbcTemplate; public List<Object> findAll() { String sql = "select * from recommender_prefer "; List<Object> books = jdbcTemplate.query(sql, new CommonObj(Book.class)); return books; } public Object findbyId(String id) { String sql = "select * from recommender_prefer where id =" + id; Object book = jdbcTemplate.queryForObject(sql, new CommonObj(Book.class)); return book; } }
service亦可以简化的,网上有很多,关于通用增删改查,自己可以搜一下。希望能有所帮助。
SpringMVC
评论该代码
1评论:
最早最新最多投票
fishing
2016-02-18 15:49 代码数:0
只有搞有时候可能会出问题,
如:不是查询所有字段时,查询的返回结果中没有field的名称时 ( rs.getString(field.getName())); )
就会报异常
相关文章推荐
- 关于输出格式的一些总结——cout
- Android Fragment嵌套使用存在的一些BUG以及解决方法
- java.lang.IllegalStateException: attempt to re-open an already-closed object
- ios-单元格复用
- Android 中 DownLoadManager 实现文件下载
- iOS之 深究extern,static的用法和作用
- Tobject 类解析
- Sources for 'Android API 26 Platform' not found.[MAC]
- iOS:使用Github托管自己本地的项目代码方式一:(Xcode方式:开发工具Xcode配置Git,由Xcode-->Source Control-->Commit)
- 利用WebApplicationInitializer配置SpringMVC取代web.xml
- android中电话归属地查询
- 深入理解Android的消息处理系统---Handler、Looper、Thread学习记录
- Android开发技巧汇总
- Android Scroller源码解析
- Android每天定时提醒功能、定时功能、闹钟
- geekband android #5 第三周分享(自定义控件、fragment、handler)
- Android 6.0 telephony 联系人信息显示流程
- iOS走马灯上下滚动显示文本
- Ubuntu下安装Android studio!!
- Cygnal—Cygwin Native Application Library