SSM框架大致整合

SSM框架整合

1.ssm把spring springmvc mybatis三个框架整合再一起。 spring和 mybatis框架。把mybatis配置文件的内容整合到spring配置文件中。

对象调用的顺序:JSP—Controller—Service—DAO—Mybatis

(0)建立数据库

-- 创建数据库语句编码为utf8的格式: create database 数据库名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; -- 创建表: -- 表存在则删除 drop table if exists '表名' -- 表不存在则创建 create table if not exists '表名' ( 'id' int(11) not null auto_increment, 'name' varchar(10), primary key('id') )

-- 创建数据库
create database qy165 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
-- 创建部门表
DROP TABLE IF EXISTS `tbl_dept`;
CREATE TABLE `tbl_dept`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NULL DEFAULT NULL COMMENT '部门',
  `loc` varchar(255) NULL DEFAULT NULL COMMENT '地址',
  PRIMARY KEY (`id`)
);
-- 插入数据
INSERT INTO `tbl_dept` VALUES (1, '研发部', '郑州');
INSERT INTO `tbl_dept` VALUES (2, '市场部', '北京');
INSERT INTO `tbl_dept` VALUES (3, '财务部', '上海');
INSERT INTO `tbl_dept` VALUES (4, '人事部', '杭州');
-- 创建员工表
DROP TABLE IF EXISTS `tbl_emp`;
CREATE TABLE `tbl_emp`  (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号',
  `name` varchar(255) NULL DEFAULT NULL COMMENT '姓名',
  `salary` decimal(10, 2) NULL DEFAULT NULL COMMENT '薪水',
  `birthday` date NULL DEFAULT NULL COMMENT '出生日期',
  `dept_id` int(11) NULL DEFAULT NULL COMMENT '部门id 关联部门表',
  PRIMARY KEY (`id`)
);
-- 插入数据
INSERT INTO `tbl_emp` VALUES (1, '接口的卡莉法',5000.00, '2008-11-12',2);
INSERT INTO `tbl_emp` VALUES (2, '大幅度', 34.00, '2023-04-05', 1);
INSERT INTO `tbl_emp` VALUES (3, '值交换', 908.00, '2030-04-07', 2);
INSERT INTO `tbl_emp` VALUES (4, '地方', 5546.00, '2023-04-05', 3);
INSERT INTO `tbl_emp` VALUES (5, '地方个', 44.00, '2023-04-04', 3);
INSERT INTO `tbl_emp` VALUES (6, '文言一心', 446576.00, '2013-05-06',2);
INSERT INTO `tbl_emp` VALUES (7, '文言一心', 234.00, '2013-05-06', 2);

(1)创建maven的web工程

 

 

 

 

 

(2)引入相关依赖

pom.xml

<dependencies>
     <!--        核心依赖-->
         <!--spring webmvc依赖-->
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-webmvc</artifactId>
             <version>5.2.15.RELEASE</version>
         </dependency>
         <!--mybatis的依赖-->
         <dependency>
             <groupId>org.mybatis</groupId>
             <artifactId>mybatis</artifactId>
             <version>3.5.9</version>
         </dependency>
         <!--mysql驱动依赖-->
         <dependency>
             <groupId>mysql</groupId>
             <artifactId>mysql-connector-java</artifactId>
             <version>8.0.31</version>
         </dependency>
         <!--druid连接池-->
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>druid</artifactId>
             <version>1.2.8</version>
         </dependency>
         <!--spring和mybatis整合的依赖-->
         <dependency>
             <groupId>org.mybatis</groupId>
             <artifactId>mybatis-spring</artifactId>
             <version>2.0.7</version>
         </dependency>
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-jdbc</artifactId>
             <version>5.2.15.RELEASE</version>
         </dependency>
 ​
     <!--其他依赖-->
         <dependency>
             <groupId>javax.servlet</groupId>
             <artifactId>javax.servlet-api</artifactId>
             <version>4.0.1</version>
         </dependency>
         <dependency>
             <groupId>javax.servlet.jsp</groupId>
             <artifactId>jsp-api</artifactId>
             <version>2.2</version>
         </dependency>
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
             <version>4.13.2</version>
             <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
             <version>1.18.24</version>
         </dependency>
         <!--        jstl标签库依赖-->
         <dependency>
             <groupId>javax.servlet</groupId>
             <artifactId>jstl</artifactId>
             <version>1.2</version>
         </dependency>
     </dependencies>

 (3)创建springmvc配置文件

<?xml version="1.0" encoding="UTF-8"?>
 <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:mvc="http://www.springframework.org/schema/mvc"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">
     <!--1.包扫描 包扫描主要用于找到带有注解的类。-->
     <context:component-scan base-package="com.zc.controller,com.zc.service"/>
     <!--2.注解驱动-->
     <mvc:annotation-driven/>
     <!--3.静态资源放行-->
     <mvc:default-servlet-handler/>
     <!--4.视图解析器,定义跳转的文件的前后缀-->
     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
         <property name="prefix" value="views/"/>
         <property name="suffix" value=".jsp"/>
     </bean>
     <!--5.配置数据源-->
       <!--
         driverClassName:数据库驱动连接
         url: Uniform Resource Identifier 统一资源标识符 它是可以在 web 应用中唯一定位一个资源的路径
         username:数据库用户名(用于连接数据库)
         password:用户密码(用于连接数据库)
     -->
     <bean id="datasource" class="com.alibaba.druid.pool.DruidDataSource">
         <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
         <property name="url" value="jdbc:mysql://localhost:3306/qy165"/>
         <property name="username" value="root"/>
         <property name="password" value="123456"/>
     </bean>
     <!--6. SqlSessionFactory:理解为mybatis文件-->
     <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
         <property name="dataSource" ref="datasource"/>
         <!--指定mybatis映射文件的路径-->
         <property name="mapperLocations" value="classpath*:mapper/*.xml"/>
     </bean>
     <!--7.设置dao接口的代理实现类-->
     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
         <property name="sqlSessionFactoryBeanName" value="sessionFactory"/>
         <!--dao接口所在的包-->
         <property name="basePackage" value="com.zc.dao"/>
     </bean>
 </beans>

(4)web.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
          version="4.0">
     <!--注册DispatchServlet-->
     <servlet>
         <servlet-name>springmvc</servlet-name>
         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
         <!--如果没有指定参数默认解析WEB-INF/servletName-servlet.xml-->
         <init-param>
             <param-name>contextConfigLocation</param-name>
             <param-value>classpath*:springmvc.xml</param-value>
         </init-param>
     </servlet>
     <servlet-mapping>
         <servlet-name>springmvc</servlet-name>
         <url-pattern>/</url-pattern>
     </servlet-mapping>
        <!--乱码处理过滤器,由SpringMVC提供-->
     <!-- 处理post请求乱码 -->
     <filter>
         <filter-name>CharacterEncodingFilter</filter-name>
         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
         <init-param>
             <!-- name固定不变,value值根据需要设置 -->
             <param-name>encoding</param-name>
             <param-value>UTF-8</param-value>
         </init-param>
     </filter>
     <filter-mapping>
         <filter-name>CharacterEncodingFilter</filter-name>
         <!-- 所有请求都设置utf-8的编码 -->
         <url-pattern>/*</url-pattern>
     </filter-mapping>
 </web-app>

(5)编写pojo实体类

 @Data
 @AllArgsConstructor
 @NoArgsConstructor
 public class Emp {
     private Integer id;
     private String name;
     private BigDecimal salary;//小数类型 不要使用double或float 因为它有精度丢失问题3.0  3.000000000001
     private Date birthday;
     private Integer deptId;
     private Dept dept;//一对一
 }
 ​
 @Data//@Data注解是由Lombok库提供的,会生成getter、setter以及equals()、hashCode()、toString()等方法
 @AllArgsConstructor
 @NoArgsConstructor
 public class Dept {
     private Integer id;
     private String name;
     private String ioc;
 }

(6)编写对应的controller层

EmpController.java 控制器

@Controller
 public class EmpController {
     @Autowired//按照类型匹配
     private EmpService empService;//EmpService类对象必须再spring中创建好
     @Autowired
     private DeptService deptService;
     //TODO 查询所有
     @RequestMapping("list")//用于将任意HTTP 请求映射到控制器方法上。
     public String list(HttpServletRequest request){
         List<Emp> emps = empService.selectAll();
        request.setAttribute("emps",emps);
         return "list";
     }
     //TODO 删除
     @RequestMapping("/delete")
     public String delete(Integer id){
         int row = empService.del(id);
         System.out.println(row);
         return "redirect:/list";//重定向到指定的路径redirect:表示不会经过视图解析器   forward:请求转发 也不会经过视图解析器
     }
 }

(7)编写Service接口和实现类

EmpService.java

public interface EmpService {
     //TODO 查询所有
     public List<Emp> selectAll();
     //TODO 删除
     public int del(Integer id);
 }

EmpServiceImpl.java

@Autowired可以标注在属性上、方法上和构造器上,来完成自动装配。 默认是根据属性类型,spring自动将匹配到的属性值进行注入,然后就可以使用这个属性(对Springboot02WebApplicationTests类来说)autoWiredBean对象的方法。

@Autowired//简单来说因为类成员的初始化顺序不同,静态成员 ——> 变量初始化为默认值——>构造器——>为变量赋值。如果标注在属性上,则在构造器中就不能使用这个属性(对象)的属性和方法。

@Service//spring扫描到该注解时,会创建该类对象,并注入相关的依赖属性。
 public class EmpServiceImpl implements EmpService {
     @Autowired
     private EmpDao empDao;
     //TODO 查询所有
     @Override
     public List<Emp> selectAll() {
         return empDao.findAll();
     }
     //TODO 删除
       @Override
     public int del(Integer id) {
         int i = empDao.removeEmp(id);
         return i;
     }
 }

(8)编写dao接口以及mapper.xml

EmpDao.java

public interface EmpDao {
     //TODO 查询所有
     public List<Emp> findAll();
     //TODO 删除
     public int removeEmp(Integer id);
 }

EmpMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper
         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <!--namespace的内容必须和对应的接口路径映射-->
 <mapper namespace="com.zc.dao.EmpDao">
      <!--自定义映射规则-->
     <resultMap id="MyEmpMap" type="com.zc.pojo.Emp" autoMapping="true">
         <id property="id" column="eid"/>
         <result property="name" column="ename"/>
         <result property="deptId" column="dept_id"/>
         <association property="dept" javaType="com.zc.pojo.Dept" autoMapping="true">
             <id property="id" column="did"/>
             <result property="name" column="dname"/>
         </association>
     </resultMap>
     <!--        删-->
     <delete id="removeEmp" >
         delete from tbl_emp where id = #{id}
     </delete>
     <!--        查询所有-->
     <select id="findAll" resultMap="MyEmpMap">
       select e.id eid,e.name ename, salary, birthday, dept_id,d.name dname,d.id did,d.loc
              from tbl_emp e join tbl_dept d on e.dept_id = d.id
     </select>
 </mapper>

(9)新建jsp页面

list.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
 <html>
 <head>
     <title>Title</title>
 </head>
 <body>
     <table  width="600" border="1" cellpadding="0" cellspacing="0" align="center">
         <tr>
             <th>编号</th>
             <th>姓名</th>
             <th>薪水</th>
             <th>日期</th>
             <th>部门</th>
             <th>操作</th>
         </tr>
         <%--        jstl 核心标签库${} 必须引入jstl标签库的依赖
                     forEach:遍历集合或数组
                     items: 要遍历的集合或数组数据
                     var: 每次遍历时集合中的元素赋值的变量名
         --%>
         <c:forEach items="${emps}" var="e">
             <tr>
                 <td>${e.id}</td>
                 <td>${e.name}</td>
                 <td>${e.salary}</td>
                 <td>
                         <%--运用 jstl 标签库格式化日期--%>
                     <fmt:formatDate value="${e.birthday}" pattern="yyyy-MM-dd"/>
                 </td>
                 <td>${e.dept.name}</td>
                 <td>
                     <input type="button" value="删除" onclick="location.href='/delete?id=${e.id}' "/>
                 </td>
             </tr>
         </c:forEach>
     </table>
 </body>
 </html>

(10)部署项目

输入地址: localhost:8080/ 项目名称 /list

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值