Java学习笔记12 ── MyBatis(SSM整合、基于SSM和RESTful的列表、分页、修改、批量删除)

SSM整合

导入jar

首先要导入相关的jar包,包括spring、springMVC、以及mybatis的还有一些第三方的jar包,比如:log4j,pageHelper,AspectJ,jackson,jstl。我已将常用的jar包打包上传到csdn了点此下载

搭建springMVC

配置web.xml

  • DispatcherServlet
  • HiddenHttpMethodFilter
  • CharacterEncodingFilter
 <!--解决中文乱码问题-->
         <filter>
             <filter-name>CharacterEncodingFilter</filter-name>
             <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
             <init-param>
                 <param-name>encoding</param-name>
                 <param-value>UTF-8</param-value>
             </init-param>
         </filter>
         <filter-mapping>
             <filter-name>CharacterEncodingFilter</filter-name>
             <url-pattern>/*</url-pattern>
         </filter-mapping>

         <!--支持RESTfu格式-->
         <filter>
             <filter-name>HiddenHttpMethodFilter</filter-name>
             <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
         </filter>
         <filter-mapping>
             <filter-name>HiddenHttpMethodFilter</filter-name>
             <url-pattern>/*</url-pattern>
         </filter-mapping>


         <!--配置DispatcherServlet-->

         <servlet>
             <servlet-name>DispatcherServlet</servlet-name>
             <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
             <init-param>
                 <param-name>contextConfigLocation</param-name>
                 <param-value>classpath:springMVC.xml</param-value>
             </init-param>
             <load-on-startup>1</load-on-startup>
         </servlet>
         <servlet-mapping>
             <servlet-name>DispatcherServlet</servlet-name>
             <url-pattern>/</url-pattern>
         </servlet-mapping>

配置springMVC.xml

	扫描控制层组件
	视图解析器
	Default Servlet
	MVC驱动
	可选:MultipartResolver(处理文件上传),拦截器
<?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:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!--设置控制层组件-->
    <context:component-scan base-package="com.glq.controller"></context:component-scan>


    <!--配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>


    <!--解决静态资源的问题-->
    <!--默认的servlet-->
    <mvc:default-servlet-handler/>
    <!--mvc驱动-->
    <mvc:annotation-driven/>


    <!--文件上传-->

    <!--&lt;!&ndash;处理文件上传,id必须为multipartResolver&ndash;&gt;-->
    <!--<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">-->
    <!--&lt;!&ndash;设置文件解析的编码,与页面的一致&ndash;&gt;-->
    <!--<property name="defaultEncoding" value="UTF-8"></property>-->
    <!--&lt;!&ndash;设置上传文件的最大的大小&ndash;&gt;-->
    <!--<property name="maxInMemorySize" value="102400"></property>-->
    <!--</bean>-->


    <!-- 拦截器 -->
    <!--<mvc:interceptors>-->
    <!--&lt;!&ndash;默认拦截所有请求&ndash;&gt;-->
    <!--<bean class="com.glq.FirstInterceptor"></bean>-->
    <!--<bean class="com.glq.SencondInterceptor"></bean>-->

    <!--&lt;!&ndash;自定义拦截方式&ndash;&gt;-->
    <!--&lt;!&ndash;<mvc:interceptor>&ndash;&gt;-->
    <!--&lt;!&ndash;<bean></bean>&ndash;&gt;-->
    <!--&lt;!&ndash;要拦截的请求&ndash;&gt;-->
    <!--&lt;!&ndash;<mvc:mapping path=""/>&ndash;&gt;-->
    <!--&lt;!&ndash;不拦截的请求&ndash;&gt;-->
    <!--&lt;!&ndash;<mvc:exclude-mapping path=""></mvc:exclude-mapping>&ndash;&gt;-->
    <!--&lt;!&ndash;</mvc:interceptor>&ndash;&gt;-->
    <!--</mvc:interceptors>-->
</beans>

整合springMVC和spring

配置web.xml:

使用监听器来提前加载spring的配置文件

ContextLoaderListener
context-param
         <!--配置spring监听器,自定义spring配置文件的位置和名称-->
         <context-param>
             <param-name>contextConfigLocation</param-name>
             <param-value>classpath:spring.xml</param-value>
         </context-param>
         <listener>
             <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
         </listener>

配置spring.xml:

只需要在spring.xml中配置扫描组件,这里要注意的是要排除controller,因为在springmvc中已经配置过了

    <!--扫描组件-->
    <context:component-scan base-package="com.glq">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"></context:exclude-filter>
    </context:component-scan>

搭建mybatis:

配置相应的数据源,引入相应的mapper文件,然后设置别名、懒加载、插件之类的

<?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>
    <!--标签有先后顺序-->
    <!--properties?,-->
    <!--settings?,-->
    <!--typeAliases?,-->
    <!--typeHandlers?,-->
    <!--objectFactory?,-->
    <!--objectWrapperFactory?,-->
    <!--reflectorFactory?,-->
    <!--plugins?,-->
    <!--environments?,d-->
    <!--atabaseIdProvider?,m-->
    <!--appers?-->

    <properties resource="jdbc.properties"></properties>
    <settings>
        <!--把下划线转换为驼峰-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <!--懒加载-->
        <!--开启延迟加载-->
        <setting name="lazyLoadingEnabled" value="true"></setting>
        <!--是否查询所有数据-->
        <setting name="aggressiveLazyLoading" value="false"></setting>
    </settings>
    <!--为类型设置类型别名,type设置java类型,若只设置type则默认的别名为类名且不区分大小写。-->

    <typeAliases>
        <!--<typeAlias type="com.glq.bean.User" alias="u"></typeAlias>-->
        <package name="com.glq.bean" ></package>
    </typeAliases>
    
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
    </plugins>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--<mapper resource="EmpMapper.xml"/>-->
        <package name="com.glq.mapper"></package>
    </mappers>
</configuration>

spring整合mybatis

将mybatis中的数据源之类的交给spring来管理,在mybatis中只留下settings和plugins
spring.xml:
properties文件的引入
DataSource数据源的配置
事务管理器
开启事务驱动
SqlSessionFactoryBean:管理SqlSession
MapperScannerConfigurer

 <!-- 引入资源文件 -->
    <context:property-placeholder location="classpath:jdbc.properties"/>

    <!-- 数据源 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"></property>
        <property name="url" value="${jdbc.url}"></property>
        <property name="username" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>

    <!-- 声明事务管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

    <!-- 开启事务注解驱动 -->
    <tx:annotation-driven transaction-manager="transactionManager"/>

    <!-- 管理mybatis操作数据库的会话对象SqlSession -->
    <bean class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 设置mybatis核心配置文件的路径 -->
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
        <!-- 设置数据源 -->
        <property name="dataSource" ref="dataSource"></property>
        <!-- 设置类型别名 -->
        <property name="typeAliasesPackage" value="com.glq.bean"></property>
        <!-- 设置映射文件的路径 -->
        <property name="mapperLocations" value="classpath:com/glq/mapper/*.xml"></property>
    </bean>

    <!-- 在所设置的包下,将所有的接口生成动态代理实现类,并由spring容器管理 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.glq.mapper"></property>
    </bean>

整合完成的四个配置文件

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
     <!--解决中文乱码问题-->
         <filter>
             <filter-name>CharacterEncodingFilter</filter-name>
             <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
             <init-param>
                 <param-name>encoding</param-name>
                 <param-value>UTF-8</param-value>
             </init-param>
         </filter>
         <filter-mapping>
             <filter-name>CharacterEncodingFilter</filter-name>
             <url-pattern>/*</url-pattern>
         </filter-mapping>

         <!--支持RESTfu格式-->
         <filter>
             <filter-name>HiddenHttpMethodFilter</filter-name>
             <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
         </filter>
         <filter-mapping>
             <filter-name>HiddenHttpMethodFilter</filter-name>
             <url-pattern>/*</url-pattern>
         </filter-mapping>


         <!--配置DispatcherServlet-->

         <servlet>
             <servlet-name>DispatcherServlet</servlet-name>
             <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
             <init-param>
                 <param-name>contextConfigLocation</param-name>
                 <param-value>classpath:springMVC.xml</param-value>
             </init-param>
             <load-on-startup>1</load-on-startup>
         </servlet>
         <servlet-mapping>
             <servlet-name>DispatcherServlet</servlet-name>
             <url-pattern>/</url-pattern>
         </servlet-mapping>


         <!--配置spring监听器,自定义spring配置文件的位置和名称-->
         <context-param>
             <param-name>contextConfigLocation</param-name>
             <param-value>classpath:spring.xml</param-value>
         </context-param>
         <listener>
             <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
         </listener>
</web-app>

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:context="http://www.springframework.org/schema/context" 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/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!--扫描组件-->
    <context:component-scan base-package="com.glq">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"></context:exclude-filter>
    </context:component-scan>


    <!-- 引入资源文件 -->
    <context:property-placeholder location="classpath:jdbc.properties"/>

    <!-- 数据源 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"></property>
        <property name="url" value="${jdbc.url}"></property>
        <property name="username" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>

    <!-- 声明事务管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

    <!-- 开启事务注解驱动 -->
    <tx:annotation-driven transaction-manager="transactionManager"/>

    <!-- 管理mybatis操作数据库的会话对象SqlSession -->
    <bean class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 设置mybatis核心配置文件的路径 -->
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
        <!-- 设置数据源 -->
        <property name="dataSource" ref="dataSource"></property>
        <!-- 设置类型别名 -->
        <property name="typeAliasesPackage" value="com.glq.bean"></property>
        <!-- 设置映射文件的路径 -->
        <property name="mapperLocations" value="classpath:com/glq/mapper/*.xml"></property>
    </bean>

    <!-- 在所设置的包下,将所有的接口生成动态代理实现类,并由spring容器管理 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.glq.mapper"></property>
    </bean>

</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:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!--设置控制层组件-->
    <context:component-scan base-package="com.glq.controller"></context:component-scan>


    <!--配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>


    <!--解决静态资源的问题-->
    <!--默认的servlet-->
    <mvc:default-servlet-handler/>
    <!--mvc驱动-->
    <mvc:annotation-driven/>


    <!--文件上传-->

    <!--&lt;!&ndash;处理文件上传,id必须为multipartResolver&ndash;&gt;-->
    <!--<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">-->
    <!--&lt;!&ndash;设置文件解析的编码,与页面的一致&ndash;&gt;-->
    <!--<property name="defaultEncoding" value="UTF-8"></property>-->
    <!--&lt;!&ndash;设置上传文件的最大的大小&ndash;&gt;-->
    <!--<property name="maxInMemorySize" value="102400"></property>-->
    <!--</bean>-->


    <!-- 拦截器 -->
    <!--<mvc:interceptors>-->
    <!--&lt;!&ndash;默认拦截所有请求&ndash;&gt;-->
    <!--<bean class="com.glq.FirstInterceptor"></bean>-->
    <!--<bean class="com.glq.SencondInterceptor"></bean>-->

    <!--&lt;!&ndash;自定义拦截方式&ndash;&gt;-->
    <!--&lt;!&ndash;<mvc:interceptor>&ndash;&gt;-->
    <!--&lt;!&ndash;<bean></bean>&ndash;&gt;-->
    <!--&lt;!&ndash;要拦截的请求&ndash;&gt;-->
    <!--&lt;!&ndash;<mvc:mapping path=""/>&ndash;&gt;-->
    <!--&lt;!&ndash;不拦截的请求&ndash;&gt;-->
    <!--&lt;!&ndash;<mvc:exclude-mapping path=""></mvc:exclude-mapping>&ndash;&gt;-->
    <!--&lt;!&ndash;</mvc:interceptor>&ndash;&gt;-->
    <!--</mvc:interceptors>-->
</beans>

mybatis-config.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>
    <!--标签有先后顺序-->
    <!--properties?,-->
    <!--settings?,-->
    <!--typeAliases?,-->
    <!--typeHandlers?,-->
    <!--objectFactory?,-->
    <!--objectWrapperFactory?,-->
    <!--reflectorFactory?,-->
    <!--plugins?,-->
    <!--environments?,d-->
    <!--atabaseIdProvider?,m-->
    <!--appers?-->


    <settings>
        <!--把下划线转换为驼峰-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>

        <!--懒加载-->
        <!--开启延迟加载-->
        <setting name="lazyLoadingEnabled" value="true"></setting>
        <!--是否查询所有数据-->
        <setting name="aggressiveLazyLoading" value="false"></setting>

        <!--开启二级缓存-->
        <setting name="cacheEnabled" value="true"/>
    </settings>

    <!--&lt;!&ndash;为类型设置类型别名,type设置java类型,若只设置type则默认的别名为类名且不区分大小写。&ndash;&gt;-->
    <!--<typeAliases>-->
        <!--&lt;!&ndash;<typeAlias type="com.glq.bean.User" alias="u"></typeAlias>&ndash;&gt;-->
        <!--<package name="com.glq.bean" ></package>-->
    <!--</typeAliases>-->

    <!--配置分页插件-->
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
    </plugins>


</configuration>

基于SSM和RESTful的列表、分页、修改、批量删除

列表+分页

获取客户端传过来的页码,然后根据页码查询到相应的emp,再获得分页条的数据,最后再把分页条和emp放到域中,在jsp中遍历显示即可。
controller:

    @RequestMapping(value = "/emps/{pageNum}",method = RequestMethod.GET)
    public String getEmp(@PathVariable("pageNum")Integer pageNum, HttpServletRequest req, Map<String,Object> map){

        System.out.println("getEmp");
        //从第pageNum页开始,查询2条数据
        PageHelper.startPage(pageNum,2);
        List<Emp> emps = empService.getAllEmp();

        //获取分页的html
        PageInfo<Emp> pageInfo = new PageInfo<>(emps, 3);
        String page = PageUtil.getPageInfo(pageInfo, req);

        //放到作用域中
        map.put("emps",emps);
        map.put("page",page);

        return "list";

    }

list.html

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2020/5/17
  Time: 14:59
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
    <title>列表</title>
    <link rel="stylesheet" href="${pageContext.servletContext.contextPath}/css/index_work.css">
    <script type="text/javascript" src="${pageContext.servletContext.contextPath}/js/jquery-1.8.2.min.js"></script>
</head>
<body>
<form>
    <table>
        <tr>
            <th>EID</th>
            <th>ENAME</th>
            <th>AGE</th>
            <th>SEX</th>
            <th>DEPARTMENTNAME</th>
            <th>OPTIONS</th>
        </tr>
        <c:forEach items="${emps}" var="emp">
            <tr>
                <td>${emp.eid}</td>
                <td>${emp.ename}</td>
                <td>${emp.age}</td>
                <td>${emp.sex}</td>
                <td>${emp.dept.dname}</td>
                <td>
                    <a href="${pageContext.servletContext.contextPath}/emp/${eid}">修改</a>
                </td>
            </tr>
        </c:forEach>
        <tr>
            <td colspan="6">
                ${page}
            </td>
        </tr>


    </table>

</form>

</body>
</html>

pageutil:

public class PageUtil {

	public static String getPageInfo(PageInfo<Emp> pageInfo, HttpServletRequest request) {
		
		String path = request.getContextPath() + "/";
		StringBuilder builder = new StringBuilder();
		
		//拼接首页
		builder.append("<a href='"+path+"emps/1'>首页</a>");
		builder.append("&nbsp;&nbsp;");
		
		//拼接上一页
		if(pageInfo.isHasPreviousPage()) {
			builder.append("<a href='"+path+"emps/"+pageInfo.getPrePage()+"'>上一页</a>");
			builder.append("&nbsp;&nbsp;");
		}else {
			builder.append("上一页");
			builder.append("&nbsp;&nbsp;");
		}
		
		//拼接页码
		int[] nums = pageInfo.getNavigatepageNums();
		for (int i : nums) {
			if(i == pageInfo.getPageNum()) {
				builder.append("<a style='color:red;' href='"+path+"emps/"+i+"'>"+i+"</a>");
				builder.append("&nbsp;&nbsp;");
			}else {
				builder.append("<a href='"+path+"emps/"+i+"'>"+i+"</a>");
				builder.append("&nbsp;&nbsp;");
			}
		}
		
		//拼接下一页
		if(pageInfo.isHasNextPage()) {
			builder.append("<a href='"+path+"emps/"+pageInfo.getNextPage()+"'>下一页</a>");
			builder.append("&nbsp;&nbsp;");
		}else {
			builder.append("下一页");
			builder.append("&nbsp;&nbsp;");
		}
		
		//拼接尾页
		builder.append("<a href='"+path+"emps/"+pageInfo.getPages()+"'>尾页</a>");
		builder.append("&nbsp;&nbsp;");
		
		return builder.toString();
		
	}
	
}

修改

首先从客户端获取要修改的用户的id,然后获取到用户的信息及所有部门的信息跳转到update.jsp进行回显,然后用户修改完成以后进行获取,然后进行修改。

    @RequestMapping(value = "/emp/{eid}",method = RequestMethod.GET)
    public String updateEmp(@PathVariable("eid") String eid, Map<String, Object> map){
        Emp emp = empService.getEmpByEid(eid);
        List<Dept> depts = empService.getAllDept();

        Map<String,Object> sex = new HashMap<>();
        sex.put("0","女");
        sex.put("1","男");

        map.put("emp",emp);
        map.put("depts",depts);
        map.put("sex",sex);

        return "update";
    }

    @RequestMapping(value="/emp", method=RequestMethod.PUT)
    public String updateEmp(Emp emp) {
        empService.updateEmp(emp);
        return "redirect:/emps/1";
    }
<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2020/5/17
  Time: 15:34
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<html>
<head>
    <title>Title</title>
    <link rel="stylesheet" href="${pageContext.servletContext.contextPath }/css/index_work.css" />
</head>
<body>
<form:form action="${pageContext.servletContext.contextPath}/emp" method="post" modelAttribute="emp">
    <input type="hidden" name="_method" value="PUT">
    <form:hidden path="eid"></form:hidden>
    <table>
        <tr>
            <th colspan="2">更新用户信息</th>
        </tr>

        <tr>
            <td>ename</td>
            <td>
                <form:input path="ename"></form:input>
            </td>
        </tr>

        <tr>
            <td>age</td>
            <td>
                <form:input path="age"></form:input>
            </td>
        </tr>

        <tr>
            <td>sex</td>
            <td>
                <form:radiobutton path="sex" items="${sex}"></form:radiobutton>
            </td>
        </tr>

        <tr>
            <td>department</td>
            <td>
               <form:select path="dept.did" items="${depts}" itemLabel="dname" itemValue="did"></form:select>
            </td>
        </tr>


            <td>
                <input type="submit" value="修改">
            </td>
        </tr>
    </table>
</form:form>
</body>
</html>

批量删除

首先在前面加上一列多选框,然后编写全选全不选的js代码,然后点击批量删除按钮的时候将选中的eid进行传输,注意这里要加一个隐藏域,使用delete方式。最后再controller层进行获取和删除。注意controller层只能使用字符串或者数组进行接收多个eid。

<th>
      <input type="checkbox" id="selectAll" />
</th>
<td>
      <input type="checkbox" name="eid" value="${emp.eid }" />
</td>
 $("#selectAll").click(function () {
     $("[name='eid']").prop("checked", $(this).prop("checked"));
 });
$("#deleteMore").click(function () {
    $("form").attr("action", $(this).attr("href")).submit();
    return false;
 });
    @RequestMapping(value="/emps", method=RequestMethod.DELETE)
    public String deleteMore(String[] eid) {
        //获取客户端name属性相同的多个元素的值,可以通过字符串字节或去,每个值中间以逗号分隔,也可以以数组直接获取
        System.out.println(Arrays.toString(eid));

        return "";
    }


今天的内容到此结束,谢谢大家的观看,如有错误请指正,谢谢!CSDN记录成长!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值