• 2022-9-17 第七小组 学习日记 (day72)SSM架构


    目录

    SSM框架集

    Mybatis

    历史

    作用

    持久化

    持久层

    优缺点

    XML配置文件

    约束

    主配置文件xml

    另外一个mapper.xml

    测试类

    总结 


    SSM框架集

    SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容),常作为数据源较简单的web项目的框架。

    SpringMVC + Spring + Mybatis

    • SpringMVC:充当的就是Servlet的角色。可以理解为SpringMVC是Spring的WEB支持。
    • Mybatis:充当的就是Dao层。
    • Spring:充当的时一个润滑油的角色。

    MybatisPlus:国内的团队,baomidou,可以写SQL,也可以不写SQL。介于Mybatis和Hibernate之间。

    Hibernate:充当Dao层。不需要写SQL,自动生成并执行SQL语句。

    Mybatis

    历史

    • Mybatis是apache的一个开源项目IBatis,2010年,apache迁移给了Google code,改名Mybatis,2013年迁移到GitHub。
    • Mybatis3,IBatis1,IBatis2。

    作用

    1. 是一款优秀的持久层框架,支持定制化的SQL、存储过程以及高级映射。
    2. 之前我们学过的所有的JDBC代码和手动设置参数获取结果集,都不用写了。
    3. 使用简单的XML配置文件或者注解来映射原生信息,更加的方便。

    持久化

    持久化把数据存储在磁盘而不是内存。

    1. 程序产生的数据首先都是在内存
    2. 内存不可靠,我们需要通过一些技术把数据永久存储在硬盘上。

    持久层

    之前的dao层,之前我们通过反射,通过泛型,通用的dao,我们在操作不同的表或者逻辑的时候,我们之前会创建一个接口,再创建接口的实现类,实际上这个dao层,就叫持久层

    优缺点

    sql语句与代码分离,存放于xml文件中。(最牛逼的特点)

    • 优点:便于维护管理,不用在java代码中找sql语句。
    • 缺点:不能通过打断点的方式调试。通过日志来解决这个问题。

    动态SQL语句。(最牛逼的特点)

    • 优点:通过逻辑标签代替编写逻辑代码,生成不同的SQL。
    • 缺点:拼接复杂的SQL语句时,没有直接拼接直观。

    查询结果和java对象自动映射

    • 优点:保证名称之间的对应关系。可以下划线和驼峰自动转换。
    • 缺点:对开发人员的SQL语句依赖很强。

    XML配置文件

    约束

    保证我们的xml能够使用哪些标签,保证xml的有效性。

    主配置文件xml

    1. "1.0" encoding="utf-8" ?>
    2. DOCTYPE configuration
    3.         PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    4.         "http://mybatis.org/dtd/mybatis-3-config.dtd">
    5. <configuration>
    6.     <environments default="development">
    7.         <environment id="development">
    8.            
    9.             <transactionManager type="JDBC">transactionManager>
    10.            
    11.             <dataSource type="POOLED">
    12.                 <property name="driver" value="com.mysql.jdbc.Driver"/>
    13.                 <property name="url" value="jdbc:mysql://127.0.0.1/ssm?useUnicode=true&characterEncoding=utf-8"/>
    14.                 <property name="username" value="root"/>
    15.                 <property name="password" value="root"/>
    16.             dataSource>
    17.         environment>
    18.     environments>
    19. configuration>

    另外一个mapper.xml

    第一次使用Mybatis,需要两个文件。

    1. 一个接口类mapper(就是咱们之前写的dao)Java文件,不需要我们写实现类。
    2. 一个接口对应着一个xml文件

    两个文件的名字最好相同,UserMapper.java->UserMapper.xml

    框架会根据mapper和xml联合,通过代理模式创建实现类。

    一般情况下,我们管接口对应的xml文件叫做映射文件。

    1. "1.0" encoding="utf-8" ?>
    2. DOCTYPE mapper
    3.         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    4.         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    5. <mapper namespace="com.jsoft.dao.UserMapper">
    6.     <select id="selectUserById" resultType="com.jsoft.entity.User">
    7.         select id,username,password from user where id = #{id}
    8.     select>
    9. mapper>

    映射文件最终要交给mybatis去处理,所有的映射文件需要在主配置文件中进行注册。

    1. "1.0" encoding="utf-8" ?>
    2. DOCTYPE configuration
    3.         PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    4.         "http://mybatis.org/dtd/mybatis-3-config.dtd">
    5. <configuration>
    6.     <environments default="development">
    7.         <environment id="development">
    8.            
    9.             <transactionManager type="JDBC">transactionManager>
    10.            
    11.             <dataSource type="POOLED">
    12.                 <property name="driver" value="com.mysql.jdbc.Driver"/>
    13.                 <property name="url" value="jdbc:mysql://127.0.0.1/ssm?useUnicode=true&characterEncoding=utf-8"/>
    14.                 <property name="username" value="root"/>
    15.                 <property name="password" value="root"/>
    16.             dataSource>
    17.         environment>
    18.     environments>
    19.     
    20.     <mappers>
    21.         <mapper resource="mapper/UserMapper.xml">mapper>
    22.     mappers>
    23.     
    24. configuration>

    测试类

    1. package com.jsoft.test;
    2. import com.jsoft.dao.UserMapper;
    3. import com.jsoft.entity.User;
    4. import org.apache.ibatis.session.SqlSession;
    5. import org.apache.ibatis.session.SqlSessionFactory;
    6. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    7. import org.junit.Test;
    8. import java.io.InputStream;
    9. // 测试我们的UserMapper
    10. public class UserMapperTest {
    11.     @Test
    12.     public void testSelectUserById() {
    13.         // 构建一个session工厂
    14.         // 需要加载mybatis的主配置文件
    15.         InputStream inputStream = UserMapperTest.class.getClassLoader().getResourceAsStream("mybatis-config.xml");
    16.         SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
    17.         SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
    18.         // 获取session
    19.         SqlSession session = sqlSessionFactory.openSession();
    20.         // 获取到接口的代理实现类
    21.         UserMapper mapper = session.getMapper(UserMapper.class);
    22.         // 调接口里的方法
    23.         User user = mapper.selectUserById(1);
    24.         System.out.println(user);
    25.     }
    26. }

     类似于这样的形式:

     

    总结 

            SSM架构是一款优秀的持久层框架,支持定制化的SQL、存储过程以及高级映射。之前我们学过的所有的JDBC代码和手动设置参数获取结果集,都不用写了。使用简单的XML配置文件或者注解来映射原生信息,更加的方便。今后将在工作中应用广泛,所以要好好去掌握。

  • 相关阅读:
    react-native实践日记--6.ReactNative 项目版本升级,0.61到0.72升级的问题记录(二)
    用电话比喻计算机网络协议
    038Node.js后端服务处理端口号被占用的解决方案portfinder
    发现你看不到的物体!南开&武大&ETH提出用于伪装目标检测SINet,代码已开源!...
    算法学习笔记 4-1 二分算法(Binary-Search):致敬经典,超越经典 与 LeetCode真题(Java)
    【机器学习】逻辑回归logit与softmax
    【毕业设计】大数据电商销售预测分析 - python 数据分析
    SMB信息泄露的利用
    C# 异步文件访问:提高应用程序的响应性和性能
    数据可视化项目基础知识
  • 原文地址:https://blog.csdn.net/weixin_56982770/article/details/126913200