pom.xml所需要的基本依赖和插件:

<dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.0</version>
        </dependency>

<dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.5</version>
        </dependency>
        <!--逆向生成带分页的插件-->
        <dependency>
            <groupId>com.itfsw</groupId>
            <artifactId>mybatis-generator-plugin</artifactId>
            <version>1.0.5</version>
        </dependency>
        <!--2.Spring-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>4.2.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>4.2.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.2.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.2.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>4.2.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>4.2.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>4.2.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>4.2.5.RELEASE</version>
        </dependency>
        <!--3.SpringMvc-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.2.5.RELEASE</version>
        </dependency>
        <!--import org.junit.Test  @Test-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
        <!--4.c3p0-->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.2</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
        </dependency>
        <!--pojo转换成 json -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.7.3</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.7.3</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.7.3</version>
        </dependency>

<!--servlet 2.5 -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <!--此处的servlet仅在编译和测试的时候使用,运行的时候不使用,使用的是tomcat中的servlet-->
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>

插件:这里Tomcat做测试用,注意Tomcat中的servlet与依赖中的servlet的冲突,可以配置依赖servlet的scope,<scope>provided</scope>

插件中的 <pluginManagement>是插件管理,如果要运行Tomcat,需要注释掉这个插件管理

<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/</path>
<port>8080</port>
<uriEncoding>UTF-8</uriEncoding>
</configuration>
</plugin> 配置web.xml: <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
         http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         id="WebApp_ID" version="3.0">
  <!--web.xml:优先加载springmvc、而后加载spring,spring中在加载mybatis-->
  <!--全局、监听、骑马、异步走、servlet优先补充维生素c-->
 
  <!--1、全局监听器-->
  <context-param>
    <!--1-1、配置spring核心配置文件,并关联监听器-->
    <!--contextConfigLocation是全局监听器的一个属性-->
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring/applicationContext.xml</param-value>
  </context-param>
  <!--1-2、设置监听器ContextLoaderListener,利用属性contextConfigLocation关联spring核心配置文件,并自动加载核心配置文件-->
  <listener>
    <!--上下文加载监听器-->
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>  
  <!--2、通过编码格式过滤器过滤,并设置post方法中的request请求中文乱码编码
  拦截所有请求,request和response
  设置编码编码格式拦截器的属性encoding,类似于给set方法赋值
  再连接到编码格式拦截器
  -->
  <filter>
    <!--2.1、这里对监听器拦截的事件进行关联。ec起关联作用-->
    <filter-name>ec</filter-name>
    <!--2.2、提前找到CharacterEncodingFilter编码格式拦截器类提前拦截-->
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <!--2-3、局部初始化参数,给CharacterEncodingFilter编码格式拦截器的encoding属性设置编码格式-->
    <init-param>
      <param-name>encoding</param-name>
      <param-value>Utf-8</param-value>
    </init-param>
  </filter>
  <!--2.4、对所有的请求进行拦截用/*-->
  <filter-mapping>
    <filter-name>ec</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>   <!--3、使用servlet配置mvc,这里是配置springmvc的参数-->
  <servlet>
    <servlet-name>ds</servlet-name>
    <!--DispatcherServlet是mvc核心处理servlet,所有的servlet都归结于此-->
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <!--contextConfigLocation是核心处理的servlet类的属性-->
      <param-name>contextConfigLocation</param-name>
      <!--mvc核心配置文件-->
      <param-value>classpath:mvc/MVC.xml</param-value>
    </init-param>
    <!--启动优先加载mvc,1为-->
    <load-on-startup>1</load-on-startup>
  </servlet>
  <!--拦截所有的servlet请求-->
  <servlet-mapping>
    <servlet-name>ds</servlet-name>
    <!--/表示拦截的是servlet请求,被/*包含了-->
    <url-pattern>/</url-pattern>
  </servlet-mapping> </web-app> 配置springmvc的核心配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
         http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd"> <!--web.xml优先加载mvc(servlet层),在mvc核心配置文件中:启动注解:mvc特有的注解,开启mvc注解驱动,拼接jsp路径-->     <!--1、手动开启controller层类特有的注解,利用包扫描的方式-->
    <context:component-scan base-package="com.controller"/>     <!--2、开启SpringMVC特有的注解,包括方法和属性的注解-->
    <!--annotation-driven注释驱动-->
    <!--2-1、设置响应编码:string、json-->
    <mvc:annotation-driven>
        <!--2-1、converters转换器-->
        <mvc:message-converters>
            <!--string的http信息转换器:这里的源码编码格式为Charset.forName("ISO-8859-1"),覆盖它-->
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
            <!--为bean的有参构造设置编码-->
            <constructor-arg value="UTF-8"></constructor-arg>
            </bean>
            <!--这里的MappingJackson2HttpMessageConverter源码中父类的编码格式为utf-8,不用在设置有参构造的编码-->
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
        </mvc:message-converters>
    </mvc:annotation-driven>     <!--3、mvc默认的处理器:在web.xml中,配置mvc拦截servlet请求,并不能拦截jsp请求,如果拦截了静态资源的请求,就转交默认servlet
    处理,如果不是静态请求,就转交dispatcherservlet核心servlet处理
    -->
    <mvc:default-servlet-handler></mvc:default-servlet-handler>     <!--4、视图解析器,在controller中进行页面跳转的时候没有请求和响应,只能通过return来返回一个字符换,他的文件前后缀名就在这里拼接好-->
    <!--内部的资源视图解析器:就是web-INF下的资源-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--前缀-->
        <property name="prefix" value="/WEB-INF/jsp/"></property>
        <!--后缀-->
        <property name="suffix" value=".jsp"></property>
    </bean> </beans> 配置spring核心配置文件:appliacationContext.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:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
         http://www.springframework.org/schema/beans/spring-beans.xsd
          http://www.springframework.org/schema/tx
          http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
         http://www.springframework.org/schema/context
         http://www.springframework.org/schema/context/spring-context.xsd
         http://www.springframework.org/schema/aop
         http://www.springframework.org/schema/aop/spring-aop.xsd">
    <!--controller层有mvc来托管,dao由mybatis托管,剩下service层,spring除了托管service层还要托管mybatis的部分代码-->     <!--1、开启service层的注解:这里通过包扫描的方式-->
    <context:component-scan base-package="com.service"/>     <!--托管部分mybatis的代码-->
    <!--2、加载db.properties -->
    <context:property-placeholder location="classpath:properties/db.properties"/>     <!--3、数据源:这里通过c3p0连接数据池-->
    <bean id="ds" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>     <!--4、开启事务管理:需要jdbc依赖-->
    <bean id="tx" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!--关联数据源-->
        <property name="dataSource" ref="ds"></property>
    </bean>     <!--5、开启事物的注解:@Transactional-->
    <tx:annotation-driven transaction-manager="tx"/>     <!--6、spring去托管mybatis部分代码-->
    <bean id="fb" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--加载数据源,关联数据源-->
        <property name="dataSource" ref="ds"></property>
        <!--加载mybatis核心配置文件-->
        <property name="configLocation" value="classpath:mybatis/sqlMapConfig.xml"/>
        <!--利用包扫描的方式加载映射文件-->
        <property name="mapperLocations" value="classpath:mapper/*.xml"/>
    </bean>     <!--7、上面加载映射文件的时候利用了包扫描,利用包扫描加载映射文件要将映射文件和接口类放在同一个文件夹下。
    这里要做的就是关联接口和映射文件 MapperScannerConfigurer映射扫描配置-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!--指定接口路径-->
        <property name="basePackage" value="com.mapper"/>
        <property name="sqlSessionFactoryBeanName" value="fb"/>
    </bean> </beans> mybatis核心配置文件:
<?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>
   <!--spring托管了mybatis部分代码后,这里只需要配置预置输出和别名-->
   <!--1、预制输出-->
    <settings>
        <!-- 可以在控制台输出日志信息:sql语句和参数 -->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>     <!-- 2.表示类型别名   -->
    <typeAliases>
        <!-- 2.1每一个类型的别名  type属性表示别名对应的类型地址 alias表示起的别名-->
        <typeAlias type="java.util.List" alias="list"/>
        <!--<typeAlias type="com.kgc.pojo.Emp" alias="emp"/>-->
        <!-- package表示包,利用包的形式进行扫描包之下的所有的类,别名就是当前类名 -->
        <package name="com.pojo"/>
    </typeAliases> </configuration>  

db.properties:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/kgc1?zeroDateTimeBehavior=convertToNull
jdbc.username=root
jdbc.password=123456

mbg逆向生成配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<!-- 生成配置文件 -->
<generatorConfiguration>
    <context id="DB2Tables" targetRuntime="MyBatis3">
        <!--&lt;!&ndash;分页插件&ndash;&gt;-->
        <plugin type="com.itfsw.mybatis.generator.plugins.LimitPlugin"/>
        <commentGenerator>
            <!-- 是否去除注释,true表示是,false否 -->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>         <!-- 1.连接数据库信息 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/kgc1?characterEncoding=UTF-8"
                        userId="root"
                        password="123456">
        </jdbcConnection>
        <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
            NUMERIC 类型解析为java.math.BigDecimal -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>         <!-- 2.pojo类的生成配置  targetPackage表示目标文件夹
      targetProject表示当前目标文件夹所放置的目标地址
    -->
        <javaModelGenerator targetPackage="com.pojo" targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>         <!-- 3.sql映射文件生成配置 -->
        <sqlMapGenerator targetPackage="mapper" targetProject=".\src\main\resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>         <!-- 4.mapper接口配置 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.mapper" targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>         <!-- 5.数据库表和实体类映射 -->
        <table tableName="emp" domainObjectName="Emp">
        </table>
        <table tableName="dept" domainObjectName="Dept">
        </table>
    </context>
</generatorConfiguration> MbgTest逆向生成启动方法:
import org.junit.Test;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback; import java.io.File;
import java.util.ArrayList;
import java.util.List; public class MbgTest {
    @Test
    public void create() throws Exception {
        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        File configFile = new File("mbg.xml");
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(configFile);
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
        myBatisGenerator.generate(null);
    }
}

show.jsp:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2019/6/24 0024
  Time: 下午 7:25
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>数据展示页面</title>
    <script src="/js/jquery-3.3.1.min.js"/>
</head>
<body>
<%--搜索框--%>
<form  id="myForm" action="/emp/show" method="post" style="text-align: center">
    姓名:<input type="text" name="name" value="${page.name}">

生日:<input type="date" name="startBirth"  value="<fmt:formatDate value='${page.startBirth}' pattern='yyyy-MM-dd'/>" >-
    <input type="date" name="endBirth" value="<fmt:formatDate value='${page.endBirth}' pattern='yyyy-MM-dd'/>" >
    部门:<select name="deptId" >
    <option value="0">--请选择--</option>
    <c:forEach var="dept" items="${depts}">
        <option value="${dept.did}"
                <c:if test="${dept.did==page.deptId}">selected=true</c:if>
        >${dept.dname}</option>
    </c:forEach>
</select>
    <input type="hidden" id="pageNum" name="currPage" value="1">
    <input type="submit" value="搜索">
</form>

<%--数据展示页面--%>
<table border="1" cellpadding="10" cellspacing="1">
    <tr>
        <td>编号</td>
        <td>姓名</td>
        <td>年龄</td>
        <td>性别</td>
        <td>生日</td>
        <td>津贴</td>
        <td>工资</td>
        <td>部门</td>
    </tr>
    <c:forEach var="emp" items="${list}">
        <tr>
            <td>${emp.id}</td>
            <td>${emp.name}</td>
            <td>${emp.age}</td>
            <td>${emp.sex}</td>
            <td>${emp.birth}</td>
            <td>${emp.bonus}</td>
            <td>${emp.salary}</td>
            <td>${emp.deptid}</td>
        </tr>
    </c:forEach>

</table>

<%--分页区--%>
<table align="center" cellpadding="10" cellspacing="10" border="1">
    <tr>
        <td><a href="javascript:goPage(1)">首页</a></td>
        <td><a href="javascript:goPage(${page.currPage-1})">上一页</a></td>
        <c:forEach var="i" begin="1" end="${page.totalPage}">
            <td><a href="javascript:goPage(${i})">${i}</a></td>
        </c:forEach>
        <td><a href="javascript:goPage(${page.currPage+1})">下一页</a></td>
        <td><a href="javascript:toPage()">跳转</a>到第<input size="2" type="text" value="${page.currPage}" id="go">页</td>
        <td><a href="javascript:goPage(${page.totalPage})">尾页</a></td>
    </tr>
</table>
</body>
<!--js部分-->
<script>
    function goPage(page) {
        var total=${page.totalPage};

if(page>total){
            page=total;
        }
        if(page<1){
            page=1;
        }
        $("#pageNum").val(page);
        $("#myForm").submit()
    }
    function toPage() {
        var page=$("#go").val();
        goPage(page)
    }
</script>
</html>

add.jsp:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2019/6/25 0025
  Time: 上午 10:35
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="/emp/add2" method="post">
    姓名:<input type="text" name="name"/> <br>
    年龄:<input type="text" name="age"/><br>
    性别:<input type="text" name="sex"/><br>
    生日:<input type="date" name="birth"/><br>
    津贴:<input type="text" name="bonus"/><br>
    工资:<input type="text" name="salary"/><br>
    部门:<select name="deptid">
    <c:forEach var="dept" items="${depts}">
        <option value="${dept.did}">${dept.dname}</option>
    </c:forEach>
</select><br>
    <input type="submit" value="提交">
</form>
</body>
</html>


update.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

<form action="/emp/update2" method="post">

<input type="hidden" name="id" value="${emp.id}">

姓名:<input type="text" name="name" value="${emp.name}"/> <br>
    年龄:<input type="text" name="age" value="${emp.age}"/><br>
    性别:<input type="text" name="sex" value="${emp.sex}"/><br>
    生日:<input type="date" name="birth"
              value="<fmt:formatDate value='${emp.birth}' pattern='yyyy-MM-dd'/>" /><br>
    津贴:<input type="text" name="bonus" value="${emp.bonus}"/><br>
    工资:<input type="text" name="salary" value="${emp.salary}"/><br>
    部门:<select name="deptid">
    <c:forEach var="dept" items="${depts}">
        <option value="${dept.did}" <c:if test="${dept.did==emp.deptid}" >selected='true'</c:if> >
                ${dept.dname}
        </option>
    </c:forEach>
</select><br>
    <input type="submit" value="提交">
</form>

</body>
</html>

service层:

import com.mapper.DeptMapper;
import com.mapper.EmpMapper;
import com.pojo.Dept;
import com.pojo.Emp;
import com.pojo.EmpExample;
import com.pojo.PageBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
@Service
public class EmpServiceImpl implements IEmpService {

@Autowired
    private DeptMapper deptMapper;
    @Autowired
    private EmpMapper empMapper;

@Override
    public List<Dept> selectDept() {
        return null;
    }

@Override//分页查询所有员工
    public List<Emp> selectAll(PageBean page) {
        //1.条件 name  startBirth  endBirth  deptId
        EmpExample e = new EmpExample();
        //条件拼接
        EmpExample.Criteria c = e.createCriteria();

if(page.getName()!=null){
            c.andNameLike("%"+page.getName()+"%");
        }
        if(page.getStartbirth()!=null){
            c.andBirthGreaterThanOrEqualTo(page.getStartbirth());
        }
        if(page.getEndBirth()!=null){
            c.andBirthLessThanOrEqualTo(page.getEndBirth());
        }
        if(page.getDeptid()!=null&&page.getDeptid()!=0){
            c.andDeptidEqualTo(page.getDeptid());
        }

//分页
        //查询总记录数
        int count = (int) empMapper.countByExample(e);
        int size = page.getSize();
        int totalPage=(count%size==0)?(count/size):(count/size+1);

page.setCount(count);
        page.setTotalPage(totalPage);
        int startRow=(page.getCurrPage()-1)*size;

e.limit(startRow,size);
        List<Emp> list = empMapper.selectByExample(e);

for(Emp emp:list){
            Dept dept = deptMapper.selectByPrimaryKey(emp.getDeptid());
            emp.setDept(dept);
        }

return  list;
    }

@Override//查询所有的部门
    public List<Dept> selectDepts() {
        return deptMapper.selectByExample(null);
    }

@Override
    public int deleteById(int id) {
        return empMapper.deleteByPrimaryKey(id);
    }

@Override
    public int addEmp(Emp emp) {
        return empMapper.insertSelective(emp);
    }

@Override
    public Emp selectById(int id) {
        return empMapper.selectByPrimaryKey(id);
    }

@Override
    public int updateEmp(Emp emp) {
        return empMapper.updateByPrimaryKeySelective(emp);
    }

}


pagebean:

public class PageBean {
    //分页四大参数
    private Integer currPage=1;
    private Integer size=3;
    private Integer count;
    private Integer totalPage;

//搜索框查询条件
   private Integer deptid;
    @DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
    private Date Startbirth;
    @DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
    private Date EndBirth;
    private String name;


controller:

import com.pojo.Dept;
import com.pojo.Emp;
import com.pojo.PageBean;
import com.service.IEmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import java.util.List;

@Controller
@RequestMapping("/emp")
public class EmpController {
    @Autowired
    private IEmpService service;

//新增页面跳转
    @RequestMapping("/add1")
    public String add1(Model m){
        //查询所有的部门--中下拉框展示所有的部门
        List<Dept> depts=service.selectDepts();
        m.addAttribute("depts",depts);
        return "add";
    }
    //实现新增
    @RequestMapping("/add2")
    public String add2(Emp emp){
        int i=service.addEmp(emp);
        return "redirect:/emp/show";//去show方法 重查
    }

//1.查询单条 2.页面跳转
    @RequestMapping("/update1/{id}")
    public String update1(@PathVariable String id, Model m){
        Emp e=service.selectById(Integer.parseInt(id));
        m.addAttribute("emp",e);

//查询所有的部门--中下拉框展示所有的部门
        List<Dept> depts=service.selectDepts();
        m.addAttribute("depts",depts);

return "update";//转发到update.jsp
    }
    //执行修改
    @RequestMapping("/update2")
    public String update2(Emp emp){
        int i=service.updateEmp(emp);
        return "redirect:/emp/show";//去show方法 重查
    }

@RequestMapping("/deleteById/{id}")
    public String deleteById(@PathVariable  String id){
        int i=service.deleteById(Integer.parseInt(id));
        //删除后重查数据库
        return "redirect:/emp/show";//去show方法 重查
    }

//取调存转
    @RequestMapping("/show")
    public ModelAndView show(PageBean page, ModelAndView mvc){
    //查询所有部门下拉框展示
        List<Dept> depts=service.selectDept();

//模糊分页查询
        List<Emp> list=service.selectAll(page);

//存
    mvc.addObject("depts",depts);
    mvc.addObject("list",list);
    mvc.addObject("page",page);

//转-页面跳转
        mvc.setViewName("show");
        return mvc;
    }

}

 

搭建SSM框架的配置文件的更多相关文章

  1. 快速搭建ssm框架

    快速搭建SSM框架 因为最近有很多朋友问我自己的项目搭建的不够完善,并且经常出现一些小问题,那么今天我又整理了一下文档教大家如何快速搭建SSM框架我是用 eclipse搭建的,如果想用idear的话我 ...

  2. Eclipse中使用Maven搭建SSM框架

    Eclipse中不使用Maven搭建SSM框架:https://www.cnblogs.com/xuyiqing/p/9569459.html IDEA中使用Maven搭建SSM框架:https:// ...

  3. 第n次搭建 SSM 框架

    什么说第 N 次搭建SSM框架呢? 刚学习java的时候,搭建 SSM 框架想做一个个人项目之类的,后来没搭起来,也就拖延了,进入公司之后,接触的第一个项目就是SSM的,模仿了一下,也能搭个简简单单的 ...

  4. 详解intellij idea搭建SSM框架(spring+maven+mybatis+mysql+junit)(上)

    SSM(Spring+SpringMVC+MyBatis)框架集由Spring.SpringMVC.MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架. 其中spring是一个轻 ...

  5. IDEA搭建ssm框架测试衍生出的问题The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: D:\Develop\jdk7\jdk1.7.0_79\bin;

    最近玩起IDEA这开发工具,搭建ssm框架测试时,部署项目出现如下问题: 信息: The APR based Apache Tomcat Native library which allows opt ...

  6. 2018用IDEA搭建SSM框架(Spring+SpringMVC+Mybatis)

    使用IDEA搭建ssm框架 环境 工具:IDEA 2018.1 jdk版本:jdk1.8.0_171 Maven版本:apache-maven-3.5.3 Tomcat版本:apache-tomcat ...

  7. 使用maven搭建ssm框架的javaweb项目

    目前主流的javaweb项目,常会用到ssm(Spring+Spring MVC+Mybatis)框架来搭建项目的主体框架,本篇介绍搭建SSM框架的maven项目的实施流程.记之共享! 一.SSM框架 ...

  8. 使用maven搭建SSM框架

    使用maven搭建SSM框架,首先得准备好maven环境. 搭建maven环境 第一步:下载maven http://maven.apache.org/download.cgi 下载后解压就可以了. ...

  9. 使用Maven搭建SSM框架(Eclipse)

    今天学习一下使用Maven搭建SSM框架,以前都是用别人配置好的框架写代码,今天试试自己配置一下SSM框架. 这里我的参数是Windows7 64位,tomcat9,eclipse-jee-neon- ...

随机推荐

  1. 用canvas写飞机大战

    1.老规矩,当我们开始做项目的时候,我们第一步就是要进行分析,当我们的游戏开始做的时候我们要把一整个游戏分成五个阶段来写: 五个阶段和我方飞机的生命值,还有游戏的得分情况如下: //游戏欢迎状态 co ...

  2. Python基础-day01-8

    变量的基本使用 程序就是用来处理数据的,而变量就是用来存储数据的 目标 变量定义 变量的类型 变量的命名 01. 变量定义 在 Python 中,每个变量 在使用前都必须赋值,变量 赋值以后 该变量 ...

  3. JMeter多脚本间的启动延时

    JMeter做压测时,当需要多个jmx脚本依次执行时,需要用到“启动延时”,即间隔可设置的时间后启动运行下一个jmx脚本. 实现“启动延时”的方法有2个. 方法一.利用JMeter线程组中的" ...

  4. 集合系列 Map(十四):WeakedHashMap

    WeakedHashMap 也是 Map 集合的哈希实现,但其余 HashMap 的不同之处在于.其每个节点的 value 引用是弱引用,可以方便 GC 回收. public class WeakHa ...

  5. 读书笔记之《Java 并发编程的艺术》

    一.多线程语义 即使是单核处理器也支持多线程执行代码,CPU 通过给每个线程分配 CPU 时间片来执行任务,当前任务执行一个时间片后会切换到下一个任务,所以 CPU 通过不停的切换线程执行. 并发执行 ...

  6. Ubuntu 16.04 安装 CUDA10.1 (解决循环登陆的问题)

    0. 前言 这里直接用 cuda安装文件同时安装 NVIDIA 驱动和 CUDA,没有单独安装更高版本的 NVIDIA 驱动: 此安装是在 Intel 集显下的图形化界面,即用集显做 display, ...

  7. 封装和@property

    封装和@property 一.复习 1.接口类和抽象类 python中没有接口类,有抽象类,abc模块中的metaclass=ABCMeta,@abstructmethod,本质是做代码规范用的,希望 ...

  8. 做了这么久的程序员,你知道为什么会有 Lambda 表达式吗?

    Java8 有一些新的特性,今天老顾给大家分享一下关于 Lambda 表达式的由来,一开始感觉 Lambda 可读性蛮差的,不知道 为什么 Java8 会出来这个表达式?既然大佬们推出来,肯定是有原因 ...

  9. CAD怎么算面积?这种方法你要知道

    在CAD中,打开可能都是用过CAD制图软件,这是一个比较强大的绘图软件,可以绘制出各种类型的CAD图纸文件,还可以将绘制好的图纸面积进行测量.那CAD怎么算面积?其实计算面积的方法有很多中,下面给大家 ...

  10. 3.Ansible varialbes实战

    varialbes 1.什么是变量? ​ 以一个固定的字符串,表示一个不固定的值 version: 1.12 2.定义变量? 1.在playbook中定义变量? >1.vars 关键字 [roo ...