Maven项目
配置:
pom.xml
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> <!--统一配置ssh的版本号--> <spring.version>3.1.1.RELEASE</spring.version> <hibernate.version>3.6.5.Final</hibernate.version> <struts2.version>2.3.1</struts2.version> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <!-- java servlet api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring.version}</version> </dependency> <!--创建动态代理--> <dependency> <groupId>cglib</groupId> <artifactId>cglib-nodep</artifactId> <version>2.2</version> </dependency> <!-- hibernate--> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${hibernate.version}</version> </dependency> <!-- struts2 --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>${struts2.version}</version> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-junit-plugin</artifactId> <version>${struts2.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>${struts2.version}</version> </dependency> <!-- mysql驱动包 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.0.5</version> </dependency> <!-- c3p0连接池 --> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> </dependency> |
controller
package com.demo.controller; import com.demo.dao.EmpDao; import com.demo.pojo.Dept; import com.demo.pojo.Emp; import com.demo.service.EmpService; import com.demo.util.Page; import com.opensymphony.xwork2.ActionSupport; import com.sun.deploy.net.HttpResponse; import org.apache.struts2.interceptor.ApplicationAware; import org.apache.struts2.interceptor.RequestAware; import org.apache.struts2.interceptor.SessionAware; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import javax.annotation.Resource; import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.Map; @Controller("addAction") @Scope("prototype")//没执行一次就自动创建一个Action public class AddAction extends ActionSupport implements SessionAware,RequestAware,ApplicationAware { @Resource private EmpService empService; private Map<String,Object> requset; private Map<String,Object> session; private Map<String,Object> application; private Emp emp ; private Page page ; private long[] empno = new long[]{}; public long[] getEmpno() { return empno; } public void setEmpno(long[] empno) { this.empno = empno; } public Page getPage() { return page; } public void setPage(Page page) { this.page = page; } public Emp getEmp() { return emp; } public void setEmp(Emp emp) { this.emp = emp; } @Override public void setApplication(Map<String, Object> map) { this.application=map; } @Override public void setRequest(Map<String, Object> map) { this.requset=map; } @Override public void setSession(Map<String, Object> map) { this.session=map; } /** * 查询所有部门 * @return */ public String Addselect(){ System.out.println(emp.getHiredate()); boolean add = empService.add(emp); if(add){ System.out.println("添加成功"); }else { System.out.println("添加失败"); } return "index"; } /** * 跳转到添加页面 * @return */ public String sel(){ List<Dept> depts = empService.selectDept(); requset.put("depts",depts); return "add"; } /** * 条件查询及分页 * @return */ public String add(){ //查询所有部门 List<Dept> depts = empService.selectDept(); //判断emp是否等于传过来得值 if("1".equals(emp.getEmpname())){ System.out.println(emp.getEmpname()); emp.setEmpname(""); emp.setDeptno(0); } page.setIs_rows(3);//每页显示多少条数据 page.setIs_page(page.getIs_page());//当前页码 int i = empService.selectAll(emp.getEmpname(), emp.getDeptno());//查询此条件下有多少条数据 System.out.println("一共有"+i+"条数据"); page.setIs_allrow(i);//把总条数赋值给page //查询全部 System.out.println("姓名:"+emp.getEmpname()+",编号:"+emp.getDeptno()); List<Emp> list = empService.selectBynameordept(emp.getEmpname(), emp.getDeptno(), (page.getIs_page() - 1) * page.getIs_rows(), page.getIs_rows()); requset.put("pages",page); requset.put("name",emp.getEmpname()); requset.put("depts",depts); requset.put("Lists",list); return "index"; } /** * 查询详情 * @return */ public String details(){ Emp emp = empService.selectById(this.emp.getEmpno()); requset.put("emp",emp); return "details"; } /** * 查询出部门和员工,然后跳转到修改页面 * @return */ public String edit(){ SimpleDateFormat sdp = new SimpleDateFormat("yyyy-MM-dd"); Emp emp = empService.selectById(this.emp.getEmpno()); requset.put("emp",emp); requset.put("format",sdp.format(emp.getHiredate())); List<Dept> dept = empService.selectDept(); requset.put("depts",dept); return "edit"; } /** * 完成修改并添加到数据库并回显 * @return */ public String editById(){ boolean b = empService.updateEmp(emp); if(b){ System.out.println("修改成功!"); }else { System.out.println("修改失败!"); } SimpleDateFormat sdp = new SimpleDateFormat("yyyy-MM-dd"); Emp emp = empService.selectById(this.emp.getEmpno()); requset.put("emp",emp); requset.put("format",sdp.format(emp.getHiredate())); List<Dept> dept = empService.selectDept(); requset.put("depts",dept); return "edit"; } /** * 删除数据 * @return */ public String deleteById(){ System.out.println(emp.getEmpno()); boolean b = empService.deleteEmp(emp.getEmpno()); if(b){ System.out.println("删除成功!"); }else { System.out.println("删除失败!"); } return "delete"; } public String deleteNews(){ for(int i=0;i<this.empno.length;i++) System.out.println("ID是:"+empno[i]); boolean b = empService.delNews(empno); System.out.println("结果是:"+b); return "delete"; } } |
dao
package com.demo.dao; import com.demo.pojo.Dept; import com.demo.pojo.Emp; import java.util.List; public interface EmpDao { void add(Emp emp); //删除 void deleteEmp(int id); //编辑 void updateEmp(Emp emp); //根据id查询一条数据 Emp selectById(int id); int selectAll(String name, int dept); //多条件查询 List<Emp> selectBynameordept(String name, int dept,int first,int last); //查询全部 List<Emp> selectEmp(); //查询所有部门 List<Dept> selectDept(); void delNews(long[] ids); } --------------------------------------------------------------------------------------------------------------------------- package com.demo.dao; import com.demo.pojo.Dept; import com.demo.pojo.Emp; import org.hibernate.Query; import org.hibernate.SessionFactory; import org.springframework.orm.hibernate3.HibernateTemplate; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import org.springframework.stereotype.Controller; import org.springframework.stereotype.Repository; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; @Repository("empDao") public class EmpDaoImpl implements EmpDao { @Resource(name="sessionFactory") private SessionFactory sessionFactory; @Override public void add(Emp emp) { sessionFactory.getCurrentSession().save(emp); } @Override public void deleteEmp(int id) { Emp emp = new Emp(); emp.setEmpno(id); sessionFactory.getCurrentSession().delete(emp); } @Override public void updateEmp(Emp emp) { sessionFactory.getCurrentSession().update(emp); } @Override public Emp selectById(int id) { return (Emp) sessionFactory.getCurrentSession().get(Emp.class,id); } @Override public int selectAll(String name, int dept) { StringBuffer sb = new StringBuffer(); sb.append("select count(*) FROM Emp e where 1=1 "); if(dept!=0){ sb.append(" and e.deptno='"+dept+"'"); } if(!"".equals(name)){ sb.append(" and e.empname like '%"+name+"%' "); } //int i = sessionFactory.getCurrentSession().createQuery(sb.toString()).executeUpdate(); Query query = sessionFactory.getCurrentSession().createQuery(sb.toString()); Long total = (Long) query.uniqueResult(); System.out.println("一共有"+total+"条数据"); return total.intValue() ; } @Override public List<Emp> selectBynameordept(String name, int dept,int first,int fast) { StringBuffer sb = new StringBuffer(); sb.append("FROM Emp e where 1=1"); if(dept!=0){ sb.append(" and e.deptno="+dept+" "); } if(!"".equals(name)){ sb.append(" and e.empname LIKE '%"+name+"%' "); } Query query = sessionFactory.getCurrentSession().createQuery(sb.toString()); List<Emp> list =query.setFirstResult(first) .setMaxResults(fast) .list(); //SQLQuery sqlQuery = sessionFactory.getCurrentSession().createSQLQuery(sb.toString()); return list; } @Override public List<Emp> selectEmp() { return sessionFactory.getCurrentSession().createQuery("FROM Emp").list(); } @Override public List<Dept> selectDept() { return sessionFactory.getCurrentSession().createQuery("FROM Dept").list(); } @Override public void delNews(long[] ids) { /** * hibernate的批量删除; * 缺点:删除时是多条删除语句,影响效率; */ //数组中封装的是ID的集合; String hql = ""; StringBuffer sb = new StringBuffer(); for(int i=0;i<ids.length;i++) { if(i==0) { hql = "empno="+ids[i]; } else { hql =hql + " or empno="+ids[i]; } } sb.append("delete from Emp where "); sb.append(hql); System.out.println("HQL语句为:"+sb.toString()); Query q= sessionFactory.getCurrentSession().createQuery(sb.toString()); q.executeUpdate(); //调用DAO层的删除方法; } }
|
pojo
package com.demo.pojo; import javax.persistence.*; @Entity public class Dept { private int deptno; private String deptname; private String loc; @Id @GeneratedValue @Column(name = "deptno") public int getDeptno() { return deptno; } public void setDeptno(int deptno) { this.deptno = deptno; } @Basic @Column(name = "deptname") public String getDeptname() { return deptname; } public void setDeptname(String deptname) { this.deptname = deptname; } @Basic @Column(name = "loc") public String getLoc() { return loc; } public void setLoc(String loc) { this.loc = loc; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Dept dept = (Dept) o; if (deptno != dept.deptno) return false; if (deptname != null ? !deptname.equals(dept.deptname) : dept.deptname != null) return false; if (loc != null ? !loc.equals(dept.loc) : dept.loc != null) return false; return true; } @Override public int hashCode() { int result = deptno; result = 31 * result + (deptname != null ? deptname.hashCode() : 0); result = 31 * result + (loc != null ? loc.hashCode() : 0); return result; } @Override public String toString() { return "Dept{" + "deptno=" + deptno + ", deptname='" + deptname + '\'' + ", loc='" + loc + '\'' + '}'; } } --------------------------------------------------------------------------------------------------------- <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.demo.pojo.Dept" table="dept" schema="emp"> <id name="deptno" column="deptno"/> <property name="deptname" column="deptname"/> <property name="loc" column="loc"/> </class> </hibernate-mapping> ---------------------------------------------------------------------------------------------------------------- package com.demo.pojo; import javax.persistence.*; import java.sql.Timestamp; import java.util.Objects; @Entity public class Emp { private int empno; private String empname;//名称 private String job;//岗位 private int mgr;//直属领导 private Timestamp hiredate;//入职时间 private Integer sal;//工资 private Integer comm;//奖金 private Integer deptno;//部门编号 private Dept dept; @Id @GeneratedValue @Column(name = "empno") public int getEmpno() { return empno; } public void setEmpno(int empno) { this.empno = empno; } @Basic @Column(name = "empname") public String getEmpname() { return empname; } public void setEmpname(String empname) { this.empname = empname; } @Basic @Column(name = "job") public String getJob() { return job; } public void setJob(String job) { this.job = job; } @Basic @Column(name = "mgr") public int getMgr() { return mgr; } public void setMgr(int mgr) { this.mgr = mgr; } @Basic @Column(name = "hiredate") public Timestamp getHiredate() { return hiredate; } public void setHiredate(Timestamp hiredate) { this.hiredate = hiredate; } @Basic @Column(name = "sal") public Integer getSal() { return sal; } public void setSal(Integer sal) { this.sal = sal; } @Basic @Column(name = "comm") public Integer getComm() { return comm; } public void setComm(Integer comm) { this.comm = comm; } @Basic @Column(name = "deptno") public Integer getDeptno() { return deptno; } public void setDeptno(Integer deptno) { this.deptno = deptno; } @Basic @Column(name = "dept") public Dept getDept() { return dept; } public void setDept(Dept dept) { this.dept = dept; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Emp emp = (Emp) o; return empno == emp.empno && mgr == emp.mgr && Objects.equals(empname, emp.empname) && Objects.equals(job, emp.job) && Objects.equals(hiredate, emp.hiredate) && Objects.equals(sal, emp.sal) && Objects.equals(comm, emp.comm) && Objects.equals(deptno, emp.deptno) && Objects.equals(dept, emp.dept); } @Override public int hashCode() { return Objects.hash(empno, empname, job, mgr, hiredate, sal, comm, deptno, dept); } @Override public String toString() { return "Emp{" + "empno=" + empno + ", empname='" + empname + '\'' + ", job='" + job + '\'' + ", mgr=" + mgr + ", hiredate=" + hiredate + ", sal=" + sal + ", comm=" + comm + ", deptno=" + deptno + ", dept=" + dept.getDeptno() + ", dept=" + dept.getDeptname() + ", dept=" + dept.getLoc() + '}'; } } ------------------------------------------------------------------------------------------------------------ <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.demo.pojo.Emp" table="emp" schema="emp"> <id name="empno" column="empno"/> <property name="empname" column="empname"/> <property name="job" column="job"/> <property name="mgr" column="mgr"/> <property name="hiredate" column="hiredate"/> <property name="sal" column="sal"/> <property name="comm" column="comm"/> <property name="deptno" column="deptno"/> <many-to-one name="dept" column="deptno" lazy="false" fetch="join" insert="false" update="false"></many-to-one> </class> </hibernate-mapping>
|
service
package com.demo.service; import com.demo.pojo.Dept; import com.demo.pojo.Emp; import java.util.List; public interface EmpService { boolean add(Emp emp); //删除 boolean deleteEmp(int id); //编辑 boolean updateEmp(Emp emp); //根据id查询一条数据 Emp selectById(int id); int selectAll(String name, int dept); //多条件查询 List<Emp> selectBynameordept(String name, int dept,int first,int fast); //查询全部 List<Emp> selectEmp(); //查询所有部门 List<Dept> selectDept(); boolean delNews(long[] ids); } ------------------------------------------------------------------------------------ package com.demo.service; import com.demo.dao.EmpDao; import com.demo.pojo.Dept; import com.demo.pojo.Emp; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.List; @Transactional(rollbackFor = Exception.class) @Service("empService") public class EmpServiceImpl implements EmpService { @Resource private EmpDao empDao; @Override public boolean add(Emp emp) { empDao.add(emp); return true; } @Override public boolean deleteEmp(int id) { empDao.deleteEmp(id); return true; } @Override public boolean updateEmp(Emp emp) { empDao.updateEmp(emp); return true; } @Override public Emp selectById(int id) { return empDao.selectById(id); } @Override public int selectAll(String name, int dept){ return empDao.selectAll(name,dept); } @Override public List<Emp> selectBynameordept(String name, int dept,int first,int fast) { return empDao.selectBynameordept(name,dept,first,fast); } @Override public List<Emp> selectEmp() { return empDao.selectEmp(); } @Override public List<Dept> selectDept() { return empDao.selectDept(); } @Override public boolean delNews(long[] ids) { empDao.delNews(ids); return true; } }
|
until
package com.demo.util; import com.demo.pojo.Emp; import java.util.List; /** * 分页类 */ public class Page { private int is_page=1;//当前页码 private int is_rows;//每一页显示的行数 private int is_allrow;//总行数 private int is_countpage;//总页码数 private List<Emp> lists; public List<Emp> getLists() { return lists; } public void setLists(List<Emp> lists) { this.lists = lists; } public int getIs_page() { return is_page; } public void setIs_page(int is_page) { this.is_page = is_page; } public int getIs_rows() { return is_rows; } public void setIs_rows(int is_rows) { this.is_rows = is_rows; } public int getIs_allrow() { return is_allrow; } public void setIs_allrow(int is_allrow) { this.is_allrow = is_allrow; // 6 3 this.is_countpage=is_allrow%is_rows==0 ? is_allrow/is_rows:(is_allrow/is_rows+1); } public int getIs_countpage() { return is_countpage; } public void setIs_countpage(int is_countpage) { this.is_countpage = is_countpage; } @Override public String toString() { return "Page{" + "is_page=" + is_page + ", is_rows=" + is_rows + ", is_allrow=" + is_allrow + ", is_countpage=" + is_countpage + ", lists=" + lists + '}'; } } |