自定义mvc
1、实体类:
public class Solr implements Serializable{
private static final long serialVersionUID = 1657611036410722767L;
private String id;
private String job;
private String company;
private String address;
private String salary;
private String url;
private String limit;
private String time;
private String desc;
private String jobHandle;
private String addressHandle;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getSalary() {
return salary;
}
public void setSalary(String salary) {
this.salary = salary;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getLimit() {
return limit;
}
public void setLimit(String limit) {
this.limit = limit;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getJobHandle() {
return jobHandle;
}
public void setJobHandle(String jobHandle) {
this.jobHandle = jobHandle;
}
public String getAddressHandle() {
return addressHandle;
}
public void setAddressHandle(String addressHandle) {
this.addressHandle = addressHandle;
}
public Solr() {
}
public Solr(String id, String job, String company, String address, String salary, String url, String limit,
String time, String desc, String jobHandle, String addressHandle) {
this.id = id;
this.job = job;
this.company = company;
this.address = address;
this.salary = salary;
this.url = url;
this.limit = limit;
this.time = time;
this.desc = desc;
this.jobHandle = jobHandle;
this.addressHandle = addressHandle;
}
@Override
public String toString() {
return "Job [id=" + id + ", job=" + job + ", company=" + company + ", address=" + address + ", salary=" + salary
+ ", url=" + url + ", limit=" + limit + ", time=" + time + ", desc=" + desc + ", jobHandle=" + jobHandle
+ ", addressHandle=" + addressHandle + "]";
}
}
2、dao(BaseDao):
public class BaseDao<T> {
public List<T> executeQuery(String sql, Class clz, PageBean pageBean) throws SQLException, InstantiationException, IllegalAccessException{
List<T> list = new ArrayList<>();
Connection con = DBAccess.getConnection();
PreparedStatement pst = null;
ResultSet rs = null;
if(pageBean != null && pageBean.isPagination()) {
// 查询出符合条件的总记录数
String countSql = getCountSql(sql);
pst = con.prepareStatement(countSql);
rs = pst.executeQuery();
if(rs.next()) {
pageBean.setTotal(rs.getObject(1).toString());
}
// 展示想要看到的数据
String pageSql = getPageSql(sql,pageBean);
pst = con.prepareStatement(pageSql);
rs = pst.executeQuery();
}else {
pst = con.prepareStatement(sql);
rs = pst.executeQuery();
}
while(rs.next()) {
// list.add(new Book(rs.getInt("bid"), rs.getString("bname"), rs.getFloat("price")));
/*
* 实例化了一个对象
* 给这一个空对象的每一个属性赋值
* 将赋值完的对象添加到list集合中返回
*/
T t = (T) clz.newInstance();
for (Field f : clz.getDeclaredFields()) {
f.setAccessible(true);
f.set(t, rs.getObject(f.getName()));
System.out.println(rs.getObject(f.getName()));
}
list.add(t);
}
DBAccess.close(con, pst, rs);
return list;
}
private String getPageSql(String sql, PageBean pageBean) {
return sql + " limit "+pageBean.getStartIndex()+","+pageBean.getRows();
}
private String getCountSql(String sql) {
return "select count(*) from ("+sql+") t";
}
/**
*
* @param sql
* @param t
* @param attrs
* @return
* @throws SQLException
* @throws SecurityException
* @throws NoSuchFieldException
* @throws IllegalAccessException
* @throws IllegalArgumentException
*/
public int executeUpdate(String sql, T t, String[] attrs) throws SQLException, NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
Connection con = DBAccess.getConnection();
PreparedStatement ps = con.prepareStatement(sql);
int loop = 1;
Field f = null;
for (String attr : attrs) {
f = t.getClass().getDeclaredField(attr);
f.setAccessible(true);
ps.setObject(loop++, f.get(t));
}
int code = ps.executeUpdate();
DBAccess.close(con, ps, null);
return code;
}
}
继承BaseDao:
public class SolrDao extends BaseDao<Solr>{
public List<Solr> list(Solr solr,PageBean pageBean) throws InstantiationException, IllegalAccessException, SQLException{
String sql="select * from t_solr_job where 1=1";
String job = solr.getJob();
System.out.println(job);
if(StringUtils.isNotBlank(job)) {
sql += " and job like '%"+job+"%'";
}
String id=solr.getId();
if(id!=null) {
sql+=" and id ='"+id+"'";
}
return super.executeQuery(sql, Solr.class, pageBean);
}
public int add(Solr solr) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, SQLException {
String sql = "insert into t_solr_job values(?,?,?,?,?,?,?,?,?,?,?)";
return super.executeUpdate(sql, solr,new String[]{"id","job","company","address","salary","url","limit","time","desc","jobHandle","addressHandle"});
}
public int edit(Solr solr) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, SQLException {
String sql = "update t_solr_job set job=?,company=?,address=?,salary=?,url=?,limit=?,time=?,desc=?,jobHandle=?,addressHandle=? where id=?";
return super.executeUpdate(sql, solr,new String[]{"job","company","address","salary","url","limit","time","desc","jobHandle","addressHandle","id"});
}
public int del(Solr solr) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, SQLException {
String sql = "delete from t_solr_job where id=?";
return super.executeUpdate(sql, solr,new String[]{"id"});
}
}
工具类(继承ActionSupport类,实现ModelDriven接口):
public class SolrServlet extends ActionSupport implements ModelDriven<Solr>{
private SolrDao solrDao = new SolrDao();
private Solr solr = new Solr();
@Override
public Solr getModel() {
// TODO Auto-generated method stub
return solr;
}
/**
* 查询
* @param req
* @param resp
* @return
* @throws ServletException
* @throws IOException
*/
public String list(HttpServletRequest req,HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
solr.setJob(req.getParameter("job"));
PageBean pageBean = new PageBean();
pageBean.setRequest(req);
try {
List<Solr> list = this.solrDao.list(solr, pageBean);
req.setAttribute("solrList", list);
req.setAttribute("pageBean", pageBean);
} catch (InstantiationException | IllegalAccessException | SQLException e) {
e.printStackTrace();
}
return "list";
}
/**
* 删除
* @param req
* @param resp
* @return
* @throws ServletException
* @throws IOException
*/
private String del(HttpServletRequest req,HttpServletResponse resp) {
try {
this.solrDao.del(solr);
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return "toList";
}
/**
* 修改
* @param req
* @param resp
* @return
* @throws ServletException
* @throws IOException
*/
private String edit(HttpServletRequest req,HttpServletResponse resp) {
try {
this.solrDao.edit(solr);
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "toList";
}
/**
* 跳转到修改界面
* @param req
* @param resp
* @return
*/
private String toEdit(HttpServletRequest req,HttpServletResponse resp) {
try {
Solr s = this.solrDao.list(solr, null).get(0);
req.setAttribute("s", s);
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "toEdit";
}
/**
*增加
* @param req
* @param resp
* @return
*/
private String add(HttpServletRequest req,HttpServletResponse resp) {
try {
this.solrDao.add(solr);
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return "toList";
}
}
运行结果:
主界面:
查询:
修改:
删除: