具体步奏
步骤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
- <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
- <?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">
- <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
- <?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
- <?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
- 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
- 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
- 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的注解接口
- 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 {
- <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
- 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;
- }
- }
分页的工具类
- 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赋值
- 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(2, 5, 16);
- 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
- <%@ 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>