eclipse导入ssm项目_SSM整合(Spring-SpringMVC-Mybatis) 之-Rest风格

SSM整合之CRUD-Rest风格

1.功能点

1)、分页

2)、数据校验:jquery前端校验+JSR303后端校验

3)、ajax 校验和请求

4)、Rest风格的URI;使用HTTP协议请求方式的动词,来表示对资

源的操作(GET(查询),POST(新增),PUT(修改),DELETE(删除))。

2.技术点

1) 基础框架-ssm(SpringMVC4.3.7+Spring4.3.7+MyBatis3.4.2)

2) 数据库-MySQL

3) 前端框架-bootstrap快速搭建简洁美观的界面

4) 项目的依赖管理-Maven

5) 分页-pagehelper

6) 逆向工程-MyBatis Generator

3.开发工具说明

JDK:1.8

Tomcat:8.0

MySQL:5.7

Eclipse:Mars2

Spring: spring4.3.7

Mybatis:mybatis3.4.2

Maven:maven3.3.9

二、SSM环境搭建

1.创建Maven 工程

打包方式为:war ,报错是因为缺少web.xml

添加web.xml

每次创建的时候maven 报错或者JDK版本问题,这里引入阿里云的镜像

下载jar包较快

在apache-maven-3.3.9conf中的settings配置

alimavenaliyun mavenhttp://maven.aliyun.com/nexus/content/groups/public/central

锁定JDK1.7版本配置

在里面配置

jdk17true1.71.71.71.7

2. 导入SSM 所需jar包

Spring、Springmvc、Mybatis、数据库连接池、驱动包、其他( jstl,servlet-api,Junit )

1)在pom.xml 中引入

访问https://mvnrepository.com/tags/maven 可以再这里导入所需的jar包坐标

4.0.0com.stackitssm-crud0.0.1-SNAPSHOTwarssm-crudssm-crudorg.springframeworkspring-webmvc4.3.7.RELEASEorg.springframeworkspring-jdbc4.3.7.RELEASEorg.springframeworkspring-aspects4.3.7.RELEASEorg.mybatismybatis3.4.2org.mybatismybatis-spring1.3.1c3p0c3p00.9.1mysqlmysql-connector-java5.1.41javax.servlet.jsp.jstljstl1.2javax.servletservlet-api2.5providedjunitjunit4.12test

引入完成

3. 引入前端框架bootstrap

4.编写ssm整合的配置文件

CharacterEncodingFilterorg.springframework.web.filter.CharacterEncodingFilterencodingUTF-8forceRequestEncodingtrueforceResponseEncodingtrueCharacterEncodingFilter/*HiddenHttpMethodFilterorg.springframework.web.filter.HiddenHttpMethodFilterHiddenHttpMethodFilter/*org.springframework.web.context.ContextLoaderListenercontextConfigLocationclasspath:applicationContext.xmlDispatcherServletorg.springframework.web.servlet.DispatcherServletcontextConfigLocationclasspath:springmvc.xmlDispatcherServlet/

5.配置springmvc.xml

创建jdbc.properties

jdbc.driveClass=com.mysql.jdbc.Driverjdbc.jdbcUrl=jdbc:mysql:///ssm_crud_aggjdbc.user=rootjdbc.password=123456

6.配置applicationContext.xml

7. 配置mybatis-config.xml

-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">

8.创建表

-- 部门表CREATE TABLE `tbl_dept` (`dept_id` int(11) NOT NULL AUTO_INCREMENT,`dept_name` varchar(255) DEFAULT NULL,PRIMARY KEY (`dept_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8-- 员工表CREATE TABLE `tbl_emp` (`emp_id` int(11) NOT NULL AUTO_INCREMENT,`emp_name` varchar(255) NOT NULL,`gender` char(1) DEFAULT NULL,`email` varchar(255) DEFAULT NULL,`d_id` int(11) DEFAULT NULL,PRIMARY KEY (`emp_id`),KEY `fk_emp_dept` (`d_id`),CONSTRAINT `fk_emp_dept` FOREIGN KEY (`d_id`) REFERENCES `tbl_dept` (`dept_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8

9.使用mybatis的逆向工程生成对应的实体类和Mapper.xml接口

在pom.xml 中添加mybatis-generator 逆向工程的jar

org.mybatis.generatormybatis-generator-core1.3.5

在当前工程创建mbg.xml

-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

执行逆向工程

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.internal.DefaultShellCallback;public class MybatisMBGTest {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);}}在Employee 中添加Department 生产getter和setter在EmployeeMapper 中添加/*** new add 带部门查询* @param example* @return*/List selectByExampleWithDept(EmployeeExample example);/*** new add 带部门查询* @param empId* @return*/Employee selectByPrimaryKeyWithDept(Integer empId);

在Employee 中添加Department 生产getter和setter

在EmployeeMapper 中添加

/*** new add 带部门查询* @param example* @return*/List selectByExampleWithDept(EmployeeExample example);/*** new add 带部门查询* @param empId* @return*/Employee selectByPrimaryKeyWithDept(Integer empId);

三 测试Mapper-CRUD:

mybatis使用 批量操作的

package com.stackit.ssm.test;import java.util.UUID;import org.apache.ibatis.session.SqlSession;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.stackit.ssm.beans.Department;import com.stackit.ssm.beans.Employee;import com.stackit.ssm.mapper.DepartmentMapper;import com.stackit.ssm.mapper.EmployeeMapper;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(value="classpath:applicationContext.xml")public class MapperTest {@AutowiredDepartmentMapper departmentMapper;@AutowiredEmployeeMapper employeeMapper;@AutowiredSqlSession sqlSession;@Testpublic void testCRUD() {EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);for (int i = 0; i < 1000; i++) {String uuid = UUID.randomUUID().toString().substring(0, 5)+i;mapper.insertSelective(new Employee(null, uuid, "M", uuid+"@atguigu.com", 1));}}}

Windows系统下MySQL5.7中文乱码的解决

【描述】win10系统,Mysql5.7安装版,出现中文乱码问题,数据库和数据库表均已设置UTF-8编码,但是依旧出现乱码。

【经历】上网查了,说要修改my.ini,但是在C:Program FilesMySQLMySQL Router 8.0etc目录下以及C:Program FilesMySQLMySQL Server 5.7目录下均未找到该文件。

有一种方法:显示隐藏的ProgramData文件夹,将C:ProgramDataMySQLMySQL Server 5.7下的my.ini复制到安装目录C:Program FilesMySQLMySQL Server 5.7下,然后运行my.ini里面的提到的命令,试了几下,也没用,可能是自己不太会弄吧。

【方法】于是就直接修改了C:ProgramDataMySQLMySQL Server 5.7下的my.ini文件。

【步骤】

1、显示隐藏文件夹

2、找到C:ProgramDataMySQLMySQL Server 5.7下的my.ini文件,右键用Notepad++打开

3、找到[mysql],在# default-character-set=的下一行添加default-character-set=utf8(图中第67行)

4、找到[mysqld],在# character-set-server=的下一行添加character-set-server=utf8(图中第102行)

5、保存文件,重启数据库,测试

【效果】

修改之前

修改之后

【变化】character_set_database和character_set_server的值由原来的latin1变为utf8

【说明】我的MySQL安装好后,使用过一段时间,之前没涉及中文字符(当然,之前每次新建数据库时都会设置UTF-8编码),后面发现有中文乱码问题,经过一番折腾之后,无奈的我直接修改了隐藏的my.ini文件,修改好后,重新试了一下,不会乱码了。

不过还有几个编码是gbk,而不是utf8(如图所示),也试过在[client]中配置default-character-set=utf8和在[mysqld]中配置collation-server = utf8_general_ci init_connect='SET NAMES utf8',但是都没用,那三个依旧还是gbk,不过目前看来,不会有影响。(我每次新建数据库时都会设置UTF-8编码,并且在连接数据库时,会在url中加上?characterEncoding=utf-8)

在命令行中输入 set names utf8;可以修改那3个"老顽童"

具体此方法是否会有"后遗症"尚不清楚,不过目前来看确实解决了我的中文乱码问题。

【建议】修改隐藏的my.ini之前,最好先备份一个,万一改崩了,还有"后悔药"。另外,折腾完之后,建议去掉勾选的"查看隐藏的项目",既然它们想藏起来就让它们藏吧,哪天确实需要再用它们的时候,再召唤,万一误删了这些"害羞"的重要文件就麻烦了。

四 页面CRUD

查询

• 1、访问index.jsp页面

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

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

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

• 5、pageHelper分页插件完成分页查询功能

• URI:/emp

在pom.xm中引入mybatis helper 分页插件的jar 包

com.github.pagehelperpagehelper5.0.0

在mybatis-config.xml 中配置

报错:java.lang.NoClassDefFoundError: javax/servlet/SessionCookieConfig

需要servlet-api 需要3.0的支持

在pom.xml 中配置

javax.servletjavax.servlet-api3.0.1provided

Spring提供虚拟测试

package com.stackit.ssm.test;import java.util.List;import org.junit.Before;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.mock.web.MockHttpServletRequest;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import org.springframework.test.context.web.WebAppConfiguration;import org.springframework.test.web.servlet.MockMvc;import org.springframework.test.web.servlet.MvcResult;import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;import org.springframework.test.web.servlet.setup.MockMvcBuilders;import org.springframework.web.context.WebApplicationContext;import com.github.pagehelper.PageInfo;import com.stackit.ssm.beans.Employee;/*** spring测试模块* 报错:java.lang.NoClassDefFoundError: javax/servlet/SessionCookieConfig* 需要servlet-api 需要3.0的支持* @author Administrator**/@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = { "classpath:applicationContext.xml", "classpath:springmvc.xml" })@WebAppConfigurationpublic class MVCTest {// 传入springmvc的IOC@Autowired // 只能自动注入IOC容器里面的,需要加入WebApplicationContext context;// 虚拟mvc请求,获取处理结果MockMvc mockMvc;@Beforepublic void initMockMvc() {mockMvc = MockMvcBuilders.webAppContextSetup(context).build();}@Testpublic void testPage() throws Exception {MvcResult result = mockMvc.perform(MockMvcRequestBuilders.get("/emps").param("pn", "5")).andReturn();// 模拟发送请求//请求成功以后,请求域中有pageInfo,我们可以取出pageInfo进行验证MockHttpServletRequest request = result.getRequest();PageInfo info = (PageInfo) request.getAttribute("pageInfo");System.out.println("当前页码:"+info.getPageNum());System.out.println("总页码:" +info.getPages());System.out.println("总记录数:" +info.getTotal());System.out.println("在页面需要连续显示的页码");int[] nums = info.getNavigatepageNums();for (int i : nums) {System.out.println(i);}System.out.println("员工数据");List list = info.getList();for (Employee employee : list) {System.out.println(employee.getEmpId() + " ==== " + employee.getEmpName() + " ==== " + employee.getDepartment().getDeptName());}}}

C3P0 :java.sql.SQLException: No suitable driver

连接的四个参数有误

taglibsstandard1.1.2

Maven项目出现错误:

java.lang.ClassNotFoundException: org.apache.taglibs.standard.tlv.JstlCoreTLV

错误的引入:

javax.servlet.jsp.jstljstl1.2

正确的引人:

javax.servletjstl1.2runtime

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

或者:

jstljstl1.2

你可能感兴趣的:(eclipse导入ssm项目,mybatis,分页需要的jar包下载,mybatis,批量删除,mybatis,批量添加,mybatis批量删除,mybatis批量新增)