• 2022-09-17 第五组 张明敏 学习笔记


    目录

    SSM

    Mybatis

    历史

    作用

    持久化

    持久层

    优缺点

    XML配置文件

    约束

    主配置文件xml

    另外一个mapper.xml

    测试类


    SSM

    SpringMVC + Spring + Mybatis

    3SpringMVC:充当的就是Servlet的角色。可以理解为SpringMVC是Spring的WEB支持。

    1Mybatis:充当的就是Dao层

    2Spring:充当的时一个润滑油的角色。

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

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

    Mybatis

    历史

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

    • Mybatis3,IBatis1,IBatis2。

    作用

    • 是一款优秀的持久层框架,支持定制化的SQL、存储过程以及高级映射。

    • 之前我们学过的所有的JDBC代码和手动设置参数获取结果集,都不用写了。

    • 使用简单的XML配置文件或者注解来映射原生信息,更加的方便。

    持久化

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

    1. 程序产生的数据首先都是在内存

    2. 内存不可靠,我们需要通过一些技术把数据永久存储在硬盘上。

    持久层

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

    优缺点

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

      • 优点:便于维护管理,不用在java代码中找sql语句。

      • 缺点:不能通过打断点的方式调试。通过日志来解决这个问题。

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

      • 优点:通过逻辑标签代替编写逻辑代码,生成不同的SQL。

      • 缺点:拼接复杂的SQL语句时,没有直接拼接直观。

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

      • 优点:保证名称之间的对应关系。可以下划线和驼峰自动转换。

      • 缺点:对开发人员的SQL语句依赖很强。

    XML配置文件

    约束

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

    主配置文件xml

    
    
        
            
                
                
                
                
                    
                    
                    
                    
                
            
        
    

    另外一个mapper.xml

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

    • 一个接口类mapper(就是咱们之前写的dao)Java文件,不需要我们写实现类

    • 一个接口对应着一个xml文件

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

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

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

    
    
    
        

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

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

    测试类

    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. }

  • 相关阅读:
    【Linux】gitee仓库的注册使用以及在Linux上远程把代码上传到gitee上的方法
    2023-2028年中国硫酸钇市场发展态势及前景预测报告
    浅谈旅行商问题(TSP问题)
    pdf文件怎么转换成图片?
    盘点中国光博会CIOE2023上的国货
    Mysql_12 多表查询
    聊聊JDK19特性之虚拟线程 | 京东云技术团队
    3.03_python+Django+mysql实现pdf转word项目_项目部署-mod_wsgi安装配置
    解决弹性布局父元素设置高自动换行,子元素均分高度问题(align-content: flex-start)
    【CIO人物展】国家能源集团信息技术主管王爱军:中国企业数智化转型升级的内在驱动力...
  • 原文地址:https://blog.csdn.net/qq_50392643/article/details/126926480