搭建SSM框架的配置文件

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;
    }

}

 

猜你喜欢

转载自www.cnblogs.com/xiaoshenke/p/11110774.html