SSM整合---CRUD

本次记录是跟着尚硅谷课程学习的,记录下来方便自己学习

技术点

  • 基础框架SSM
  • 数据库-MySQL
  • 前端框架-bootstrap
  • 项目的依赖管理-maven
  • 分页-pagehelper
  • 逆向工程-mybatis Generator

 

基础环境搭建

  1. 创建Maven项目(packaging要改为war包,创建完后项目的一些properties需要配置更改)
  2. 引入项目依赖的jar包  (spring、springmvc、mybatis、数据库连接池、驱动包、其他包(jstl,servlet-api,junit等))
  3. 引入bootstrap前段框架(去bootstrap官网下载解压,在webapp下创建一个static文件夹,把解压文件放进去)
  4. 编写ssm整合的关键配置文件(web.xml,spring,springmvc,mybatis配置文件),使用mybatis的逆向工程生成对应的bean以及mapper(逆向工程详细步骤在后面)
  5. 测试

 

 

基础环境搭建的详细步骤:

https://blog.csdn.net/weixin_42672204/article/details/100862748

 

CRUD

  • 查询

一共两个表tbl_emp,tbl_dept,对应bean包下的Employee,Dapartment实体,当然还有对应的mapper,service,dao等

想要一进入index页面就显出员工列表

1.访问index.jsp页面

2.index.jsp页面发送出查询员工列表的请求

3.EmployeeController来接受请求,查出员工数据

4.来到list.jsp页面进行展示

URI:/emps

详细步骤

  1. 在index.jsp中添加动作指令,写上面那个就好,请求会被拦截,通过controller跳到对应的view
    <jsp:forward page="/emps"></jsp:forward>
    
    <%--带参数的--%>
    <jsp:forward page="/depts">
    	<jsp:param value="3" name="pn"/>
    </jsp:forward>

     

  2. 在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<Employee> 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同级

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
  PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>

  <context id="DB2Tables" targetRuntime="MyBatis3">
  
  
  	<!-- 配置数据库连接 -->
    <jdbcConnection driverClass="com.mysql.jdbc.Driver"
        connectionURL="jdbc:mysql://localhost:3306/ssm_crud"
        userId="root"
        password="admin">
    </jdbcConnection>

    <javaTypeResolver >
      <property name="forceBigDecimals" value="false" />
    </javaTypeResolver>

	<!-- 指定javaBean生成的位置 -->
    <javaModelGenerator targetPackage="com.atguigu.crud.bean" 
    		targetProject=".\src\main\java">
      <property name="enableSubPackages" value="true" />
      <property name="trimStrings" value="true" />
    </javaModelGenerator>


	<!-- 指定sql映射文件生成的位置 -->
    <sqlMapGenerator targetPackage="mapper"  
    		targetProject=".\src\main\resources">
      <property name="enableSubPackages" value="true" />
    </sqlMapGenerator>


	<!-- 指定dao接口生成的位置,mapper接口 -->
    <javaClientGenerator type="XMLMAPPER" 
    		targetPackage="com.atguigu.crud.dao"  
    		targetProject=".\src\main\java">
      <property name="enableSubPackages" value="true" />
    </javaClientGenerator>


	<!-- table指定每个表的生成策略 -->
    <table tableName="tbl_emp" domainObjectName="Employee"></table>
    <table tableName="tbl_dept" domainObjectName="Department"></table>

  </context>
</generatorConfiguration>

       然后可以创建一个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<String> warnings = new ArrayList<String>();
		   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中添加

	 <commentGenerator>
	  	<property name="suppressAllComments" value="true" />
	</commentGenerator>

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

mybatis分页插件的使用,可以去github上查看pagehelper的官方文档学习如何使用

1.引入分页插件的依赖,

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>最新版本</version>
</dependency>

2.在mybatis的配置文件中注册插件

	<plugins>
		<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
	</plugins>

突然发现我在写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<Employee> emps = employeeService.getAll();
		// 使用pageInfo包装查询后的结果,只需要将pageInfo交给页面就行了。
		// 封装了详细的分页信息,包括有我们查询出来的数据,传入连续显示的页数
		PageInfo page = new PageInfo(emps, 5);
		
		return "list";
	}
	
}

pageInfo的详细属性

https://blog.csdn.net/weixin_41996974/article/details/81099693

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------JSR303数据校验

  1. 导入需要的包    ,tomcat7以上导入就可以使用了,tomcat7以下的话需要额外给lib包替换新包,在spring-mvc.xml中也有配置,在下面
    <!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator -->
        <dependency>
            <groupId>org.hibernate.validator</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>6.0.13.Final</version>
        </dependency>

     

  2. 在实体的属性上加上数据校验,更多的注解  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<String,Object> map=new HashMap<>();
			List<FieldError> 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();
		}
		
	}

---------------------------------------------------------------------------------------------------------------------------------------------------------

	<!-- 两个标准配置 -->
	<!-- 将springmvc不能处理的请求交给tomcat -->
	<mvc:default-servlet-handler/>
	<!-- 能支持springmvc更高级的一些功能,JSR303校验,快捷的ajax,映射动态请求... -->
	<mvc:annotation-driven></mvc:annotation-driven>

 

整个项目流程,前端UI由Bootstrap搭建,从页面发起请求,被SpringMVC前端控制器拦截,判断是否能处理,如果可以处理,就交给Controller处理,不能处理的,就交给tomcat,比如一些静态资源。

Controller层调用Service层,如果需要调用数据库的话还要调用Dao层。Dao层是Mybatis做的(XXXMapper)

 

 

视频、源码、数据库,

链接:https://pan.baidu.com/s/1zAQnvl1MaIMIUyxswCGIMQ 
提取码:39lf 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值