用maven项目mybatis集成spring+springmvc无刷新实现crud

xiaoxiao2021-02-28  100

具体步奏

步骤1.下载 mybatis-spring插件或者添加maven依赖      <dependency>  <groupId>org.mybatis</groupId>  <artifactId>mybatis-spring</artifactId>  <version>1.2.3</version> </dependency> 步骤2.配置dbcp数据源 步骤3.配置SqlSessionFactoryBean设置数据源以及mybatis配置文件的位置

步骤四.配置SqlSessionTemplate 通过构造器注入SqlSessionFactoryBean 步骤五.配置DataSourceTransactionManager注入数据源配置事物 步骤六.配置MapperScannerConfigurer扫描注解对应的mapper文件对应的包 步骤七 配置spring事物的切面以及通知

pom.xml

[html]  view plain  copy <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">     <modelVersion>4.0.0</modelVersion>     <groupId>springIntegrationMybatis</groupId>     <artifactId>springIntegrationMybatis</artifactId>     <version>0.0.1-SNAPSHOT</version>     <packaging>war</packaging>     <name/>     <description/>     <dependencies>       <dependency>         <groupId>org.apache.openejb</groupId>         <artifactId>javaee-api</artifactId>         <version>5.0-1</version>         <scope>provided</scope>       </dependency>       <dependency>         <groupId>javax.faces</groupId>         <artifactId>jsf-api</artifactId>         <version>1.2_04</version>         <scope>provided</scope>       </dependency>       <dependency>         <groupId>javax.servlet</groupId>         <artifactId>jstl</artifactId>         <version>1.2</version>         <scope>provided</scope>       </dependency>       <dependency>         <groupId>javax.servlet.jsp</groupId>         <artifactId>jsp-api</artifactId>         <version>2.1</version>         <scope>provided</scope>       </dependency>       <dependency>         <groupId>javax.faces</groupId>         <artifactId>jsf-impl</artifactId>         <version>1.2_04</version>         <scope>provided</scope>       </dependency>               <!-- 配置mybatis的依赖 -->       <dependency>         <groupId>org.mybatis</groupId>         <artifactId>mybatis</artifactId>         <version>3.2.8</version>       </dependency>       <!-- 配置本地的jar -->       <dependency>            <groupId>ojdbc</groupId>             <artifactId>objdc1</artifactId>            <version>3.2.8</version>           <scope>system</scope>           <systemPath>C:\app\Administrator\product\11.2.0\dbhome_1\jdbc\lib\ojdbc6.jar</systemPath>       </dependency>       <!-- spring和springMvc的jar -->       <dependency>         <groupId>org.springframework</groupId>         <artifactId>spring-core</artifactId>         <version>4.3.8.RELEASE</version>       </dependency>       <dependency>         <groupId>org.springframework</groupId>         <artifactId>spring-webmvc</artifactId>         <version>4.3.8.RELEASE</version>       </dependency>       <dependency>         <groupId>org.springframework</groupId>         <artifactId>spring-jdbc</artifactId>         <version>4.3.8.RELEASE</version>       </dependency>       <!-- json的jar -->       <dependency>         <groupId>net.sf.json-lib</groupId>         <artifactId>json-lib</artifactId>         <version>2.3</version>         <classifier>jdk15</classifier>       </dependency>       <!-- jackson的一系列jar -->       <dependency>         <groupId>com.fasterxml.jackson.core</groupId>         <artifactId>jackson-core</artifactId>         <version>2.6.0</version>       </dependency>       <dependency>         <groupId>javax.validation</groupId>         <artifactId>validation-api</artifactId>         <version>1.0.0.GA</version>       </dependency>       <dependency>         <groupId>com.fasterxml.jackson.core</groupId>         <artifactId>jackson-annotations</artifactId>         <version>2.6.0</version>       </dependency>       <dependency>         <groupId>org.codehaus.jackson</groupId>         <artifactId>jackson-mapper-asl</artifactId>         <version>1.9.12</version>       </dependency>       <dependency>         <groupId>net.sf.ezmorph</groupId>         <artifactId>ezmorph</artifactId>         <version>1.0.6</version>       </dependency>       <dependency>             <groupId>com.fasterxml.jackson.core</groupId>             <artifactId>jackson-databind</artifactId>                     <version>2.6.0</version>       </dependency>         <dependency>         <groupId>org.codehaus.jackson</groupId>         <artifactId>jackson-core-asl</artifactId>         <version>1.9.12</version>       </dependency>       <!--  mybatis集成spring的核心jar -->       <dependency>         <groupId>org.mybatis</groupId>         <artifactId>mybatis-spring</artifactId>         <version>1.3.0</version>       </dependency>       <!-- dbcp的数据源jar -->       <dependency>         <groupId>commons-dbcp</groupId>         <artifactId>commons-dbcp</artifactId>         <version>1.3</version>       </dependency>              <dependency>         <groupId>org.aspectj</groupId>         <artifactId>com.springsource.org.aspectj.weaver</artifactId>         <version>1.6.8.RELEASE</version>       </dependency>       <!-- 打印日志 -->       <dependency>         <groupId>log4j</groupId>         <artifactId>log4j</artifactId>         <version>1.2.17</version>       </dependency>            </dependencies>     <build>       <sourceDirectory>${basedir}/src</sourceDirectory>       <outputDirectory>${basedir}/WebRoot/WEB-INF/classes</outputDirectory>       <resources>         <resource>           <directory>${basedir}/src</directory>           <excludes>             <exclude>**/*.java</exclude>           </excludes>         </resource>       </resources>       <plugins>         <plugin>           <artifactId>maven-war-plugin</artifactId>           <configuration>             <webappDirectory>${basedir}/WebRoot</webappDirectory>             <warSourceDirectory>${basedir}/WebRoot</warSourceDirectory>           </configuration>         </plugin>         <plugin>           <artifactId>maven-compiler-plugin</artifactId>           <configuration>             <source>1.5</source>             <target>1.5</target>           </configuration>         </plugin>       </plugins>     </build>   </project>  

spring.xml

[html]  view plain  copy <?xml version="1.0" encoding="UTF-8"?>   <beans       xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns:p="http://www.springframework.org/schema/p"       xmlns:context="http://www.springframework.org/schema/context"       xmlns:tx="http://www.springframework.org/schema/tx"       xmlns:aop="http://www.springframework.org/schema/aop"       xmlns:mvc="http://www.springframework.org/schema/mvc"              xsi:schemaLocation="       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd       http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd       ">       <context:component-scan base-package="cn.et.day20170606">           <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>       </context:component-scan>       <!-- 加载资源文件 -->       <context:property-placeholder location="classpath:jdbc.properties"/>       <!-- 定义 数据源 通过el表达式把值设置进去  加载资源文件 -->       <bean id="datasoure" class="org.apache.commons.dbcp.BasicDataSource">           <property name="url" value="${url}"></property>           <property name="driverClassName" value="${driverClassName}"></property>           <property name="username" value="${userAccount}"></property>           <property name="password" value="${password}"></property>           <property name="validationQuery" value="SELECT sysdate FROM DUAL"/>         </bean>           <!-- 数据库的操作类 -->       <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">           <property name="dataSource" ref="datasoure"></property>           <property name="configLocation" value="classpath:mybatis_config.xml"></property>       </bean>       <!-- 配置扫描 扫描接口映射的注解和xml文件-->       <bean id="scannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">   [html]  view plain  copy <span style="white-space:pre">  </span>    <!-- 这么注入才不会覆盖加载资源文件 -->           <property name="sqlSessionFactoryBeanName" value="sessionFactory"></property>           <property name="basePackage" value="cn.et.day20170606.dao.mapper"></property>       </bean>        <!-- 声明事物管理器    数据库的事物控制类 用来控制事物 -->         <bean id="trancsaction" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">             <!--必须要加载这个属性 通过这个源把数据库的事物交给他处理 -->             <property name="dataSource" ref="datasoure"></property>         </bean>         <!-- 声明事物通知 -->         <tx:advice id="tran" transaction-manager="trancsaction">             <tx:attributes>             <!-- 告诉他拦截这个方法 -->               <tx:method name="insert*" />               <tx:method name="update*" propagation="REQUIRED"/>             <tx:method name="delete*" propagation="REQUIRED"/>             <!-- *代表了除了 上面配置的方法都不使用事务 -->             <tx:method name="*" read-only="true"/>           </tx:attributes>         </tx:advice>        <!-- 声明的事物通知方法 -->         <aop:config>             <!-- 配置一个切入点 -->             <aop:pointcut expression="execution(* cn.et.day20170606.service.*Service.*(..))" id="money"/>             <!-- 把通知和切入点引进来 -->             <aop:advisor advice-ref="tran" pointcut-ref="money"/>         </aop:config>   </beans>  

springmvc.xml

[html]  view plain  copy <?xml version="1.0" encoding="UTF-8"?>      <beans       xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns:p="http://www.springframework.org/schema/p"       xmlns:context="http://www.springframework.org/schema/context"       xmlns:tx="http://www.springframework.org/schema/tx"       xmlns:aop="http://www.springframework.org/schema/aop"       xmlns:mvc="http://www.springframework.org/schema/mvc"              xsi:schemaLocation="       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd       http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd       ">       <!-- 配置扫描 -->       <context:component-scan base-package="cn.et.day20170606">           <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>           <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>       </context:component-scan>        <!-- 配置json消息转换器-->      <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">           <property name="supportedMediaTypes">               <list>                           <!--                           设置响应的支持的响应类型                               -->                               <value>text/html</value>                               <value>text/html;charset=utf-8</value>                               <value>application/json;charset=utf8</value>               </list>           </property>      </bean>       <!-- 交给tomcat处理 才可以访问静态资源 -->       <mvc:default-servlet-handler/>              <!-- 配置视图解析器        <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/jsps/" p:suffix=".jsp">       </bean>       -->      <mvc:annotation-driven/>   </beans>  

mybatis.xml

[html]  view plain  copy <?xml version="1.0" encoding="UTF-8" ?>   <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">   <configuration>       <!-- Mybatis在使用resultMap来映射查询结果中的列,如果查询结果中包含空值的列(不是null),       则Mybatis在映射的时候,不会映射这个字段,例如 查询 name,sex,age       ,数据库中的age字段没有值,Mybatis返回的map中只映射了 name和sex字段,而age字段则没有包含 -->         <settings>             <setting name="callSettersOnNulls" value="true"/>        </settings>   </configuration>  

Controller

[java]  view plain  copy package cn.et.day20170606.controller;      import java.io.IOException;   import java.io.OutputStream;   import java.util.List;      import org.springframework.beans.factory.annotation.Autowired;   import org.springframework.stereotype.Controller;   import org.springframework.web.bind.annotation.RequestMapping;   import org.springframework.web.bind.annotation.ResponseBody;      import cn.et.day20170606.entity.EmpEntity;   import cn.et.day20170606.service.EmpJaxaService;   import cn.et.day20170606.utils.PagingEntity;      /**   *    * @author Administrator   *http://localhost:8080/springmvc/day0606/queryEmp   */   @Controller   @RequestMapping(value="/day0609")   public class EmpJaxaAction {       @Autowired       private EmpJaxaService empService;       /**       *查询数据库的分页数据方法       */       @RequestMapping(value="/queryPaginEmp")       @ResponseBody       public  PagingEntity queryPagingEmp(Integer pagin,String ename){           return empService.queryPaginEmp(ename, pagin);       }              /**       *查询数据库的数据方法       */       @RequestMapping(value="/queryEmp")       @ResponseBody       public  List queryEmp(String ename){           return empService.queryEmp(ename);       }       /**       *新增数据库的数据方法       *成功返回1 失败返回0       * @throws IOException        */       @ResponseBody       @RequestMapping(value="/insertEmp")       public void insertEmp(String ename,               String job,               String mgr,               String hiredate,               String sal,               String comm,               String deptno,OutputStream os) throws IOException{           EmpEntity emp=new EmpEntity();           emp.setComm(comm);           emp.setEname(ename);           emp.setHiredate(hiredate);           emp.setDeptno(deptno);           emp.setJob(job);           emp.setMgr(mgr);           emp.setSal(sal);           try{               empService.insertEmp(emp);               os.write("1".getBytes());           }catch (Exception e) {               os.write("0".getBytes());           }                  }       /**       *更新数据库的数据方法       * @throws IOException        */       @ResponseBody       @RequestMapping(value="/updateEmp")       public void updateEmp(String ename,String empno,               String job,               String mgr,               String hiredate,               String sal,               String comm,               String deptno,OutputStream os) throws IOException{           EmpEntity emp=new EmpEntity();           emp.setComm(comm);           emp.setEname(ename);           emp.setHiredate(hiredate);           emp.setDeptno(deptno);           emp.setJob(job);           emp.setMgr(mgr);           emp.setSal(sal);           emp.setDeptno(deptno);           emp.setEmpno(empno);           try{               empService.updateEmp(emp);               os.write("1".getBytes());           }catch (Exception e) {               os.write("0".getBytes());           }                  }       /**       * 删除数据库数据的方法       * @throws IOException        */       @ResponseBody       @RequestMapping(value="/deleteEmp")       public void deleteEmp(String empno,OutputStream os) throws IOException{           try{               empService.deleteEmp(empno);               os.write("1".getBytes());           }catch (Exception e) {               os.write("0".getBytes());           }                  }   }  

Service

[java]  view plain  copy package cn.et.day20170606.service.impl;      import java.util.List;   import java.util.Map;      import org.springframework.beans.factory.annotation.Autowired;   import org.springframework.stereotype.Service;      import cn.et.day20170606.dao.EmpJaxaDao;   import cn.et.day20170606.entity.EmpEntity;   import cn.et.day20170606.service.EmpJaxaService;   import cn.et.day20170606.utils.Calculate;   import cn.et.day20170606.utils.PagingEntity;         @Service   public class EmpJaxaServiceImpl implements EmpJaxaService {       @Autowired       private EmpJaxaDao empDao;       /**       *调用查询数据库的数据方法       */       public List<Map<String,Object>> queryEmp(String ename){           return empDao.queryEmp("%"+ename+"%");       }       /**       *调用新增数据库的数据方法       */       public void insertEmp(EmpEntity emp){           empDao.insertEmp(emp);       }       /**       *调用更新数据库的数据方法       */       public void updateEmp(EmpEntity emp){           empDao.updateEmp(emp);       }       /**       * 调用删除数据库数据的方法       */       public void deleteEmp(String empno){           empDao.deleteEmp(empno);       }       /**       *查询数据库的分页数据方法       */       public PagingEntity queryPaginEmp(String ename,Integer current) {           if(ename==null){               ename="";           }           int sum=empDao.queryTotalEmp(ename);           PagingEntity p=Calculate.calculate(current, 5, sum);           List list=empDao.queryPaginEmp(ename,p.getStart(),p.getEnd());           p.setList(list);           return p;       }      }  

Repository

[java]  view plain  copy package cn.et.day20170606.dao.impl;      import java.io.IOException;   import java.util.List;   import java.util.Map;      import org.springframework.beans.factory.annotation.Autowired;   import org.springframework.stereotype.Repository;      import cn.et.day20170606.dao.EmpJaxaDao;   import cn.et.day20170606.dao.mapper.EmpMybatiesMapper;   import cn.et.day20170606.entity.EmpEntity;      @Repository   public class EmpJaxaDaoImpl implements EmpJaxaDao{       @Autowired       private EmpMybatiesMapper empMybatiesMapper;       /**       *查询数据库的数据方法       * @throws IOException        * @throws IOException        */       public List<Map<String,Object>> queryEmp(String ename){           return empMybatiesMapper.queryEmp(ename);       }       /**       *新增数据库的数据方法       * @throws IOException        */       public void insertEmp(EmpEntity emp){           empMybatiesMapper.insertEmp(emp);       }       /**       *更新数据库的数据方法       * @throws IOException        */       public void updateEmp(EmpEntity emp){           empMybatiesMapper.updateEmp(emp);       }       /**       * 删除数据库数据的方法       * @throws IOException        * @throws IOException        */       public void deleteEmp(String empno){           empMybatiesMapper.deleteEmp(empno);       }       /**       *查询数据库的分页数据方法       *注意结束位置再前面   开始位置再后面       * @throws IOException        */       public List<Map<String,Object>> queryPaginEmp(String ename, int start,               int end){           return empMybatiesMapper.queryPaginEmp(ename, end, start);       }       /**       *查询数据库的总数方法       * @throws IOException        */       public int queryTotalEmp(String ename){           return empMybatiesMapper.queryTotalEmp(ename);       }   }  

mybatis的注解接口

[java]  view plain  copy package cn.et.day20170606.dao.mapper;      import java.util.List;   import java.util.Map;      import org.apache.ibatis.annotations.Delete;   import org.apache.ibatis.annotations.Insert;   import org.apache.ibatis.annotations.Param;   import org.apache.ibatis.annotations.Select;   import org.apache.ibatis.annotations.Update;      import cn.et.day20170606.entity.EmpEntity;         public interface EmpMybatiesMapper {   [java]  view plain  copy <span style="white-space:pre">  1 max(列)+1  只允许单线程   不建议在开发坏境中用  开发测试可以用        2 序列  只允许单数据库的情况  next 开发坏境        3 uuid 分布式应用程序   (select sys_guid from dual)</span>       /**       *查询数据库的数据方法       */       @Select(value="select empno,ename,job,mgr,to_char(hiredate,'yyyy-mm-dd') as hiredate,sal,comm,deptno from emp where nvl(ename,' ') like '%'||#{ename}||'%'")       public List<Map<String,Object>> queryEmp(@Param(value="ename")String ename);       /**       *查询数据库的分页数据方法       */       @Select(value="select * from (select empno,ename,job,mgr,to_char(hiredate,'yyyy-mm-dd') as hiredate,sal,comm,deptno,rownum rn from emp where nvl(ename,' ') like '%'||#{ename}||'%') where rn<=#{start} and rn>=#{end}")       public List<Map<String,Object>> queryPaginEmp(@Param(value="ename")String ename,@Param(value="start")int start,@Param(value="end")int end);       /**       *查询数据库的总数方法       */       @Select("select count(rowid) as CT from emp where nvl(ename,' ') like '%'||#{ename}||'%'")       public int queryTotalEmp(@Param(value="ename")String ename);       /**       *新增数据库的数据方法       */       @Insert(value="insert into emp values((select nvl(max(empno),0)+10 from emp),#{emp.ename},#{emp.job},#{emp.mgr},to_date(#{emp.hiredate},'yyyy-mm-dd'),#{emp.sal},#{emp.comm},#{emp.deptno})")       public void insertEmp(@Param(value="emp")EmpEntity emp);       /**       *更新数据库的数据方法       */       @Update(value="update emp set ename=#{emp.ename},job=#{emp.job},mgr=#{emp.mgr},hiredate=to_date(#{emp.hiredate},'yyyy-mm-dd'),sal=#{emp.sal},comm=#{emp.comm},deptno=#{emp.deptno} where empno=#{emp.empno}")       public void updateEmp(@Param(value="emp")EmpEntity emp);       /**       * 删除数据库数据的方法       */       @Delete(value="delete from emp where empno=#{empno}")       public void deleteEmp(@Param(value = "empno") String empno);          }  

entity

[java]  view plain  copy package cn.et.day20170606.entity;      /**   * 数据库的数据类 (一个对象就是数据库的一行)   * @author Administrator   *   */   public class EmpEntity {           private String empno;           private String ename;           private String job;           private String mgr;           private String hiredate;           private String sal;           private String comm;           private String deptno;           public String getEmpno() {               return empno;           }           public void setEmpno(String empno) {               this.empno = empno;           }           public String getEname() {               return ename;           }           public void setEname(String ename) {               this.ename = ename;           }           public String getJob() {               return job;           }           public void setJob(String job) {               this.job = job;           }           public String getMgr() {               return mgr;           }           public void setMgr(String mgr) {               this.mgr = mgr;           }           public String getHiredate() {               return hiredate;           }           public void setHiredate(String hiredate) {               this.hiredate = hiredate;           }           public String getSal() {               return sal;           }           public void setSal(String sal) {               this.sal = sal;           }           public String getComm() {               return comm;           }           public void setComm(String comm) {               this.comm = comm;           }           public String getDeptno() {               return deptno;           }           public void setDeptno(String deptno) {               this.deptno = deptno;           }              }  

分页的工具类

[java]  view plain  copy package cn.et.day20170606.utils;      import java.util.List;         /**   * 分页的一些参数   * @author    *   * 编写时间:2017-4-19 下午03:45:42   */   public class PagingEntity {       /**       * 当前页数       */       private int current;       /**       * 一页显示的条数       */       private int quantity;       /**       * 数据库的总条数       */       private int sum;       /**       * 首页       */       private int first=1;       /**       * 尾页       */       private int trail;       /**       * 上一页       */       private int last;       /**       * 下一页       */       private int next;       /**       * 开始的位置       */       private int start;       /**       * 结束的位置       */       private int end;       private List list;       public int getCurrent() {           return current;       }       public void setCurrent(int current) {           this.current = current;       }       public int getQuantity() {           return quantity;       }       public void setQuantity(int quantity) {           this.quantity = quantity;       }       public int getSum() {           return sum;       }       public void setSum(int sum) {           this.sum = sum;       }       public int getLast() {           return last;       }       public void setLast(int last) {           this.last = last;       }       public int getNext() {           return next;       }       public void setNext(int next) {           this.next = next;       }       public int getStart() {           return start;       }       public void setStart(int start) {           this.start = start;       }       public int getEnd() {           return end;       }       public void setEnd(int end) {           this.end = end;       }              public int getFirst() {           return first;       }       public void setFirst(int first) {           this.first = first;       }       public int getTrail() {           return trail;       }       public void setTrail(int trail) {           this.trail = trail;       }       public List getList() {           return list;       }       public void setList(List list) {           this.list = list;       }          }  

给分页bean赋值

[java]  view plain  copy package cn.et.day20170606.utils;   /**   * 用来计算分页的参数   * @author 周芳园   *   * 编写时间:2017-4-19 下午04:01:33   */   public class Calculate {       /**       * 设置他的参数       * @param current       * @param quantity       * @param sum       * @return       */       public static PagingEntity calculate(int current,int quantity,int sum){           PagingEntity pa=new PagingEntity();           pa.setCurrent(current);           pa.setQuantity(quantity);           pa.setSum(sum);           int last=(current==1?1:current-1);           int start=(current-1)*quantity+1;           int end=current*quantity;           int trail=(sum%quantity==0?sum/quantity:sum/quantity+1);           int next=(current==trail?trail:current+1);           pa.setLast(last);           pa.setNext(next);           pa.setStart(start);           pa.setEnd(end);           pa.setTrail(trail);           return pa;       }       /**       * 测试逻辑对不对       */       public static void main(String[] args) {           Calculate ca=new Calculate();           PagingEntity pa=ca.calculate(2516);           System.out.print("当前页"+pa.getCurrent());           System.out.print("总页"+pa.getTrail());           System.out.println("上一页"+pa.getLast());           System.out.println("开始位置"+pa.getStart());           System.out.println("结束位置"+pa.getEnd());       }   }  

jsp

[html]  view plain  copy <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>   <html>   <head>   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">       <script type="text/javascript">               var path="${pageContext.request.contextPath}/day0609";               //根据id获取对象               function $(id){                   return document.getElementById(id);               }               //和div赋值               function toUpdate(empno,ename,job,mgr,hiredate,sal,comm,deptno){                   $('updateDiv').style.display='block';                   $('empNoId').value=empno;                   $('updateEname').value=(ename=='null'?'':ename);                   $('updateJob').value=(job=='null'?'':job);                   $('updateMgr').value=mgr;                   $('updateHiredate').value=hiredate;                   $('updateSal').value=sal;                   $('updateComm').value=comm;                   $('updateDeptno').value=deptno;                                  }               /**                       封装ajax                **/                function sendAjax(method,url,callback,param){                   var xmlHttp=new XMLHttpRequest();                   //向服务器发出请求                   //规定请求的类型、URL 以及是否异步处理请求。                   //method:请求的类型;GET 或 POST                   //url:文件在服务器上的位置                   //async:true(异步)或 false(同步)                   xmlHttp.open(method,url,true);                   //设置响应的回调 当后台的json返回后 自动调用xhr.onreadystatechange指定的函数                   xmlHttp.onreadystatechange=function(){                       if(xmlHttp.readyState==4 && xmlHttp.status==200){                           //成功后调用第三个函数                        callback(xmlHttp.responseText);                      }                    }                    //post 在send里面带参数 get直接带 post一定要设置setRequestHeader                    if(method=="POST"){                       xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");                       xmlHttp.send(param);                    }else{                       xmlHttp.send();                    }                                   }               //和action交互的方法 用于更新               function toUpdate1(){                   document.getElementById('updateDiv').style.display='none'                                                         var empno=$('empNoId').value;                   var ename=$('updateEname').value;                   var job=$('updateJob').value;                   var mgr=$('updateMgr').value;                   var hiredate=$('updateHiredate').value;                   var sal=$('updateSal').value;                   var comm=$('updateComm').value;                   var deptno=$('updateDeptno').value;                   //参数                   var param="ename="+ename+"&job="+job+"&mgr="+mgr+"&hiredate="+hiredate+"&sal="+sal+"&comm="+comm+"&deptno="+deptno+"&empno="+empno                   //调用ajax好action交互                   sendAjax("POST",path+"/updateEmp",function(message){                       if(message==1){                               alert("操作成功");                               toQuery(current);                       }else{                           alert("操作失败");                       }                   },param)               }               //和action交互的方法 用于新增               function toAdd(){                   document.getElementById('addDiv').style.display='none'                   var xmlHttp=new XMLHttpRequest();                   var ename=$('a1').value;                   var job=$('a2').value;                   var mgr=$('a3').value;                   var hiredate=$('a4').value;                   var sal=$('a5').value;                   var comm=$('a6').value;                   var deptno=$('a7').value;                   var param="ename="+ename+"&job="+job+"&mgr="+mgr+"&hiredate="+hiredate+"&sal="+sal+"&comm="+comm+"&deptno="+deptno;                   sendAjax("POST",path+"/insertEmp",function(message){                       if(message==1){                               alert("操作成功");                               toQuery(current);                       }else{                           alert("操作失败");                       }                   },param)                           }               //和action交互的方法 用于删除               function toDelete(empno){                   var param="empno="+empno;                   sendAjax("POST",path+"/deleteEmp",function(message){                       if(message==1){                               alert("操作成功");                               toQuery(current);                       }else{                           alert("操作失败");                       }                   },param)                   }               //分页的一些参数               var current=1;               var sum=0;               var trail=0;               var last=0;               var next=0;               和action交互的方法 用于查询               function toQuery(pagin){                   var xmlHttp=new XMLHttpRequest();                   var tb=$("tb");                   var td=$("td");                   var ename=$("ename").value;                   xmlHttp.open("GET",path+"/queryPaginEmp?ename="+ename+"&pagin="+pagin,true);                   xmlHttp.onreadystatechange=function(){                       if(xmlHttp.readyState==4&&xmlHttp.status==200){                           //获取action响应的内容                           var json=xmlHttp.responseText;                           //把它转成json对象                           var jsonall=JSON.parse(json);                           //给分页的一些参数赋值                           current=jsonall.current;                           sum=jsonall.sum;                           trail=jsonall.trail;                           last=jsonall.last;                           next=jsonall.next;                           $("p1").innerHTML=current;                           $("p2").innerHTML=trail;                           $("p3").innerHTML=sum;                           var jsonObj=jsonall.list;                           //无刷新在此查询的时候把整个tbody删除                           tb.removeChild(td);                           var tdRow=document.createElement("tbody");                           tdRow.setAttribute("id","td");                           //把tbody加到table里面去                           tb.appendChild(tdRow);                           for ( var i = 0; i < jsonObj.length; i++) {                               var el = jsonObj[i];                               //创建节点                               var trRow=document.createElement("tr");                               var tdRow1=document.createElement("td");                               var tdRow2=document.createElement("td");                               var tdRow3=document.createElement("td");                               var tdRow4=document.createElement("td");                               var tdRow5=document.createElement("td");                               var tdRow6=document.createElement("td");                               var tdRow7=document.createElement("td");                               var tdRow8=document.createElement("td");                               var tdRow9=document.createElement("td");                               tdRow1.innerHTML=el.EMPNO;                               tdRow2.innerHTML=el.ENAME;                               tdRow3.innerText=el.JOB;                               tdRow4.innerText=el.MGR;                               tdRow5.innerHTML=el.HIREDATE;                               tdRow6.innerHTML=el.SAL;                               tdRow7.innerHTML=el.COMM;                               tdRow8.innerHTML=el.DEPTNO;                               tdRow9.innerHTML="<button οnclick='toDelete("+el.EMPNO+")'>删除</button><button onclick=toUpdate("+el.EMPNO+",'"+el.ENAME+"','"+el.JOB+"',"+                               el.MGR+",'"+el.HIREDATE+"',"+el.SAL+","+el.COMM+","+el.DEPTNO+")>更新</button>";                               //把节点tdRow1加到trRow                               trRow.appendChild(tdRow1);                               trRow.appendChild(tdRow2);                               trRow.appendChild(tdRow3);                               trRow.appendChild(tdRow4);                               trRow.appendChild(tdRow5);                               trRow.appendChild(tdRow6);                               trRow.appendChild(tdRow7);                               trRow.appendChild(tdRow8);                               trRow.appendChild(tdRow9);                               tdRow.appendChild(trRow);                           }                       }                   }                   xmlHttp.send();               }           </script>       </head>   <body onload="toQuery(1)">       <!-- http://localhost:8080/simb/day20170609/emp.jsp -->           ename<input type="text" name="ename" id="ename"/>           <input type="button" value="查询" onclick="toQuery(current)"/>           <input type="button" value="新增" onclick="document.getElementById('addDiv').style.display='block'"/><br/>                      <table id="tb">               <thead>                   <tr>                       <td>empno</td>                       <td>ename</td>                       <td>job</td>                       <td>mgr</td>                       <td>hiredate</td>                       <td>sal</td>                       <td>comm</td>                       <td>deptno</td>                        <td>操作</td>                   </tr>               </thead >               <tbody id="td">                                  </tbody>           </table>               <input type="image" src="${pageContext.request.contextPath}/day20170609/image/18.gif" onclick="toQuery(1)"/>               <input type="image" src="${pageContext.request.contextPath}/day20170609/image/20.gif" onclick="toQuery(last)"/>                 当前<span id="p1"></span>页  总<span id="p2"></span>页  总:<span id="p3"></span>               <input type="image" src="${pageContext.request.contextPath}/day20170609/image/16.gif" onclick="toQuery(next)"/>               <input type="image" src="${pageContext.request.contextPath}/day20170609/image/14.gif" onclick="toQuery(trail)"/>           <!-- 新增的div-->           <div id="addDiv" style="display:none;position: absolute;left: 65%;top: 14%;width: 300px;height:200px;background:linear-gradient(to bottom,skyblue,gray);border: 1px solid black;">                   ENAME:<input type='text' name='ename' id='a1'>                   <br/>                   JOB:<input type='text' name='job' id='a2'>                   <br/>                   MGR:<input type='text' name='mgr' id='a3'>                   <br/>                   HIREDATE:<input type='text' name='hiredate' id='a4'>                   <br/>                   SAL:<input type='text' name='sal' id='a5'>                   <br/>                   COMM:<input type='text' name='comm' id='a6'>                   <br/>                   DEPTNO:<input type='text' name='deptno' id='a7'>                   <br/>                   <input type='button' value="新增"  onclick="toAdd()">                   <input type='button' value="关闭" onclick="document.getElementById('addDiv').style.display='none'">           </div>                      <!-- 修改的div-->           <div id="updateDiv" style="display:none;position: absolute;left: 65%;top: 14%;width: 300px;height:200px;background:linear-gradient(to bottom,skyblue,gray);border: 1px solid black;">                   <input type='hidden' name='empno' id='empNoId'>                   ENAME: <input type='text' id="updateEname"  name='ename'>                   <br/>                   JOB: <input type='text' id="updateJob"  name='job'>                   <br/>                   MGR: <input type='text' id="updateMgr"  name='mgr'>                   <br/>                   HIREDATE: <input type='text' id="updateHiredate"  name='hiredate'>                   <br/>                   SAL: <input type='text' id="updateSal"  name='sal'>                   <br/>                   COMM: <input type='text' id="updateComm"  name='comm'>                   <br/>                   DEPTNO: <input type='text' id="updateDeptno"  name='deptno'>                   <br/>                   <input type='button' value='修改' onclick="toUpdate1()">                   <input type='button' value="关闭" onclick="document.getElementById('updateDiv').style.display='none'">           </div>   </body>   </html>
转载请注明原文地址: https://www.6miu.com/read-53144.html

最新回复(0)