springmvc一般是先寫實體,在數據庫查詢,最後增刪改差,最感受代碼很冗餘,本身在封裝了一下。 java
常見的結構是: spring
entity:如 sql
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 mvc
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; } }
下面是簡化的工具類 app
要是有不少實體,每寫一個,都要重複這3個,效率很低,其中後兩個是能夠封裝工具類:通用object ide
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(true); 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亦能夠簡化的,網上有不少,關於通用增刪改查,本身能夠搜一下。但願能有所幫助。 工具