Mybatis(四):自定义映射resultMap

自定义映射resultMap

  • 前言
    • 一、处理字段和属性的映射关系
      • 问题:
      • 方案一:使用别名
      • 方案二:在`mybatis-config.xml`中设置`mapUnderscoreToCamelCase`
      • 方案三:在映射文件中设置`redultMap`
    • 二、多对一映射处理
      • 问题:
      • 方案一:级联方式处理映射关系
      • 方案二:使用association处理映射关系
      • 方案三:分步查询
    • 三、一对多映射处理
      • 方案一:collection
      • 方案二:分步查询



前言

本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远!

Emp.java

public class Emp {
    private Integer eid;
    private String empName;
    private Integer age;
    private String sex;
    private String email;
    ...
    }

数据库表:t_emp
在这里插入图片描述

一、处理字段和属性的映射关系

若字段名和实体类中的属性名不一致,但是字段名符合数据库的规则(使用_),实体类中的属性名符合Java的规则(使用驼峰),此时也可通过以下三种方式处理字段名和实体类中的属性的映射关系

⭕ 方式一:可以通过为字段起别名的方式,保证和实体类中的属性名保持一致

⭕ 方式二:可以在MyBatis的核心配置文件中设置一个全局配置信息mapUnderscoreToCamelCase,可以在查询表中数据时,自动将_类型的字段名转换为驼峰

例如:字段名user_name,设置了mapUnderscoreToCamelCase,此时字段名就会转换为userName

⭕ 方式三:在映射文件中设置redultMap

问题:

EmpMapper

/**
     * @description:查询所有的员工信息
     * @author: Hey
     * @date: 2022/7/3 23:38
     * @param: []
     * @return: java.util.List<com.ir.mybatis.pojo.Emp>
     **/
    List<Emp> getAllEmp();

EmpMapper.xml

<select id="getAllEmp" resultType="emp">
          select * from t_emp;         
</select>

ResultTest

/**
     * @description:查询所有用户的信息
     * @author: Hey
     * @date: 2022/7/3 23:40
     * @param: []
     * @return: void
     **/
    @Test
    public void testGetAllEmp(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
        List<Emp> list = mapper.getAllEmp();
        list.forEach(emp -> System.out.println(emp));
        /**
         * Emp{eid=1, empName='null', age=34, sex='男', email='123@qq.com'}
         * Emp{eid=2, empName='null', age=32, sex='女', email='123@qq.com'}
         * Emp{eid=3, empName='null', age=34, sex='男', email='123@qq.com'}
         * Emp{eid=4, empName='null', age=23, sex='男', email='123@qq.com'}
         * Emp{eid=5, empName='null', age=45, sex='女', email='123@qq.com'}
         */
    }
    /**
    empName所有的值都为null:因为数据库表中的字段名为emp_name,而实体类中此字段名
    对应的属性名为empname,所以字段名emp_name和属性名empname不一致,导致映射文件
    里无法获取到传递过来的参数

方案一:使用别名

⭕ 代码演示:

EmpMapper

/**
     * @description:查询所有的员工信息
     * @author: Hey
     * @date: 2022/7/3 23:38
     * @param: []
     * @return: java.util.List<com.ir.mybatis.pojo.Emp>
     **/
    List<Emp> getAllEmp();

EmpMapper.xml

<select id="getAllEmp" resultType="emp">
         select eid,emp_name empname,age,sex,email from t_emp;      
</select>

ResultTest

/**
     * @description:查询所有用户的信息
     * @author: Hey
     * @date: 2022/7/3 23:40
     * @param: []
     * @return: void
     **/
    @Test
    public void testGetAllEmp(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
        List<Emp> list = mapper.getAllEmp();
        list.forEach(emp -> System.out.println(emp));
        /**
         * Emp{eid=1, empName='喜羊羊', age=34, sex='男', email='123@qq.com'}
         * Emp{eid=2, empName='美羊羊', age=32, sex='女', email='123@qq.com'}
         * Emp{eid=3, empName='懒洋洋', age=34, sex='男', email='123@qq.com'}
         * Emp{eid=4, empName='沸羊羊', age=23, sex='男', email='123@qq.com'}
         * Emp{eid=5, empName='暖羊羊', age=45, sex='女', email='123@qq.com'}
         */
    }

方案二:在mybatis-config.xml中设置mapUnderscoreToCamelCase

⭕ 代码演示:

<!--设置MyBatis的全局配置-->
    <settings>
        <!--将_自动映射为驼峰,emp_name:empName-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <!--开启延迟加载-->
        <setting name="lazyLoadingEnabled" value="true"/>
    </settings>

EmpMapper

/**
     * @description:查询所有的员工信息
     * @author: Hey
     * @date: 2022/7/3 23:38
     * @param: []
     * @return: java.util.List<com.ir.mybatis.pojo.Emp>
     **/
    List<Emp> getAllEmp();

EmpMapper.xml

<select id="getAllEmp" resultType="emp">
          select * from t_emp;         
</select>

ResultTest

/**
     * @description:查询所有用户的信息
     * @author: Hey
     * @date: 2022/7/3 23:40
     * @param: []
     * @return: void
     **/
    @Test
    public void testGetAllEmp(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
        List<Emp> list = mapper.getAllEmp();
        list.forEach(emp -> System.out.println(emp));
        /**
         * Emp{eid=1, empName='喜羊羊', age=34, sex='男', email='123@qq.com'}
         * Emp{eid=2, empName='美羊羊', age=32, sex='女', email='123@qq.com'}
         * Emp{eid=3, empName='懒洋洋', age=34, sex='男', email='123@qq.com'}
         * Emp{eid=4, empName='沸羊羊', age=23, sex='男', email='123@qq.com'}
         * Emp{eid=5, empName='暖羊羊', age=45, sex='女', email='123@qq.com'}
         */
    }

方案三:在映射文件中设置redultMap

resultMap:设置自定义映射关系

  1. id:唯一标识,不能重复
  2. type:设置映射关系中的实体类类型
  3. 子标签:
    3.1 id:设置主键的映射关系
    3.2 result:设置普通字段的映射关系
    3.3 属性:
    property:设置映射关系中的属性名,必须是type属性所设置的实体类类型中的属性名
    column:设置映射关系中的字段名,必须是sql语句查询出的字段名

⭕ 代码演示:

EmpMapper.java

/**
     * @description:查询所有的员工信息
     * @author: Hey
     * @date: 2022/7/3 23:38
     * @param: []
     * @return: java.util.List<com.ir.mybatis.pojo.Emp>
     **/
    List<Emp> getAllEmp();

EmpMapper.xm

<resultMap id="empTest" type="Emp">
        <id property="eid" column="eid"></id>
        <result property="empName" column="emp_name"></result>
        <result property="age" column="age"></result>
        <result property="sex" column="sex"></result>
        <result property="email" column="email"></result>
    </resultMap>

    <select id="getAllEmp" resultMap="empTest">
          select * from t_emp;

    </select>

ResultTest

@Test
    public void testGetAllEmp(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
        List<Emp> list = mapper.getAllEmp();
        list.forEach(emp -> System.out.println(emp));
        /**
         * Emp{eid=1, empName='喜羊羊', age=34, sex='男', email='123@qq.com'}
         * Emp{eid=2, empName='美羊羊', age=32, sex='女', email='123@qq.com'}
         * Emp{eid=3, empName='懒洋洋', age=34, sex='男', email='123@qq.com'}
         * Emp{eid=4, empName='沸羊羊', age=23, sex='男', email='123@qq.com'}
         * Emp{eid=5, empName='暖羊羊', age=45, sex='女', email='123@qq.com'}
         */
    }

二、多对一映射处理

问题:

查询员工信息以及员工所对应的部门信息

Emp.java

public class Emp {
    private Integer eid;
    private String empName;
    private Integer age;
    private String sex;
    private String email;
    private Dept dept;
    ...
    }

Dept.java

public class Dept {
    private Integer did;
    private String deptName;
    private List<Emp> emps;
    ...
    }

方案一:级联方式处理映射关系

EmpMapper

/**
  * @description:获取指定员工的信息(包括部门)
  * @author: Hey
  * @date: 2022/7/4 8:58
  * @param: [id]
  * @return: com.ir.mybatis.pojo.Emp
  **/
    Emp getAllEmpAndDept(@Param("eid") Integer eid);

EmpMapper.xml

<resultMap id="title1" type="Emp">
        <id property="eid" column="eid"></id>
        <result property="empName" column="emp_name"></result>
        <result property="age" column="age"></result>
        <result property="sex" column="sex"></result>
        <result property="email" column="email"></result>
        <result property="dept.did" column="did"></result>
        <result property="dept.deptName" column="dept_name"></result>
</resultMap>
    <select id="getAllEmpAndDept" resultMap="title1">
        select * from t_emp left join t_dept on t_emp.did = t_dept .did where t_emp.eid = #{eid}
    </select>

ResultTest

/**
     * @description:获取指定员工的信息(包括部门)
     * @author: Hey
     * @date: 2022/7/4 8:56
     * @param: []
     * @return: void
     **/
    @Test
    public void getAllEmpAndDept(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
        Emp emp = mapper.getAllEmpAndDept(2);
        System.out.println(emp);//Emp{eid=2, empName='美羊羊', age=32, sex='女', email='123@qq.com'}

    }

方案二:使用association处理映射关系

EmpMapper

/**
  * @description:获取指定员工的信息(包括部门)
  * @author: Hey
  * @date: 2022/7/4 8:58
  * @param: [id]
  * @return: com.ir.mybatis.pojo.Emp
  **/
    Emp getAllEmpAndDept(@Param("eid") Integer eid);

EmpMapper.xml

   <resultMap id="title1" type="Emp">
        <id property="eid" column="eid"></id>
        <result property="empName" column="emp_name"></result>
        <result property="age" column="age"></result>
        <result property="sex" column="sex"></result>
        <result property="email" column="email"></result>
       <!--
            association:处理多对一的映射关系
            property:需要处理多对的映射关系的属性名
            javaType:该属性的类型
            过程:通过javaType,运用反射,确定其所有属性,再将column一一准确赋值
            给指定的属性,这样就得出了一个实体类对象,再将这个对象赋值给property
            中的对象名
        -->

        <association property="dept" javaType="Dept">
            <id property="did" column="did"></id>
            <result property="deptName" column="dept_name"></result>
        </association>
    </resultMap>

    <select id="getAllEmpAndDept" resultMap="title1">
        select * from t_emp left join t_dept on t_emp.did = t_dept .did where t_emp.eid = #{eid}
    </select>

ResultTest

/**
     * @description:获取指定员工的信息(包括部门)
     * @author: Hey
     * @date: 2022/7/4 8:56
     * @param: []
     * @return: void
     **/
    @Test
    public void getAllEmpAndDept(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
        Emp emp = mapper.getAllEmpAndDept(3);
        System.out.println(emp);//Emp{eid=3, empName='懒洋洋', age=34, sex='男', email='123@qq.com'}

    }

方案三:分步查询

⭕ 分步查询的优点:
可以实现延迟加载,但是必须在核心配置文件中设置全局配置信息:
lazyLoadingEnabled:延迟加载的全局开关。当开启时,所有关联对象都会延迟加载
aggressiveLazyLoading:当开启时,任何方法的调用都会加载该对象的所有属性。
否则,每个属性会按需加载,此时就可以实现按需加载,获取的数据是什么,就只会执行相应的sql。

此时可通过associationcollection中的fetchType属性设置当前的分步查询是否使用延迟加载,fetchType="lazy(延迟加载)|eager(立即加载)"

mybatis-config.xml

 <!--设置MyBatis的全局配置-->
    <settings>
        <!--将_自动映射为驼峰,emp_name:empName-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
         <!--开启延迟加载-->
        <setting name="lazyLoadingEnabled" value="true"/>

    </settings>

EmpMapper

/**
     * @description:通过分步查询查询员工以及员工所对应的部门信息
     *              分步查询第一步:查询员工信息
     * @author: Hey 
     * @date: 2022/7/4 9:41
     * @param: [eid]
     * @return: com.ir.mybatis.pojo.Emp
     **/
    Emp getEmpAndDeptByStepOne(@Param("eid") Integer eid);

EmpMapper.xml

<resultMap id="empAndDeptByStepResultMap" type="Emp">
        <id property="eid" column="eid"></id>
        <result property="empName" column="emp_name"></result>
        <result property="age" column="age"></result>
        <result property="sex" column="sex"></result>
        <result property="email" column="email"></result>
        <!--
            select:设置分步查询的sql的唯一标识(namespace.SQLId或mapper接口的全类名.方法名)
            column:设置分布查询的条件:根据员工的部门的did去查询该员工所属部门的信息
            fetchType:当开启了全局的延迟加载之后,可通过此属性手动控制延迟加载的效果
            fetchType="lazy|eager":lazy表示延迟加载,eager表示立即加载

        -->
        <association property="dept"
                     select="com.ir.mybatis.mapper.DeptMapper.getEmpAndDeptByStepTwo"
                     column="did"
                     >
        </association>
</resultMap>
    <!--Emp getEmpAndDeptByStepOne(@Param("eid") Integer eid);-->
    <select id="getEmpAndDeptByStepOne" resultMap="empAndDeptByStepResultMap">
        select * from t_emp where eid = #{eid}
    </select>

DeptMapper

/**
     * @description:通过分步查询查询部门以及部门中所有的员工信息
     *              分步查询第二步:根据did查询员工信息
     * @author: Hey 
     * @date: 2022/7/4 9:42
     * @param: [did]
     * @return: java.util.List<com.ir.mybatis.pojo.Emp>
     **/
    List<Emp> getDeptAndEmpByStepTwo(@Param("did") Integer did);

DeptMapper.xml

 <!--Dept getEmpAndDeptByStepTwo(@Param("did") Integer did);-->
    <select id="getEmpAndDeptByStepTwo" resultType="Dept">
        select * from t_dept where did = #{did}
    </select>

ResultTest

/**
     * @description:通过分步查询查询部门以及部门中所有的员工信息
     * @author: Hey 
     * @date: 2022/7/4 9:53
     * @param: []
     * @return: void
     **/
    @Test
    public void testGetEmpAndDeptByStep(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
        Emp emp = mapper.getEmpAndDeptByStepOne(3);
        System.out.println(emp);//Emp{eid=3, empName='懒洋洋', age=34, sex='男', email='123@qq.com'}

    }

三、一对多映射处理

方案一:collection

DeptMapper

 /**
     * @description:获取部门以及部门中所有的员工信息
     * @author: Hey
     * @date: 2022/7/4 10:46
     * @param: [did]
     * @return: com.ir.mybatis.pojo.Dept
     **/
    Dept getDeptAndEmp(@Param("did") Integer did);

DeptMapper.xml

<resultMap id="deptAndEmpResultMap" type="Dept">
        <id property="did" column="did"></id>
        <result property="deptName" column="dept_name"></result>
        <!--
            collection:处理一对多的映射关系
            ofType:表示该属性所对应的集合中存储数据的类型
        -->
        <collection property="emps" ofType="Emp">
            <id property="eid" column="eid"></id>
            <result property="empName" column="emp_name"></result>
            <result property="age" column="age"></result>
            <result property="sex" column="sex"></result>
            <result property="email" column="email"></result>
        </collection>
    </resultMap>
    <!--Dept getDeptAndEmp(@Param("did") Integer did);-->
    <select id="getDeptAndEmp" resultMap="deptAndEmpResultMap">
        select * from t_dept left join t_emp on t_dept.did = t_emp.did where t_dept.did = #{did}
    </select>

ResultTest

 /**
     * @description:获取部门以及部门中所有的员工信息
     * @author: Hey
     * @date: 2022/7/4 10:54
     * @param: []
     * @return: void
     **/
    @Test
    public void testGetDeptAndEmp(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        DeptMapper mapper = sqlSession.getMapper(DeptMapper.class);
        Dept dept = mapper.getDeptAndEmp(1);
        System.out.println(dept);
        /**
         * Dept{
         * did=1, deptName='A',
         * emps=[
         * Emp{eid=1, empName='喜羊羊', age=34, sex='男', email='123@qq.com'},
         * Emp{eid=4, empName='沸羊羊', age=23, sex='男', email='123@qq.com'}
         * ]
         * }
         */
    }

方案二:分步查询

DeptMapper

 /**
     * @description:通过分步查询查询部门以及部门中所有的员工信息
     *              分步查询第一步:查询部门信息
     * @author: Hey
     * @date: 2022/7/4 12:31
     * @param: [did]
     * @return: com.ir.mybatis.pojo.Dept
     **/
    Dept getDeptAndEmpByStepOne(@Param("did") Integer did);

DeptMapper.xml

 <resultMap id="deptAndEmpByStepResultMap" type="Dept">
        <id property="did" column="did"></id>
        <result property="deptName" column="dept_name"></result>
        <collection property="emps"
                    select="com.ir.mybatis.mapper.EmpMapper.getDeptAndEmpByStepTwo"
                    column="did" fetchType="eager">

        </collection>
    </resultMap>
    
    <select id="getDeptAndEmpByStepOne" resultType="deptAndEmpByStepResultMap">
        select * from t_dept where did = #{did}
    </select>

EmpMapper

/**
     * @description:通过分步查询查询部门以及部门中所有的员工信息
     *              分步查询第二步:根据did查询员工信息
     * @author: Hey
     * @date: 2022/7/4 12:36
     * @param: [did]
     * @return: java.util.List<com.ir.mybatis.pojo.Emp>
     **/
    List<Emp> getDeptAndEmpByStepTwo(@Param("did") Integer did);

EmpMapper.xml

<select id="getDeptAndEmpByStepTwo"  resultType="Emp">
      select * from t_emp where did = #{did}
    </select>

ResultTest

/**
     * @description:通过分步查询查询部门以及部门中所有的员工信息
     * @author: Hey
     * @date: 2022/7/4 12:40
     * @param: []
     * @return: void
     **/
    @Test
    public void testGetDeptAndEmpByStep(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        DeptMapper mapper = sqlSession.getMapper(DeptMapper.class);
        Dept dept = mapper.getDeptAndEmpByStepOne(1);
        System.out.println(dept.getDeptName());
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/3139.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何在 Vue 中使用 防抖 和 节流

大厂面试题分享 面试题库前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★地址&#xff1a;前端面试题库 https://mp.weixin.qq.com/s?__bizMzU5NzA0NzQyNg&mid2247485824&idx3&sn70cd26a7c0c683de64802f6cb9835003&scene21#wech…

内存操作函数

前言 &#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏: &#x1f354;&#x1f35f;&#x1f32f; c语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f349;本篇简介:>:介绍c语言中有关指针更深层的知识. 金句分享: ✨未来…

蓝桥杯Web前端练习-----渐变色背景生成器

介绍 相信做过前端开发的小伙伴们对渐变色在 UI 设计中的流行度一定不陌生&#xff0c;网页上也时常可以看到各类复杂的渐变色生成工具。使用原生的 CSS 变量加一些 JS 函数就能做出一个简单的渐变色背景生成器。 现在渐变色生成器只完成了颜色选取的功能&#xff0c;需要大家…

【你不知道的 CSS】你写的 CSS 太过冗余,以至于我对它下手了

:is() 你是否曾经写过下方这样冗余的CSS选择器: .active a, .active button, .active label {color: steelblue; }其实上面这段代码可以这样写&#xff1a; .active :is(a, button, label) {color: steelblue; }看~是不是简洁了很多&#xff01; 是的&#xff0c;你可以使用…

5种最佳像素化图像的方法

5种最佳像素化图像的方法1. 什么是像素化&#xff1f;2. 像素化有什么用&#xff1f;3. 如何像素化图像&#xff1f;参考Pixelate 像素化 这篇博客将讨论像素化及如何以五种最佳方式对图像进行像素化。有时希望在在线共享照片时保护照片的隐私。因此在共享图像之前会对图像的某…

锂电池充电的同时也能放电吗?

大家应该都有这样经历&#xff0c;我们的手机在充电的同时也能边使用&#xff0c;有的同学就会说了&#xff0c;这是因为手机电池在充电的同时也在放电。如果这样想我们可能就把锂电池类比了一个蓄水池&#xff0c;以为它在进水的同时也能出水&#xff0c;其实这个比喻是错误的…

【深度强化学习】(5) DDPG 模型解析,附Pytorch完整代码

大家好&#xff0c;今天和各位分享一下深度确定性策略梯度算法 (Deterministic Policy Gradient&#xff0c;DDPG)。并基于 OpenAI 的 gym 环境完成一个小游戏。完整代码在我的 GitHub 中获得&#xff1a; https://github.com/LiSir-HIT/Reinforcement-Learning/tree/main/Mod…

【洛谷刷题】蓝桥杯专题突破-深度优先搜索-dfs(10)

目录 写在前面&#xff1a; 题目&#xff1a;P1019 [NOIP2000 提高组] 单词接龙 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述&#xff1a; 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&#xff1a; 输出样例&#xff1a; 解题思路&#xff1a; 代…

【数据结构】顺序表和链表

目录.顺序表.链表比较.顺序表 线性表的顺序存储结构&#xff0c;使用一段物理地址连续的存储单元以此存储数据单元的线性结构&#xff08;从头开始连续存储&#xff09; 静态顺序表&#xff1a;使用定长数组存储动态顺序表&#xff1a;使用动态开辟的数组存储&#xff08;常用…

第十三届蓝桥杯省赛 python B组复盘

文章目录前言主要内容&#x1f99e;试题 A&#xff1a;排列字母思路代码&#x1f99e;试题 B&#xff1a;寻找整数思路代码&#x1f99e;试题 C&#xff1a;纸张尺寸思路代码&#x1f99e;试题 D&#xff1a;数位排序思路代码&#x1f99e;试题 E&#xff1a;蜂巢思路代码&…

打印菱形、三角形-课后程序(JavaScript前端开发案例教程-黑马程序员编著-第2章-课后作业)

【案例2-10】打印菱形、三角形 一、案例描述 考核知识点 for双重循环 练习目标 掌握for循环应用。打印出菱形打印出三角形。 需求分析 在本案例中我们将用JavaScript代码在页面中用“*”打印出菱形和三角形。 案例分析 菱形效果如图2-16所示。输入菱形行数6打印菱形 三角形…

计及光伏波动性的主动配电网有功无功协调优化(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5;&#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密…

JVM知识整理

JVM知识整理 JVM的主要组成部分 JVM包含两个两个子系统&#xff08;类加载子系统和执行引擎&#xff09;和两个组件&#xff08;运行时数据区与和本地库接口&#xff09; 类加载子系统&#xff1a;根据给定的全限定类名来加载class文件到运行时数据区域中的方法区。执行引擎&a…

学大数据算跟风吗?

随着互联网、物联网和人工智能等技术的不断发展&#xff0c;大数据技术逐渐进入人们的视野&#xff0c;成为一个备受关注的热点话题。那么&#xff0c;大数据专业好学吗&#xff1f;前景如何&#xff1f;下面我们来一起探讨一下。 一、大数据专业的学习难度 大数据技术是一种综…

将 XLS 转换为 EXE:xlCompiler Crack

只需单击几下即可将Excel文件转换为应用程序 xl编译器无需编程即可将您的Excel电子表格转换为软件应用程序 将 XLS 转换为 EXE 将Excel文件转换为具有保护选项的应用程序。Excel 到 EXE 转换器为您提供了分发 Excel 模型的竞争优势和灵活性。将 Excel 的功能丰富的环境保存在应…

一文了解Gralde

&#x1f3e0;个人主页&#xff1a;shark-Gao &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是shark-Gao&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f389;目前状况&#xff1a;23届毕业生&#xff0c;目前在某公司实习&#x1f…

蓝桥杯·3月份刷题集训Day02

本篇博客旨在记录自已打卡蓝桥杯3月份刷题集训&#xff0c;同时会有自己的思路及代码解答希望可以给小伙伴一些帮助。本人也是算法小白&#xff0c;水平有限&#xff0c;如果文章中有什么错误之处&#xff0c;希望小伙伴们可以在评论区指出来&#xff0c;共勉&#x1f4aa;。 文…

第14届蓝桥杯STEMA测评真题剖析-2023年3月12日Scratch编程初中级组

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥杯真题&#xff0c;这是Scratch蓝桥杯真题解析第113讲。 蓝桥杯选拔赛现已更名为STEMA&#xff0c;即STEM 能力测试&#xff0c;是蓝桥杯大赛组委会与美国普林斯顿多…

JavaScript 应用

目录 1、编程实现“计算任意区间内连续自然数的累加和”页面。 代码实现 2、应用 appendChild()方法和 getElementById()方法实现年月日的联动功能。 代码 1、编程实现“计算任意区间内连续自然数的累加和”页面。 &#xff08;1&#xff09;文档结构的创建 启动程序&#…

若依框架---权限管理设计

前言 若依权限管理包含两个部分&#xff1a;菜单权限 和 数据权限。菜单权限控制着我们可以执行哪些操作。数据权限控制着我们可以看到哪些数据。 菜单是一个概括性名称&#xff0c;可以细分为目录、菜单和按钮&#xff0c;以若依自身为例&#xff1a; 目录&#xff0c;就是页…