一、web.xml配置

我们都知道java ee的项目启动的第一件事就是读取web.xml,spring mvc 的web.xml我在上一篇文章中也做了详细讲解,不懂的可以回头看看,讲解的这个项目源码我也会放到github上,也可以去那里看看,这里就不做介绍了。
web.xml 配置
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:/context.xml</param-value> </context-param> <!-- 监听器:启动服务器时,启动 spring --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- spring 核心控制器 --> <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:external-servlet.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- 编码过滤器 --> <filter> <filter-name>encodingFilter</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> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
二、spring(context.xml) 上下文配置
这个配置文件可以说是服务器容器第二个要读取的了,这里配置了spring启动时扫描的基础包路径、外部配置的属性文件的导入、需要连接的数据库的配置、mybatis 和 spring 的整合、开头我们说到的 mybatis 日期插件和分页插件也是在这里配置、还有就是mybatis扫描的实体包及其 mapper 文件位置了。
context.xml 配置
<!-- spring 扫描的基础包路径 -->
<context:component-scan base-package="com.qbian" />
<!-- jdbc properties -->
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
p:location="classpath:jdbc.properties" />
<!-- define the datasource (这里用的是c3p0的数据看连接池,性能不是很好,可以唤其它更好的连接池[jdbc pool等])-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="${jdbc.driverClassName}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<!-- define the SqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="typeAliasesPackage" value="com.qbian.**.dto" />
<property name="plugins">
<list>
<!-- 配置自己实现的日期插件 -->
<bean class="com.qbian.common.plugin.DatePlugin" />
<!-- 分页插件 -->
<bean class="com.qbian.common.plugin.PagePlugin" />
</list>
</property>
</bean>
<!-- scan for mappers and let them be autowired -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.qbian.**.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>
<!-- 将多个配置文件读取到容器中,交给Spring管理 -->
<bean id="configProperties" class="com.qbian.common.plugin.PropertiesConfigurer">
<property name="locations">
<list>
<!--<value>classpath:redis.properties</value>-->
</list>
</property>
</bean>
三、spring 控制器配置
这里配置的是控制器所在的位置,及其支持的请求类型和编码。
external-servlet.xml 配置
<!-- 控制器扫描 --> <context:component-scan base-package="com.qbian.common.controller" /> <mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> <property name="writeAcceptCharset" value="false" /> </bean> </mvc:message-converters> </mvc:annotation-driven>
配置信息就是以上三个了,接下来我们来看看具体的代码,
四、代码讲解
1、java代码讲解,以下不做排序,只是按编辑器显示顺序排列讲解。(以下内容均在java.com.qbian包下)
common | annotation | @interface Now : 插入|更新数据的日期注解。 @interface UUID :插入数据的uuid注解。 controller | ExternalController.class :核心控制器,拦截所有请求,异常处理,跨域设置等功能。 dao | interface StudentDao :使用例子,crud 共通方法。 dto | PageInfoDto.class :分页使用的基础dto对象。 ResponseDto.class :响应数据的基本模型。 entity | Student.class :使用例子,自定义注解的使用。 enums | enum MessageEnum :统一的返回状态码及描述信息。 exception | ExternalServiceException.class :自定义异常,业务相关都抛出该异常对象。 factory | BeanFactoryUtil.class :根据bean name获取spring管理的bean实例。 hadle | ExceptionHandle.class :spring自带的统一异常捕获处理。 plugin | DatePlugin.class :自定义mybatis日期插件。 PagePlugin.class :自定义mybatis分页插件。 PropertiesConfigurer.class :将外部配置的属性文件读取到 spring 容器中统一管理。 service | interface IbaseServie :基础的service接口。 BaseService.class :基础的service抽象类。 TokenService.class :鉴权token服务类。 util | CheckUtil.class :请求信息校验相关工具类。 DateUtil.class :日期相关工具类。 ResponseUtil.class :响应信息工具类。 SecondsFormatSerializer.class :java.util.Date类型转时间戳工具类。 TimestampSecondsFormatSerializer.class :java.sql.Timestamp类型转时间戳工具类。 StringUtil.class :字符串相关工具类。 other | dao | interface StudentExtDao :使用例子,业务相关crud操作。 dto | QueryStudentSexPageDto.class :根据学生性别分页查询返回对象dto。 StudentPageDto.class :根据学生性别分页查询封装的对象。 service | AddStudentService.class :插入学生数据接口。 DeleteStudentService.class :删除学生数据接口。 FindStudentService.class :查询学生数据接口。 UpdateStudentService.class :更新学生数据接口。 QueryStudentBySexService.class :根据学生性别分页查询接口。
2、mybatis的 mapper.xml讲解(以下内容均在resources/com/qbian文件夹下)
common | dao | StudentDao.xml :对应common.dao.StudentDao接口。 other | dao | StudentExtDao.xml :对应other.dao.StudentExtDao接口。
五、功能演示
1、token校验
这里的token我写死在代码里了,123456表示校验成功。我们先用插入数据接口测试一下,传个错误的token,如下图:
授权token校验
2、请求参数校验
我们来看看插入数据接口还需要校验哪些值。
// 校验请求参数
CheckUtil.checkEmpty(params, "token", "sex", "age");
// 校验 token
tokenService.checkUserLogin(params.getString("token"));
Student student = JSONObject.parseObject(params.toJSONString(), Student.class);
studentDao.insert(student);
return ResponseUtil.success();
然后我们少传age字段试一下:
请求字段校验
3、插入数据
在插入数据之前我们先看看数据库里都有哪些数据:
初始化数据库中的值
从上图可以看出,数据库中没有任何数据。我们来执行下插入接口。
测试插入接口
我们再来看下数据库:
调用插入接口后
数据库已经有数据了。
4、查询数据
根据上一条数据的ID查询
调用查询接口
刚插入的数据我们也查询出来了。
5、更新数据
更新一下查询出来的数据:
调用更新接口
然后我们再查询一次该条数据
更新后再次查询
可以看到性别和年龄都更新了,并且更新日期也是最新的了。
6、分页查询
先来看一下代码:
// 校验请求参数
CheckUtil.checkEmpty(params, "token", "sex", "pageNo", "pageSize");
// 校验 token
tokenService.checkUserLogin(params.getString("token"));
// 根据性别分页查询 Student,查询总数会自动封装到pageDto对象上
QueryStudentSexPageDto pageDto = JSONObject.parseObject(params.toJSONString(), QueryStudentSexPageDto.class);
List<Student> students = studentExtDao.queryBySexWithPage(pageDto);
StudentPageDto studentPageDto = new StudentPageDto();
// 查询总数会自动封装到pageDto对象上
studentPageDto.setTotalSize(pageDto.getTotalSize());
studentPageDto.setStudents(students);
return ResponseUtil.success(studentPageDto);
分页查询之前我们想要导入多一点测试数据。
分页前测试数据
可以看到数据库目前有十条测试数据,男生有六条,年龄分别为19~24。好了,我们开始调用分页查询接口:
调用分页查询接口返回结果
格式化一下返回数据:
分页查询返回结果整理
这和我们直接查询数据库看到的一样。
7、删除数据
最后就是删除数据接口了,我们将第一条测试数据删除掉。
调用删除接口返回结果
然后我们在查询一下是否真的删除了。
删除后查询
数据已经被删除了。
最后附上项目源码:https://github.com/Qbian61/spring-mvc-mybatis
以上所述是小编给大家介绍的Spring mvc整合mybatis(crud+分页插件)操作mysql,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# spring
# mvc整合
# mybatis
# 操作mysql
# 分页
# MySQL查询重写插件的使用
# zabbix通过percona插件监控mysql的方法
# MySql5.6使用validate password 插件加强密码强度的安装及使用方法
# MySQL 密码增强插件
# MySQL中InnoDB的Memcached插件的使用教程
# 详解MySQL下InnoDB引擎中的Memcached插件
# MySQL HandlerSocket插件安装配置教程
# 发款php蜘蛛统计插件只要有mysql就可用
# MySQL连接控制插件介绍
# 自定义
# 的是
# 测试数据
# 可以看到
# 来看看
# 不做
# 数据库中
# 小编
# 配置文件
# 连接池
# 在这里
# 很好
# 我在
# 好了
# 多个
# 在此
# 没有任何
# 不懂
# 说到
相关文章:
Android自定义listview布局实现上拉加载下拉刷新功能
浅析上传头像示例及其注意事项
Python路径拼接规范_跨平台处理说明【指导】
内部网站制作流程,如何建立公司内部网站?
实惠建站价格推荐:2025年高性价比自助建站套餐解析
建站之星备案是否影响网站上线时间?
建站之星后台密码遗忘或太弱?如何重置与强化?
免费网站制作appp,免费制作app哪个平台好?
广东企业建站网站优化与SEO营销核心策略指南
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
如何快速上传自定义模板至建站之星?
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
如何用5美元大硬盘VPS安全高效搭建个人网站?
javascript中的try catch异常捕获机制用法分析
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
家庭服务器如何搭建个人网站?
如何选择可靠的免备案建站服务器?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
已有域名能否直接搭建网站?
清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?
如何在局域网内绑定自建网站域名?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
,南京靠谱的征婚网站?
如何用IIS7快速搭建并优化网站站点?
如何自定义建站之星模板颜色并下载新样式?
长沙做网站要多少钱,长沙国安网络怎么样?
如何在Tomcat中配置并部署网站项目?
如何通过cPanel快速搭建网站?
如何安全更换建站之星模板并保留数据?
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
青浦网站制作公司有哪些,苹果官网发货地是哪里?
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
建设网站制作价格,怎样建立自己的公司网站?
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
昆明网站制作哪家好,昆明公租房申请网上登录入口?
零基础网站服务器架设实战:轻量应用与域名解析配置指南
如何在阿里云购买域名并搭建网站?
如何高效完成独享虚拟主机建站?
制作网站公司那家好,网络公司是做什么的?
如何选择高效稳定的ISP建站解决方案?
阿里云网站制作公司,阿里云快速搭建网站好用吗?
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
如何基于PHP生成高效IDC网络公司建站源码?
如何在建站主机中优化服务器配置?
高端企业智能建站程序:SEO优化与响应式模板定制开发
如何通过免费商城建站系统源码自定义网站主题与功能?
建站主机服务器选购指南:轻量应用与VPS配置解析
如何用VPS主机快速搭建个人网站?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。