引言
ssm(Spring+Springmvc+Mybatis)整合开发在java开发中是目前比较火的框架整合开发,在此用这三个框架整合开发了一个小项目,本项目已开源,源码已经发布到github仓库,大家可以结合源代码阅读本文,由于个人水平有限,如果有错误的地方,还请指出,大家相互学习,一起进步。
通过本项目我能学习到什么
- ssm整合环境搭建与使用
- 分页的实现
- 前端框架Bootstrap的使用
- 数据校验
- ajax和Jquery的使用
- MyBatis的逆向工程MyBatis Generator使用
项目实现的功能
实现对数据库中的用户管理,如新增、删除、批量删除、修改、查询等
开发环境
- InteliJ IDEA 2019.2.4
- JDK 1.8
- Maven 3.6.3
- Tomcat 9.0.22
基础环境搭建
1. 创建数据库与数据表
//创建数据库usersCREATE DATABASE users;//切换至users数据库USE users;//创建用户类型表CREATE TABLE `tbl_utype` ( `utype_id` int(11) NOT NULL AUTO_INCREMENT, `utype_name` varchar(255) NOT NULL, PRIMARY KEY (`utype_id`)) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;//创建用户表CREATE TABLE `tbl_user` ( `user_id` int(11) NOT NULL AUTO_INCREMENT, `user_name` varchar(255) NOT NULL, `gender` char(1) , `email` varchar(255) , `ut_id` int(11) , PRIMARY KEY (`user_id`), KEY `ut_id` (`ut_id`), CONSTRAINT `tbl_user_ibfk_1` FOREIGN KEY (`ut_id`) REFERENCES `tbl_utype` (`utype_id`)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
2. 创建项目搭建环境
- 创建项目
打开idea新建maven工程的mave-archetype-webapp模板,项目名为UserManagement。 - 在pom.xml的properties标签内引入以下依赖版本控制
5.2.1.RELEASE 1.9.2 1.6.61.2.175.1.63.4.5 1.6.8 4.12
- 在pom.xml的dependencies标签内引入项目所有依赖jar包
org.hibernate.validator hibernate-validator 6.1.0.Finalcom.fasterxml.jackson.core jackson-databind 2.10.0com.github.pagehelper pagehelper 5.1.10org.mybatis.generator mybatis-generator-core 1.3.0org.springframework spring-context ${spring.version}org.springframework spring-aop ${spring.version}org.aspectj aspectjweaver ${aspectj.version}org.springframework spring-web ${spring.version}org.springframework spring-webmvc ${spring.version}org.springframework spring-test ${spring.version}org.springframework spring-jdbc ${spring.version}org.springframework spring-tx ${spring.version}javax.servlet servlet-api 2.5providedjavax.servlet.jsp jsp-api 2.0providedjstl jstl 1.2org.mybatis mybatis ${mybatis.version}org.mybatis mybatis-spring 1.3.0mysql mysql-connector-java ${mysql.version}c3p0 c3p0 0.9.1.2jarcompilejunit junit ${junit.version}compile
3. MyBatis的逆向工程MyBatis Generator使用
- 使用mybatis的逆向工程生成相应的bean、mapper、mapperdao
1.编写mbg.xml配置文件,配置自动生成的相关参数,具体如下
<?xml version="1.0" encoding="UTF-8"?>
2.编写执行逆向工程的测试类,并执行,此时项目目录会生成相应的文件,代码实现如下
public static void main(String[] arg) throws Exception { List warnings = new ArrayList(); 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); }
- Spring整合SpringMVC,需要涉及到配置文件web.xml、springmvc.xml、applicationconfig.xml
- 配置web.xml,在web.xml中配置前端控制、处理中文乱码过滤器等。具体如下
characterEncodingFilterorg.springframework.web.filter.CharacterEncodingFilterencodingUTF-8forceRequestEncodingtrueforceResponseEncodingtruecharacterEncodingFilter/*httpPutFormContentFilterorg.springframework.web.filter.HttpPutFormContentFilterhttpPutFormContentFilter/*contextConfigLocationclasspath:applicationconfig.xmlorg.springframework.web.context.ContextLoaderListenerdispatcherServletorg.springframework.web.servlet.DispatcherServletcontextConfigLocationclasspath:springmvc.xml1dispatcherServlet/
- 配置springmvc.xml具体如下
<?xml version="1.0" encoding="UTF-8"?>
- Spring整合MyBatis只需Spring的配置文件applicationconfig.xml中完成MyBatis的相关配置,配置数据库连接池、SqSessionFactory工厂Bean,使用MapperScannerConfigurer来配置Dao接口所在的包。具体配置如下
4.测试ssm环境
- 创建service类文件TestService.java、controller文件TestController.java、测试请求页面testssm.jsp与成功跳转的页面testsuccess.jsp。
- 如果通过testssm.jsp页面提交的请求成功跳转到testsuccess.jsp页面并显示从数据库查询到的值,则会表示环境搭建成功。
- 文件代码内容可以查看源码。在此不再给出。
分页实现
- 本例使用pagehelper对查询到的数据进行分布显示
- 引入pagehelper所依赖的jar包,由于刚开始已经引入项目所需jar,故不需再重复引入
- 在applicationconfig.xml文件中的sqlSessionFactory的bean中加载分页配置
- 使用PageHelper的startPage(pageNum,pageSize)方法进行分页,pageNum为第几页面开始,pageSize为一页有多少条记录
- 使用PageInfo封装查询返回的结果,并设置连续显示页面的导航页数
使用前端框架bootstrap搭建用户列表页面
- 在webapp目录下创建static目录用于存放项目的静态资源,把下载好的bootstrap框架代码拷贝到static下
- 在static目录下创建js目录,把Jquery也拷贝到js目录中
- 在index.jsp中引入bootstrap的相关资源与jquery
- 编写index.jsp显示用户列表的前端相关代码,主要代码如下
用户列表
新增 删除
用户ID 用户名 姓别 邮箱 用户类型 操作 1 test1 男 test@qq.com 普通用户 编辑 删除
当前第1页,总1000页,总10000记录
« 1 2 3 4 5 »
- 这个列表页面的数据为写死的,下面使用ajax发请求到服务器获取用户列表数据动态显示到列表页。
实现用户列表页面数据显示
- 编写控制器类的查询请求处理方法,主要实现代码如下:
/** * 查询所有用户信息,返回以json格式返回 * @param pn * @return */ @RequestMapping(value = "/user",method = GET) @ResponseBody public Msg getusers(@RequestParam(value = "pn",defaultValue = "1") int pn){ //开始分页每页记录条数为5 PageHelper.startPage(pn,5); //查询所有用户记录 List list = userService.getUsers(); //封装查询结果 PageInfo pageInfo = new PageInfo(list,5); Msg msg = Msg.success().add("pageinfo",pageInfo); return msg; }
- 在用户列表页面直接发送ajax请求获取到用户信息并显示,具体代码如下
用户列表
新增 删除
用户ID 用户名 姓别 邮箱 用户类型 操作
« 1 2 3 4 5 »
- 员工列表效果图如下
![0a6e3d565c9a362e59181ed5abea9908.png](https://i-blog.csdnimg.cn/blog_migrate/44b5ad3b52a2d752ecc65c5ae0673a05.jpeg)
- 至此通过ajax发送请求获取用户信息实现的用户列表页面已经基本完成,为缩短文章篇幅,改善阅读体验,项目的分页条相关实现,新增、删除用户等功能将在后续文章中推出,请关注后续的文章。本项目的源代码已发到github仓库,建议结合源代码阅读本文,项目源码在github上搜:pkx0128/UserManagement