整合SSM-AJAX、分页、时间格式转换器

9 篇文章 0 订阅
3 篇文章 0 订阅

数据表设计:

在这里插入图片描述

在上一个项目的环境基础上:

新建实体类:

package com.liuxi.pojo;

import java.util.Date;

public class FinancingProduct {
	private String id;
	private Integer risk;
	private String income;
	private Date saleStarting;
	private Date saleEnd;
	private Date end;

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public Integer getRisk() {
		return risk;
	}

	public void setRisk(Integer risk) {
		this.risk = risk;
	}

	public String getIncome() {
		return income;
	}

	public void setIncome(String income) {
		this.income = income;
	}

	public Date getSaleStarting() {
		return saleStarting;
	}

	public void setSaleStarting(Date saleStarting) {
		this.saleStarting = saleStarting;
	}

	public Date getSaleEnd() {
		return saleEnd;
	}

	public void setSaleEnd(Date saleEnd) {
		this.saleEnd = saleEnd;
	}

	public Date getEnd() {
		return end;
	}

	public void setEnd(Date end) {
		this.end = end;
	}

	@Override
	public String toString() {
		return "FinancingProduct [id=" + id + ", risk=" + risk + ", income=" + income + ", saleStarting=" + saleStarting
				+ ", saleEnd=" + saleEnd + ", end=" + end + "]";
	}

}

mapper接口:

package com.liuxi.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.liuxi.pojo.FinancingProduct;

public interface FinancingProductMapper {

	// 查询所有数据
	List<FinancingProduct> selectAll();

	FinancingProduct selectOne(String pid);

	Integer update(FinancingProduct financingProduct);

	Integer deleteOne(Integer pid);

	Integer insert(FinancingProduct financingProduct);
	
	List<FinancingProduct> selectSome(@Param("id") String id,@Param("risk") Integer risk);
}

service接口:

package com.liuxi.service;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.liuxi.pojo.FinancingProduct;

public interface FinancingProductService {

	// 查询所有数据
	List<FinancingProduct> selectAll();

	FinancingProduct selectOne(String id);

	Integer update(FinancingProduct financingProduct);

	Integer deleteOne(Integer pid);

	Integer insert(FinancingProduct financingProduct);

	List<FinancingProduct> selectSome(@Param("id") String id, @Param("risk") Integer risk);

}

service实现类:

package com.liuxi.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.liuxi.mapper.FinancingProductMapper;
import com.liuxi.pojo.FinancingProduct;
import com.liuxi.service.FinancingProductService;

@Service
public class FinancingProductImpl implements FinancingProductService {

	@Autowired
	private FinancingProductMapper financingProductMapper;

	@Override
	public List<FinancingProduct> selectAll() {
		return financingProductMapper.selectAll();
	}

	@Override
	public Integer update(FinancingProduct financingProduct) {
//		int a = 1 / 0;
		return financingProductMapper.update(financingProduct);
	}

	@Override
	public Integer deleteOne(Integer pid) {
		return financingProductMapper.deleteOne(pid);
	}

	@Override
	public Integer insert(FinancingProduct financingProduct) {
		return financingProductMapper.insert(financingProduct);
	}

	@Override
	public List<FinancingProduct> selectSome(String id, Integer risk) {
		return financingProductMapper.selectSome(id, risk);
	}

	@Override
	public FinancingProduct selectOne(String id) {
		// TODO Auto-generated method stub
		return financingProductMapper.selectOne(id);
	}

}

mapper.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.liuxi.mapper.FinancingProductMapper">
	<select id="selectAll"
		resultType="com.liuxi.pojo.FinancingProduct">
		select * from FinancingProduct
	</select>

	<select id="selectOne"
		resultType="com.liuxi.pojo.FinancingProduct">
		select * from FinancingProduct where
		id = #{id }
	</select>

	<select id="selectSome"
		resultType="com.liuxi.pojo.FinancingProduct">
		select * from FinancingProduct

		<where>
			<if test=" id != null"> and id like concat('%',#{id},'%')    </if>
			<if test=" risk != null"> and risk =#{risk} </if>
		</where>
	</select>

	<update id="update">

		update FinancingProduct set
		id= #{id } ,
		risk = #{risk
		} ,
		income = #{income } ,
		saleStarting = #{saleStarting } ,
		saleEnd =
		#{saleEnd } ,
		end = #{end }

		where id = #{id}
	</update>

	<insert id="insert">
		insert into FinancingProduct (
		id ,
		risk ,
		income ,
		saleStarting ,
		saleEnd ,
		end )
		values
		(
		#{id } ,
		#{risk } ,
		#{income } ,
		#{saleStarting } ,
		#{saleEnd } ,
		#{end }

		)
	</insert>

	<delete id="deleteOne">
		delete from FinancingProduct where id
		= #{id}
	</delete>
</mapper>

Controller:新建:FpController.java:

package com.liuxi.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.liuxi.pojo.FinancingProduct;
import com.liuxi.pojo.Result;
import com.liuxi.service.FinancingProductService;

@Controller
@RequestMapping("/FinancingProduct")
public class FpController {

	/**
	 * controller 调用service、service层调用mapper
	 * 
	 */

	@Autowired
	private FinancingProductService financingProductService;

	@RequestMapping("list")
	private String list(ModelMap map, String id, Integer risk, Integer pageNum, Integer pageSize) throws Exception {
		if (id == null || id.length() == 0) {
			id = null;
		}

		if (pageNum == null) {
			pageNum = 1;
		}

		if (pageSize == null) {
			pageSize = 1;
		}

		PageHelper.startPage(pageNum, pageSize);

		List<FinancingProduct> list = financingProductService.selectSome(id, risk);

		map.put("id", id);
		map.put("risk", risk);
		// mybatis 中分页有一个类型叫PageInfo,PageInfo里面已经包含了上一页的页码,总数  和结果集
		PageInfo info = new PageInfo(list);
		map.put("pages", info);

		return "fplist";
	}

	@RequestMapping("toInsert")
	private String toInsert() {
		return "fpedit";
	}

	// 增删改
	@RequestMapping("insert")
	@ResponseBody
	private Result insert(FinancingProduct financingProduct, ModelMap map) throws Exception { // spring mvc会自动封装接收参数的对象。

		if (financingProductService.insert(financingProduct) > 0) {
			return new Result(1000, "新增成功!");
		} else {
			return new Result(1001, "新增失败!");
		}

	}

	@RequestMapping("toUpdate")
	private String toUpdate(String id, ModelMap map) {
		FinancingProduct financingProduct = financingProductService.selectOne(id);
		map.put("list", financingProduct);
		return "fpedit";
	}

	@RequestMapping("update")
	@ResponseBody
	private Result update(FinancingProduct financingProduct, ModelMap map) throws Exception { // spring mvc会自动封装接收参数的对象。

		if (financingProductService.update(financingProduct) > 0) {
			return new Result(1000, "修改成功!");
		} else {
			return new Result(1001, "修改失败!");
		}

	}

	@RequestMapping("checkId")
	@ResponseBody
	private Result checkId(String id, ModelMap map) throws Exception { // spring mvc会自动封装接收参数的对象。

		if (financingProductService.selectOne(id) == null) {
			return new Result(1000, "产品代码可用!");
		} else {
			return new Result(1001, "产品代码不可用!");
		}

	}

}

导入js文件:

https://download.csdn.net/download/lx1315998513/12570677
在这里插入图片描述

fplist.jsp:

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

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>
	<form
		action="${pageContext.request.contextPath }/FinancingProduct/list.do">
		产品代码:<input type="text" name="id" value="${id }">&nbsp; 风险评级:<select
			name="risk">
			<option value="">请选择</option>
			<option value="1" ${risk==1?'selected="selected"':'' }>R1</option>
			<option value="2" ${risk==2?'selected="selected"':'' }>R2</option>
			<option value="3" ${risk==3?'selected="selected"':'' }>R3</option>

		</select>&nbsp; <input type="submit" value="查询">

	</form>

	<a href="javascript:;" id="insert">新增理财信息</a>
	<table border="1" style="border-collapse: collapse;">
		<tr>
			<td>产品代码</td>
			<td>风险评级</td>
			<td>预期收益</td>
			<td>发售起始日</td>
			<td>发售截止日</td>
			<td>产品到期日</td>
			<td>操作</td>
		</tr>
		<c:forEach items="${pages.list }" var="item">
			<tr>
				<td>${item.id}</td>
				<td>${item.risk==1?'R1':''}${item.risk==2?'R2':''}${item.risk==3?'R3':''}</td>
				<td>${item.income}</td>
				<td><fmt:formatDate pattern="yyyy-MM-dd"
						value="${item.saleStarting}" /></td>
				<td><fmt:formatDate pattern="yyyy-MM-dd"
						value="${item.saleEnd}" /></td>
				<td><fmt:formatDate pattern="yyyy-MM-dd" value="${item.end}" /></td>
				<td><a
					href="javascript:;" class="update" data-id="${item.id}">修改</a>
					<a
					href="javascript:;" class="delete"  data-id="${item.id}">删除</a>
				</td>
			</tr>
		</c:forEach>
	</table>
	
	<!-- 控制上一页,和下一页 在第一页或者最后一页的隐藏 -->
	<c:if test="${!pages.isFirstPage}">
	<a href="javascript:;" οnclick="prePage()">上一页</a>
	</c:if>
	
	<c:if test="${!pages.isLastPage}">
	<a href="javascript:;" οnclick="nextPage()">下一页</a>
	</c:if>
	
	<!-- 显示总页码 -->
	总页码:${pages.pages }
</body>
<script type="text/javascript"
	src="${pageContext.request.contextPath }/js/jquery-1.11.1.min.js"></script>
<script type="text/javascript"
	src="${pageContext.request.contextPath }/js/layer/layer.js"></script>

<script type="text/javascript">
	//页面层

	$(function(){
		$("#insert").click(function(){
			layer.open({
				type : 2,
				title : '新增页面',
				shadeClose : true,
				shade : 0.5,
				area : [ '380px', '60%' ],
				content : '${pageContext.request.contextPath }/FinancingProduct/toInsert.do', //iframe的url
				end:function(){
					location.reload();
				}
			});
		});
		
		$(".update").click(function(){

			var id = $(this).data("id");
			layer.open({
				type : 2,
				title : '修改页面',
				shadeClose : true,
				shade : 0.5,
				area : [ '380px', '60%' ],
				content : '${pageContext.request.contextPath }/FinancingProduct/toUpdate.do?id='+id, 
				end:function(){
					location.reload();
				}
			});
		});
		
		
		
	});
	//加上查询条件的值
	function prePage(){
		location.href="${pageContext.request.contextPath }/FinancingProduct/list.do?pageNum=${pages.prePage}&pageSize=3&id="+$("[name='id']").val()+"&risk="+$("[name='risk']").val();
	}

	function nextPage(){
		location.href="${pageContext.request.contextPath }/FinancingProduct/list.do?pageNum=${pages.nextPage}&pageSize=3&id="+$("[name='id']").val()+"&risk="+$("[name='risk']").val();
	}
</script>
</html>

fpedit.jsp:

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<style>
	input{
		margin:5px 0px;
	}
	
	.red{
		color:red;
	}
	
	.green{
		color:green
	}
</style>
<body>
	<center>
		<h1>新增理财信息</h1>
	</center>
	<form action='<c:if test="${list==null }">${pageContext.request.contextPath}/FinancingProduct/insert.do</c:if><c:if test="${list!=null }">${pageContext.request.contextPath}/FinancingProduct/update.do</c:if>'>

			产品代码:<input type="text" name="id" id="check" value="${list.id }" ${list==null?'':'readonly="readonly"' } ><span id="spanid"></span><br>
			风险评级:<select name="risk">
						<option value="">请选择</option>
						<option value="1" ${list.risk==1?'selected="selected"':'' }>R1</option>
						<option value="2" ${list.risk==2?'selected="selected"':'' }>R2</option>
						<option value="3" ${list.risk==3?'selected="selected"':'' }>R3</option>
					</select><br>
					
					
				
			
			预期收益:<input type="text" name="income" value="${list.income }"><br>
			发售起始日:<input type="text" name="saleStarting" value='<fmt:formatDate pattern="yyyy-MM-dd"
						value="${list.saleStarting}" />' ><br> 
			发售截止日:<input type="text" name="saleEnd" value='<fmt:formatDate pattern="yyyy-MM-dd"
						value="${list.saleEnd}" />'><br>
			产品到期日:<input type="text" name="end" value='<fmt:formatDate pattern="yyyy-MM-dd" value="${list.end}" />'><br>

			<input type="button" id="baocun" value="保存">  <input type="button" id="fanhui" value="返回">
		
	</form>

</body>
<script type="text/javascript"
	src="${pageContext.request.contextPath }/js/jquery-1.11.1.min.js"></script>
<script type="text/javascript"
	src="${pageContext.request.contextPath }/js/layer/layer.js"></script>
<script type="text/javascript">
	$(function(){
		
// 		let issubmit = false;
		
		$("#baocun").click(function(){
			
			//表单验证
			if (!$("[name='id']").val()) {
				alert("产品代码不能为空");
				return;
			}
			
			if (!$("[name='risk']").val()) {
				alert("风险评级不能为空");
				return;
			}
			
			if (!$("[name='income']").val()) {
				alert("预期收益不能为空");
				return;
			}
			
			var dateISO = /\d{4}(-)\d{1,2}\1\d{1,2}/;
			
			if (!$("[name='saleStarting']").val()) {
				alert("发售起始日不能为空");
				return;
			}else {
				if (!dateISO.test($("[name='saleStarting']").val())) {
					alert("发售日期格式为yyyy-MM-dd");
					return;
				}
			}
			
			if (!$("[name='saleEnd']").val()) {
				alert("发售截止日不能为空");
				return;
			}else {
				if (!dateISO.test($("[name='saleStarting']").val())) {
					alert("发售日期格式为yyyy-MM-dd");
					return;
				}
			}
			
			if (!$("[name='end']").val()) {
				alert("产品到期日不能为空");
				return;
			}else {
				if (!dateISO.test($("[name='saleStarting']").val())) {
					alert("发售日期格式为yyyy-MM-dd");
					return;
				}
			}
			//表单验证-end
			
			//ajax动态请求后台。
// 			if (issubmit!=true ) {
				$.ajax({
					url:$("form")[0].action,
					data:$("form").serialize(),
					dataType:"json",
					success:function(data){
						alert(data.msg);

						if (data.code==1000) {
							//当你在iframe页面关闭自身时
							var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
							parent.layer.close(index); //再执行关闭   
						}
					}
					
				});
			
// 			}
			
			
		});
		//提交-end
		
		$("#fanhui").click(function(){
			//当你在iframe页面关闭自身时
			var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
			parent.layer.close(index); //再执行关闭
		});
		
		//Ajax动态验证id是否可用
		$("#check").change(function(){
			var id = $(this).val();
			$.ajax({
				url:"${pageContext.request.contextPath }/FinancingProduct/checkId.do",
				data:{id:id},
				dataType:"json",
				success:function(data){
					
					if (data.code=1000) {
						$("#spanid").html(data.msg);
						$("#spanid").removeClass("red");
						$("#spanid").addClass("green");
						
						
					}else{
						$("#spanid").html(data.msg);
						$("#spanid").removeClass("green");
						$("#spanid").addClass("red");
						
					}
				}
				
			});
		})
		
	})
	

</script>
</html>

pom追加分页依赖。

<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/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.liuxi</groupId>
	<artifactId>day72-hw</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<properties>
		<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
	</properties>

	<!-- spring官方提供的依赖管理器,便于统一管理,进行依赖管理,并没有添加依赖,所有的依赖全都选择 管理器的版本号 -->
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-framework-bom</artifactId>
				<version>4.3.7.RELEASE</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<dependencies>
		<!-- 引入web工程所需的依赖 -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet.jsp</groupId>
			<artifactId>jsp-api</artifactId>
			<version>2.2</version>
			<scope>provided</scope>
		</dependency>
		<!-- 添加JSTL标签库 -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>
		<dependency>
			<groupId>taglibs</groupId>
			<artifactId>standard</artifactId>
			<version>1.1.2</version>
		</dependency>

		<!-- 引入测试所需的依赖,使用spring4.3.x版本整合需要引入junit4.12及以上 可以不写main函数就能运行代码。 -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
		</dependency> <!-- 整合SpringMVC会自动引入其他所需的spring核心依赖 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
		</dependency>

		<!-- 添加mybatis依赖 -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.3.0</version>
		</dependency>
		<!-- 添加mybatis与sping整合依赖 整合包 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-orm</artifactId>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.2.3</version>
		</dependency>

		<!-- 添加MySQL数据库驱动依赖包. -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.30</version>
		</dependency>
		<!-- druid 连接池 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.0.18</version>
		</dependency>

		<!-- logback日志依赖 -->
		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-classic</artifactId>
			<version>1.1.7</version>
		</dependency>

		<dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>1.3</version>
		</dependency>
		<!-- spring aop依赖 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
		</dependency>
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjrt</artifactId>
			<version>1.6.12</version>
		</dependency>
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>1.6.12</version>
		</dependency>
		<dependency>
			<groupId>cglib</groupId>
			<artifactId>cglib</artifactId>
			<version>2.2</version>
		</dependency>

		<!-- json -->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.8.6</version>
		</dependency>
		<dependency>
			<groupId>commons-beanutils</groupId>
			<artifactId>commons-beanutils</artifactId>
			<version>1.9.2</version>
		</dependency>
		<dependency>
			<groupId>org.codehaus.jackson</groupId>
			<artifactId>jackson-mapper-asl</artifactId>
			<version>1.9.13</version>
		</dependency>
		<dependency>
			<groupId>org.codehaus.jackson</groupId>
			<artifactId>jackson-core-asl</artifactId>
			<version>1.9.13</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.71</version>
		</dependency>


		<!-- pagehelper mybatis 分页工具 start -->
		<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper</artifactId>
			<version>4.2.1</version>
		</dependency>
		<dependency>
			<groupId>com.github.jsqlparser</groupId>
			<artifactId>jsqlparser</artifactId>
			<version>0.9.5</version>
		</dependency>
		<!-- pagehelper mybatis 分页工具 end -->

	</dependencies>

	<build>
		<plugins>
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<encoding>${project.build.sourceEncoding}</encoding>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

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

	<!-- 扫包 -->
	<context:component-scan base-package="com" />
	<!-- MVC驱动 加上了日期格式转换器 -->
	<mvc:annotation-driven
		conversion-service="conversionService" />
		
	<bean id="conversionService"
		class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
		<property name="converters">
			<list>
				<bean class="com.liuxi.convert.StringToDateConverter" />
			</list>
		</property>
	</bean>

	<!-- 定义跳转的文件的前后缀 ,视图模式配置 -->
	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 -->
		<property name="prefix" value="/WEB-INF/page/" />
		<property name="suffix" value=".jsp" />
	</bean>
	<!-- @ResponseBody返回中文乱码配置 -->
<!-- 	<mvc:annotation-driven>
		<mvc:message-converters
			register-defaults="true">
			<bean
				class="org.springframework.http.converter.StringHttpMessageConverter">
				<property name="supportedMediaTypes"
					value="text/plain;charset=UTF-8" />
			</bean>
		</mvc:message-converters>
	</mvc:annotation-driven> -->

	<!--导入其他包 -->
	<import resource="classpath:spring/spring-mybatis.xml" />
</beans>

mybatis-conf.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>

	<settings>
		<!-- 这个配置使全局的映射器启用或禁用 缓存 -->
		<setting name="cacheEnabled" value="true" />
		<!-- 全局启用或禁用延迟加载。当禁用时, 所有关联对象都会即时加载 -->
		<setting name="lazyLoadingEnabled" value="true" />
		<!-- 允许或不允许多种结果集从一个单独 的语句中返回(需要适合的驱动) -->
		<setting name="multipleResultSetsEnabled" value="true" />
		<!-- 使用列标签代替列名。 不同的驱动在这 方便表现不同。 参考驱动文档或充分测 试两种方法来决定所使用的驱动 -->
		<setting name="useColumnLabel" value="true" />
		<!-- 允许 JDBC 支持生成的键。 需要适合的 驱动。 如果设置为 true 则这个设置强制 生成的键被使用, 尽管一些驱动拒绝兼 容但仍然有效(比如 
			Derby) -->
		<setting name="useGeneratedKeys" value="false" />
		<!-- 配置默认的执行器。SIMPLE 执行器没 有什么特别之处。REUSE 执行器重用 预处理语句。BATCH 执行器重用语句 和批量更新 -->
		<setting name="defaultExecutorType" value="SIMPLE" />
		<!-- 设置超时时间, 它决定驱动等待一个数 据库响应的时间 -->
		<setting name="defaultStatementTimeout" value="100" />
		<setting name="safeRowBoundsEnabled" value="false" />
		<setting name="mapUnderscoreToCamelCase" value="false" />
		<setting name="localCacheScope" value="SESSION" />
		<setting name="jdbcTypeForNull" value="OTHER" />
		<setting name="lazyLoadTriggerMethods"
			value="equals,clone,hashCode,toString" />
	</settings>

	<!-- 配置PageHelper拦截器插件 -->
	<plugins>
		<!-- com.github.pagehelper为PageHelper类所在包名 -->
		<plugin interceptor="com.github.pagehelper.PageHelper">
			<!-- 4.0.0以后版本可以不设置该参数 -->
			<property name="dialect" value="mysql" />
			<!-- 该参数默认为false -->
			<!-- 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 -->
			<!-- 和startPage中的pageNum效果一样 -->
			<property name="offsetAsPageNum" value="true" />
			<!-- 该参数默认为false -->
			<!-- 设置为true时,使用RowBounds分页会进行count查询 -->
			<property name="rowBoundsWithCount" value="true" />
			<!-- 设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果 -->
			<!-- (相当于没有执行分页查询,但是返回结果仍然是Page类型) -->
			<property name="pageSizeZero" value="true" />
			<!-- 3.3.0版本可用 - 分页参数合理化,默认false禁用 -->
			<!-- 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页 -->
			<!-- 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据 -->
			<property name="reasonable" value="false" />
			<!-- 3.5.0版本可用 - 为了支持startPage(Object params)方法 -->
			<!-- 增加了一个`params`参数来配置参数映射,用于从Map或ServletRequest中取值 -->
			<!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,orderBy,不配置映射的用默认值 -->
			<!-- 不理解该含义的前提下,不要随便复制该配置 -->
			<property name="params"
				value="pageNum=pageHelperStart;pageSize=pageHelperRows;" />
			<!-- 支持通过Mapper接口参数来传递分页参数 -->
			<property name="supportMethodsArguments" value="false" />
			<!-- always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page -->
			<property name="returnPageInfo" value="none" />
		</plugin>
	</plugins>
</configuration>  

StringToDateConverter.java:

package com.liuxi.convert;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

public class StringToDateConverter implements Converter<String, Date> {
	private static final String dateFormat = "yyyy-MM-dd HH:mm:ss";
	private static final String shortDateFormat = "yyyy-MM-dd";
	private static final String dateFormat2 = "yyyy/MM/dd HH:mm:ss";
	private static final String shortDateFormat2 = "yyyy/MM/dd";
	private static final String timeFormat = "HH:mm:ss";
	private static final String shortTimeFormat = "HH:mm";

	private static final String dateFormat3 = "yyyy年MM月dd日 HH:mm:ss";

	@Override
	public Date convert(String source) {
		if (source == null) {
			return null;
		}
		source = source.trim();
		try {
			SimpleDateFormat formatter;
			if (source.contains("-")) {
				if (source.contains(":")) {
					formatter = new SimpleDateFormat(dateFormat);
				} else {
					formatter = new SimpleDateFormat(shortDateFormat);
				}
				Date dtDate = formatter.parse(source);
				return dtDate;
			} else if (source.contains("/")) {
				if (source.contains(":")) {
					formatter = new SimpleDateFormat(dateFormat2);
				} else {
					formatter = new SimpleDateFormat(shortDateFormat2);
				}
				Date dtDate = formatter.parse(source);
				return dtDate;
			} else if (source.contains("年")) {
				formatter = new SimpleDateFormat(dateFormat3);
				Date date = formatter.parse(source);
				return date;
			}

			else if (!source.contains("/") && !source.contains("-") && source.contains(":")) {
				if (source.length() > 5) {
					formatter = new SimpleDateFormat(timeFormat);
					Date dtDate = formatter.parse(source);
					return dtDate;
				} else {
					formatter = new SimpleDateFormat(shortTimeFormat);
					Date dtDate = formatter.parse(source);
					return dtDate;
				}

			}
		} catch (Exception e) {
			throw new RuntimeException(String.format("parser %s to Date fail", source));
		}

		throw new RuntimeException(String.format("parser %s to Date fail", source));

	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值