本次记录是跟着尚硅谷课程学习的,记录下来方便自己学习
基础环境搭建的详细步骤:
https://blog.csdn.net/weixin_42672204/article/details/100862748
一共两个表tbl_emp,tbl_dept,对应bean包下的Employee,Dapartment实体,当然还有对应的mapper,service,dao等
想要一进入index页面就显出员工列表
1.访问index.jsp页面
2.index.jsp页面发送出查询员工列表的请求
3.EmployeeController来接受请求,查出员工数据
4.来到list.jsp页面进行展示
URI:/emps
详细步骤
<%--带参数的--%>
在EmployeeController中添加对应的方法
@Controller
public class EmployeeController {
@Autowired
private EmployeeService service;
@RequestMapping("/emps")
public String getEmps(@RequestParam(value="pn",defaultValue="1")Integer pn,Model model) {
PageHelper.startPage(pn, 5);
List emps=service.getAll();
System.out.println(emps.size());
PageInfo page=new PageInfo(emps,5);
model.addAttribute("pageInfo", page);
return "list";
}
}
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
这样写不太好,后面要改成ajax获取数据,动态添加标签和数据
这个在百度云里是 ssm-crud-1
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
使用mybatis逆向工程创建bean和mapper
先在pom.xml中引入MyBatis Generator Core依赖,直接去maven仓库搜索就好了
然后百度MyBatis Generator去官网查看教程
我这次使用xml配置+java代码来生成的,首先创建一个mgb.xml文件,该配置文件在官网上有模板,复制下来更改,我放在和pom同级
然后可以创建一个test包,创建一个MGBTest的类,该类的代码模板也在官网上有,复制后只要改
File configFile = new File("mbg.xml");
package com.atguigu.crud.test;
import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.exception.InvalidConfigurationException;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback;
public class MGBTest {
public static void main(String[] args) 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);
}
}
有些人会因为mysql的版本问题而报WARNING
WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
这个错误粗略的看下就是要加上useSSL=false或者useSSL=true然后加上一些证书验证什么的,我现在只是测试,在url后加上useSSL=false就可以了
将main方法执行后,刷新项目,就会生成对应的bean和mapper接口,这样生成的类和接口注释有点多,如果不想有注释的话
在mgb.xml中添加
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
mybatis分页插件的使用,可以去github上查看pagehelper的官方文档学习如何使用
1.引入分页插件的依赖,
com.github.pagehelper
pagehelper
最新版本
2.在mybatis的配置文件中注册插件
突然发现我在写mybatis的mapper和configuation配置文件时不会提示和补全了,看了一遍配置后才发现我原来的mybatis的dtd约束文件不小心被我删了。解决:从网上将两个dtd文件下载下来
mybatis-3-config.dtd约束文件下载:
http://mybatis.org/dtd/mybatis-3-config.dtd
mybatis-3-mapper.dtd约束文件下载:
http://mybatis.org/dtd/mybatis-3-mapper.dtd
然后在windows---perferences----搜索xml catalog,然后add,将location和key填入........
3.在Controller中使用,以下面这个为例,这只是一个model,不一定可用
@Controller
public class EmployeeController {
@Autowired
private EmployeeService service;
@RequestMapping("/emps")
public String getEmps(@RequestParam(value="pn",defaultValue="1")Integer pn,Model model) {
// 引入PageHelper分页插件
// 在查询之前只需要调用,传入页码,以及每页的大小
PageHelper.startPage(pn, 5);
// startPage后面紧跟的这个查询就是一个分页查询
List emps = employeeService.getAll();
// 使用pageInfo包装查询后的结果,只需要将pageInfo交给页面就行了。
// 封装了详细的分页信息,包括有我们查询出来的数据,传入连续显示的页数
PageInfo page = new PageInfo(emps, 5);
return "list";
}
}
pageInfo的详细属性
https://blog.csdn.net/weixin_41996974/article/details/81099693
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------JSR303数据校验
org.hibernate.validator
hibernate-validator
6.0.13.Final
在实体的属性上加上数据校验,更多的注解 https://blog.csdn.net/u011781521/article/details/72510328
@Pattern(regexp = "/(^[a-zA-Z0-9_-]{6,16}$)|(^[\\u2E80-\\u9FFF]{2,5})/"
,message="用户名必须是2-5位中文或者6-16位英文和数字的表达式")
private String empName;
private String gender;
在Employee employee前加上@Valid,后面可以跟上一个BindingResult用来返回验证结果,这个Msg是自定义的一个通用的消息返回类
@RequestMapping(value="/emp",method=RequestMethod.POST)
@ResponseBody
public Msg saveEmp(@Valid Employee employee,BindingResult result) {
if(result.hasErrors()) {
//校验失败,在模态框中显示校验失败的错误信息
Map map=new HashMap<>();
List errors=result.getFieldErrors();
for(FieldError fieldError:errors) {
System.out.println("错误字段名:"+fieldError.getField());
System.out.println("错误信息:"+fieldError.getDefaultMessage());
map.put(fieldError.getField(), fieldError.getDefaultMessage());
}
return Msg.fail().add("errorFields", map);
}else {
service.saveEmp(employee);
return Msg.success();
}
}
---------------------------------------------------------------------------------------------------------------------------------------------------------
整个项目流程,前端UI由Bootstrap搭建,从页面发起请求,被SpringMVC前端控制器拦截,判断是否能处理,如果可以处理,就交给Controller处理,不能处理的,就交给tomcat,比如一些静态资源。
Controller层调用Service层,如果需要调用数据库的话还要调用Dao层。Dao层是Mybatis做的(XXXMapper)
视频、源码、数据库,
链接:https://pan.baidu.com/s/1zAQnvl1MaIMIUyxswCGIMQ
提取码:39lf