数据表设计:
在上一个项目的环境基础上:
新建实体类:
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 }"> 风险评级:<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> <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));
}
}