NO.06 自定义映射resultMap

news2024/10/7 12:19:18

1、前言

在之前的博客中,实体类的属性名和数据库表的字段名是一致的,因此能正确地查询出所需要的数据。当实体类的属性名与数据库表的字段名不一致时,会导致查询出来的数据为空指针。要解决这个问题就需要使用resultMap自定义映射。

使用的表分别为:t_minister、t_dutie,结构如下:

  

  使用的实体类分别为:Minister类

public class Minister {
    private Integer id;
    private String ministerName;
    private String age;
    private char gender;
    private Integer ministerDutie;
    private Dutie dutie;

    public Minister() {
    }

    public Minister(Integer id, String ministerName, String age, char gender, Integer ministerDutie) {
        this.id = id;
        this.ministerName = ministerName;
        this.age = age;
        this.gender = gender;
        this.ministerDutie = ministerDutie;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getMinisterName() {
        return ministerName;
    }

    public void setMinisterName(String ministerName) {
        this.ministerName = ministerName;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public char getGender() {
        return gender;
    }

    public void setGender(char gender) {
        this.gender = gender;
    }

    public Integer getMinisterDutie() {
        return ministerDutie;
    }

    public void setMinisterDutie(Integer ministerDutie) {
        this.ministerDutie = ministerDutie;
    }

    @Override
    public String toString() {
        return "Minister{" +
                "id=" + id +
                ", ministerName='" + ministerName + '\'' +
                ", age='" + age + '\'' +
                ", gender=" + gender +
                ", ministerDutie='" + ministerDutie + '\'' +
                ", dutie=" + dutie +
                '}';
    }
}

 Dutie类

public class Dutie {
    private Integer dutieId;
    private String dutieName;

    public Dutie() {
    }

    public Dutie(Integer dutieId, String dutieName) {
        this.dutieId = dutieId;
        this.dutieName = dutieName;
    }

    public Integer getDutieId() {
        return dutieId;
    }

    public void setDutieId(Integer dutieId) {
        this.dutieId = dutieId;
    }

    public String getDutieName() {
        return dutieName;
    }

    public void setDutieName(String dutieName) {
        this.dutieName = dutieName;
    }

    @Override
    public String toString() {
        return "Dutie{" +
                "dutieId=" + dutieId +
                ", dutieName='" + dutieName + '\'' +
                '}';
    }
}

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

对于查询操作,若字段名和实体类中的属性名一致时,可以通过resultType指定结果类型;若字段名和实体类中的属性名不一致,则通过resultMap设置自定义映射。

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

2.1 通过resultMap为字段起别名的方式,保证和实体类中的属性名保持一致。

在MinisterMapper接口中声明方法getMalMinisterByVague(@Param("gender") String gender),该方法的返回值类型为List集合,List集合中存储Minister类型的数据,采用@Param注解的方式获取参数。

    //采用模糊查询,查找性别为男的人员
    List<Minister> getMalMinisterByVague(@Param("gender") String gender);

在映射文件中实现Sql语句,采用resultMap自定义映射。通过resultMap的value值匹配自定义映射resultMap中id的value值。

<!--    List<Minister> getMalMinisterByVague(@Param("gender") String gender);-->
    <select id="getMalMinisterByVague" resultMap="MinisterMaperr">
        select *from t_minister where gender like '%${gender}%'
    </select>

对于自定义映射resultMap标签,resultMap:设置自定义映射

属性:     id:表示自定义映射的唯一标识                    type:查询的数据要映射的实体类的类型

子标签:   id:设置主键的映射关系                             result:设置普通字段的映射关系

子标签中的属性:  property:实体类的属性名      column:表的字段名

    <resultMap id="MinisterMaperr" type="Minister">
        <id property="id" column="id"></id>
        <result property="ministerName" column="minister_name"></result>
        <result property="age" column="age"></result>
        <result property="ministerDutie" column="minister_dutie"></result>
    </resultMap>

完整的映射文件: 

<!--    List<Minister> getMalMinisterByVague(@Param("gender") String gender);-->
    <select id="getMalMinisterByVague" resultMap="MinisterMaperr">
        select *from t_minister where gender like '%${gender}%'
    </select>
    <resultMap id="MinisterMaperr" type="Minister">
        <id property="id" column="id"></id>
        <result property="ministerName" column="minister_name"></result>
        <result property="age" column="age"></result>
        <result property="ministerDutie" column="minister_dutie"></result>
    </resultMap>

2.2在MyBatis的核心配置文件中设置一个全局配置信息mapUnderscoreToCamelCase

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

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

此时不需要使用resultMap自定义映射,只需要使用resultType指定结果类型即可。

在MinisterMapper接口中声明方法getMaleMinisterByProfile(@Param("gender") String gender),该方法的返回值类型为List集合,List集合中存储Minister类型的数据,采用@Param注解的方式获取参数。

    //通过配置文件,使用模糊查询获得所有男性人员信息
    List<Minister> getMaleMinisterByProfile(@Param("gender") String gender);

在映射文件中实现Sql语句,采用resultType指定结果类型。

<!--    List<Minister> getMaleMinisterByProfile(@Param("gender") String gender);-->
    <select id="getMaleMinisterByProfile" resultType="Minister">
        select *from t_minister where gender like '%${gender}%'
    </select>

3、 多对一映射

3.1 前置工作

在MinisterMapper类中添加一个private Dutie dutie属性,添加对应的GET和SET方法,重写toString方法。

3.2 级联方式处理映射关系

在MinisterMapper接口中声明方法getGeneralMinisterByCascade(@Param("ministerDutie") Integer ministerDutie),该方法的返回值类型为List集合,List集合中存储Minister类型的数据,采用@Param注解的方式获取参数。

    //查询职称为武将的人员信息,级联方式实现多对一映射
    List<Minister> getGeneralMinisterByCascade(@Param("ministerDutie") Integer ministerDutie);

在映射文件中实现Sql语句,采用resultMap自定义映射。通过resultMap的value值匹配自定义映射resultMap中id的value值

<!--    List<Minister> getGeneralMinisterByCascade(@Param("ministerDutie") Integer ministerDutie);-->
    <select id="getGeneralMinisterByCascade" resultMap="GeneralMinisterByCascade">
        select  t_minister.*,t_dutie.* from t_minister left join t_dutie  on t_minister.minister_dutie=t_dutie.dutie_id where t_minister.minister_dutie=#{ministerDutie}
    </select>

 配置文件中property="dutie.dutieId"h和property="dutie.dutieName"中的dutie是Minister类的属性名dutie,”.“后的属性名是Dutie类中的属性名;column="dutie_id"和column="dutie_name"中的value值对应的是t_dutie表的字段名。

    <resultMap id="GeneralMinisterByCascade" type="Minister">
        <id property="id" column="id"></id>
        <result property="ministerName" column="minister_name"></result>
        <result property="age" column="age"></result>
        <result property="gender" column="gender"></result>
        <result property="ministerDutie" column="minister_dutie"></result>
        <result property="dutie.dutieId" column="dutie_id"></result>
        <result property="dutie.dutieName" column="dutie_name"></result>
    </resultMap>

 完整的映射文件: 

<!--    List<Minister> getGeneralMinisterByCascade(@Param("ministerDutie") Integer ministerDutie);-->
    <select id="getGeneralMinisterByCascade" resultMap="GeneralMinisterByCascade">
        select  t_minister.*,t_dutie.* from t_minister left join t_dutie  on t_minister.minister_dutie=t_dutie.dutie_id where t_minister.minister_dutie=#{ministerDutie}
    </select>
    <resultMap id="GeneralMinisterByCascade" type="Minister">
        <id property="id" column="id"></id>
        <result property="ministerName" column="minister_name"></result>
        <result property="age" column="age"></result>
        <result property="gender" column="gender"></result>
        <result property="ministerDutie" column="minister_dutie"></result>
        <result property="dutie.dutieId" column="dutie_id"></result>
        <result property="dutie.dutieName" column="dutie_name"></result>
    </resultMap>

3.3 使用association处理映射关系

通过在映射文件配置resultMap标签中的子标签association实现多对一映射。

在MinisterMapper接口中声明方法getGeneralMinisterByDutie(@Param("ministerDutie") Integer ministerDutie),该方法的返回值类型为List集合,List集合中存储Minister类型的数据,采用@Param注解的方式获取参数。

    //查询职称为武将的人员信息,实现多对一映射
    List<Minister> getGeneralMinisterByDutie(@Param("ministerDutie") Integer ministerDutie);

在映射文件中实现Sql语句,采用resultMap自定义映射。通过resultMap的value值匹配自定义映射resultMap中id的value值。

<!--    List<Minister> getGeneralMinisterByDutie(@Param("ministerDutie") Integer ministerDutie);-->
    <select id="getGeneralMinisterByDutie" resultMap="GeneralMinisterByDutie">
        select *from t_minister where minister_dutie=#{ministerDutie}
    </select>

对于自定义映射resultMap标签中的子标签association属性: 

property:实体类的属性名                          javaType:设置property对象对应的实体类类型

association标签中的子标签属性:

property:javaType实体类的属性名              column:javaType实体类对应表的字段名

    <resultMap id="GeneralMinisterByDutie" type="Minister">
        <id property="id" column="id"></id>
        <result property="ministerName" column="minister_name"></result>
        <result property="age" column="age"></result>
        <result property="gender" column="gender"></result>
        <result property="ministerDutie" column="minister_dutie"></result>
        <association property="dutie" javaType="Dutie">
            <id property="dutieId" column="dutie_id"></id>
            <result property="dutieName" column="dutie_name"></result>
        </association>
    </resultMap>

完整的映射文件: 

<!--    List<Minister> getGeneralMinisterByDutie(@Param("ministerDutie") Integer ministerDutie);-->
    <select id="getGeneralMinisterByDutie" resultMap="GeneralMinisterByDutie">
        select *from t_minister where minister_dutie=#{ministerDutie}
    </select>
    <resultMap id="GeneralMinisterByDutie" type="Minister">
        <id property="id" column="id"></id>
        <result property="ministerName" column="minister_name"></result>
        <result property="age" column="age"></result>
        <result property="gender" column="gender"></result>
        <result property="ministerDutie" column="minister_dutie"></result>
        <association property="dutie" javaType="Dutie">
            <id property="dutieId" column="dutie_id"></id>
            <result property="dutieName" column="dutie_name"></result>
        </association>
    </resultMap>

3.4 分步查询

目标:使用分步查询获取人员的信息,再通过人员的minister_dutie的属性值获取人员的部门信息。

分步查询的实质就是执行两条Sql语句,在MinisterMapper的映射文件中使用分步查询之前需要实现DutieMapper接口中部门信息的查询方法。

下面是实现DutieMapper接口中部门信息的查询方法。

在DutieMapper接口中声明getDutieByDutieId(@Param("dutieId") Integer dutieId)方法,该方法的返回值类型为Dutie类型,采用@Param注解的方式获取参数值。

    //通过dutieId查询人员的部门信息,分步查询第二步
    Dutie getDutieByDutieId(@Param("dutieId") Integer dutieId);

在对应的映射文件中实现Sql语句,采用resultMap自定义映射的方式指定结果类型。

<!--    Dutie getDutieByDutieId(@Param("dutieId") Integer dutieId);-->
    <select id="getDutieByDutieId" resultMap="DutieByDutieId">
        select *from t_dutie where dutie_id=#{dutieId}
    </select>
    <resultMap id="DutieByDutieId" type="Dutie" >
        <id property="dutieId" column="dutie_id"></id>
        <result property="dutieName" column="dutie_name"></result>
    </resultMap>

下面是实现MinisterMapper接口中分步查询。

在MinisterMapper接口声明getMinisterByStep(@Param("dutieId") Integer dutieId)方法,方法的返回值为List集合,存储的数据类型为Minister类型,采用@Param注释的方法获取参数值。

    //采用分步查询获取dutieId为3的人员信息,分步查询第一步
    List<Minister> getMinisterByStep(@Param("dutieId") Integer dutieId);

在对应的映射文件中实现Sql语句,采用resultMap自定义映射。

<!--    Minister getMinisterByStep(@Param("dutieId") Integer dutieId);-->
    <select id="getMinisterByStep" resultMap="MinisterByStep">
        select *from t_minister where minister_dutie=#{dutieId}
    </select>
    <resultMap id="MinisterByStep" type="Minister">
        <id property="id" column="id"></id>
        <result property="ministerName" column="minister_name"></result>
        <result property="age" column="age"></result>
        <result property="gender" column="gender"></result>
        <result property="ministerDutie" column="minister_dutie"></result>
        <association property="dutie" select="com.review.mybaties.mapper.DutieMapper.getDutieByDutieId" column="minister_dutie">
        </association>
    </resultMap>

上述映射文件中association标签中的property="dutie"属性的value是Minister类的属性名,select的value定位分步查询第二步的方法位置,column的属性值是实体类Minister对应表的字段名minister_dutie,也是传给第二步查询参数的值。

3.4.1 延迟加载

分步查询的优点是可以实现延迟加载,如果要开启延迟加载需要在MyBatis的核心配置文件的settings的子标签setting的name属性设置为lazyLoadingEnabled,value值为true,默认值为false关闭延迟加载;设置lazyLoadingEnabled后,还需设置aggressiveLazyLoading开启按需加载,当开启时,任何方法的调用都会加载该对象的所有属性。否则,每个属性会按需加载,aggressiveLazyLoading的默认值为false开启按需加载。

    <settings>
<!--        开启延迟加载-->
        <setting name="lazyLoadingEnabled" value="true"/>
<!--        开启按需加载-->
        <setting name="aggressiveLazyLoading" value="false"/>
    </settings>

对于【3.4】的操作 ,如果输出的结果不包含dutie属性,则程序仅仅执行第一步,不会执行分步查询第二步。除非输出结果包含dutie属性,程序才会执行分步查询第二步。

值得注意的是不是所有的分步加载都需要延迟加载,对于不需要延迟加载的分布操作,可以在association标签中设置fetchType属性的值,value为eager时,为立即加载,不支持延迟加载;为lazy时可以延迟加载。

如下resultMap自定义映射,分步查询支持延迟加载。

    <resultMap id="MinisterByStep" type="Minister">
        <id property="id" column="id"></id>
        <result property="ministerName" column="minister_name"></result>
        <result property="age" column="age"></result>
        <result property="gender" column="gender"></result>
        <result property="ministerDutie" column="minister_dutie"></result>
        <association property="dutie" 
fetchType="lazy" select="com.review.mybaties.mapper.DutieMapper.getDutieByDutieId" column="minister_dutie">
        </association>
    </resultMap>

4、一对多映射

4.1 前置工作

在Dutie类中添加一个private List<Minister> minister属性,添加对应的GET和SET方法,重写toString方法。

处理一对多的关系需要使用resultMap中的子标签collection,collection中的属性 ofType:设置collection标签所处理的集合属性中存储数据的类型。

4.2 级联方式处理映射关系

在DutieMapper接口中创建getAllMinisterByDutieId(@Param("dutieId") Integer dutieId)方法,方法的返回值类型是Dutie类型,采用@Param注解的方式获取参数。

    //根据部门dutie_id查询该部门所有员工
    Dutie getAllMinisterByDutieId(@Param("dutieId") Integer dutieId);

在映射文件中实现Sql语句,采用resultMap自定义映射。

<!--    Dutie getAllMinisterByDutieId(@Param("dutieId") Integer dutieId);-->
    <select id="getAllMinisterByDutieId" resultMap="MinisterByDutieId">
        select * from t_dutie d left join t_minister m on d.dutie_id=m.minister_dutie where d.dutie_id=#{dutieId}
    </select>
    <resultMap id="MinisterByDutieId" type="Dutie">
        <id property="dutieId" column="dutie_id"></id>
        <result property="dutieName" column="dutie_name"></result>
        <collection property="minister" ofType="Minister" >
            <id property="id" column="id"></id>
            <result property="ministerName" column="minister_name"></result>
            <result property="age" column="age"></result>
            <result property="gender" column="gender"></result>
            <result property="ministerDutie" column="minister_dutie"></result>
        </collection>
    </resultMap>

4.3 分步查询

目标:使用分步查询查询官职信息,人员信息。

分步查询的实质就是执行两条Sql语句,在DutieMapper的映射文件中使用分步查询之前需要实现MinisterMapper接口中人员信息的查询方法。

下面是实现MinisterMapper接口中人员信息查询方法。

    //根据ministerDutie查询人员信息,分步查询第二步
    List<Minister> getMinisterByMinisterDutie(@Param("ministerDutie") Integer ministerDutie);

在映射文件中实现Sql语句,采用resultMap自定义映射

<!--    List<Minister> getMinisterByMinisterDutie(@Param("ministerDutie") Integer ministerDutie);-->
    <select id="getMinisterByMinisterDutie" resultMap="MinisterMaperr">
        select *from t_minister where minister_dutie=#{ministerDutie}
    </select>
    <resultMap id="MinisterMaperr" type="Minister">
        <id property="id" column="id"></id>
        <result property="ministerName" column="minister_name"></result>
        <result property="age" column="age"></result>
        <result property="ministerDutie" column="minister_dutie"></result>
    </resultMap>

下面在DutieMapper接口中声明getAllMinisterByDutieId(@Param("dutieId") Integer dutieId)方法。

    //根据部门dutie_id查询该部门所有员工,分步查询第一步
    Dutie getAllMinisterByDutieId(@Param("dutieId") Integer dutieId);

在映射文件中实现Sql语句,标签collection表示一个集合,因此需要使用ofType属性指定集合中存储的类型

<!--    Dutie getAllMinisterByStep(@Param("dutieId") Integer dutieId);-->
    <select id="getAllMinisterByStep" resultMap="AllMinisterByStep">
        select * from t_dutie where dutie_id=#{dutieId}
    </select>
    <resultMap id="AllMinisterByStep" type="Dutie">
        <id property="dutieId" column="dutie_id"></id>
        <result property="dutieName" column="dutie_name"></result>
        <collection property="minister" select="com.review.mybaties.mapper.MinisterMapper.getMinisterByMinisterDutie" column="dutie_id">
        </collection>
    </resultMap>

4.3.1 延迟加载

 参考本篇博客的【3.4.1】

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端常用插件推荐

1.MD格式文件 我们经常会遇到md格式文件的编辑和预览&#xff0c;推荐两个插件&#xff1a; uiw/react-markdown-editor&#xff0c;uiw/react-markdown-preview&#xff0c;不通语言应该有对应的版本&#xff0c;这里是react为例子&#xff0c;也是用过其他的组件&#xff0…

一键实现 Oracle 数据整库同步至 Apache Doris

在实时数据仓库建设或迁移的过程中&#xff0c;用户必须考虑如何高效便捷将关系数据库数据同步到实时数仓中来&#xff0c;Apache Doris 用户也面临这样的挑战。而对于从 Oracle 到 Doris 的数据同步&#xff0c;通常会用到以下两种常见的同步方式&#xff1a; OGG/XStream/Lo…

JAVA基础-02实例变量和类变量区别

0x00 类变量 类变量&#xff08;Class Variables&#xff09;&#xff0c;也称为静态变量&#xff08;Static Variables&#xff09;&#xff0c;是在类级别声明的变量&#xff0c;与类的所有实例共享相同的值。与实例变量不同&#xff0c;类变量不属于对象的特定实例&#xf…

韦东山lcd驱动

RGB 接口的 TFT-LCD 驱动 芯片集成了显存&#xff08;ddr、SDRM&#xff09;和控制器 一个像素点的颜色使用 24位表示&#xff0c;这样的话硬件对应数据引脚有24个 LCD硬件模型 RGB 传输数据 HSYNC 行同步 VSYNC 帧同步 DE 使能有效 declock 移动一个像素&#xff08;频率…

简述docker的网络模式

Docker 提供了多种网络模式&#xff0c;用于控制容器之间以及容器与主机之间的网络通信。以下是 Docker 的一些常见网络模式 briage模式&#xff1a; docker容器启动时默认就是该模式,在该模式下&#xff0c;docker容器会连接到一个名为docker0的虚拟以太网桥上&#xff0c;通…

【pytorch】Unfold和Fold的互逆操作

1. 参数定义 Unfold https://pytorch.org/docs/stable/generated/torch.nn.Unfold.html#torch.nn.Unfold Fold https://pytorch.org/docs/stable/generated/torch.nn.Fold.html#torch.nn.Fold 注意&#xff1a;参数当中的padding是在四周边补零&#xff0c;而当fold后的尺寸…

AMBA总线协议(8)——AHB(六):分割传输

一、前言 在之前的文章中&#xff0c;我们重点介绍了AHB传输的仲裁&#xff0c;首先介绍了仲裁相关的信号&#xff0c;然后分别介绍了请求总线访问&#xff0c;授权总线访问&#xff0c;猝发提前终止&#xff0c;锁定传输和默认主机总线&#xff0c;在本文中我们将继续介绍AHB的…

生信豆芽菜-单样本GSEA分析

网址&#xff1a;http://www.sxdyc.com/gradeSsgsea 1、数据准备 第一个文件&#xff1a;表达谱数据 第二个文件&#xff1a;功能基因集 2、提交后&#xff0c;等待运行成功即可下载 当然&#xff0c;如果不清楚数据是什么样的&#xff0c;可以选择下载我们的示例数据&a…

【报错解决】:DataGrip连接Mysql报08S01解决方法

DataGrip连接Mysql报08S01解决方案 报错 [08S01]Communications link failureThe last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. No appropriate protocol (protocol is disabled or ciph…

Ubuntu Touch OTA-2 推出,支持 Fairphone 3 和 F(x)tec Pro1 X

导读UBports 基金会近日宣布为基于 Ubuntu 20.04 LTS (Focal Fossa) 的 Ubuntu Touch 移动操作系统发布并全面提供 OTA-2 软件更新。 Ubuntu Touch OTA-2 在首次 OTA 更新整整四个月后发布&#xff0c;支持新设备&#xff0c;包括 Fairphone 3、F(x)tec Pro1 X 和 Vollaphone X…

跌倒检测,基于YOLOV8S,只依赖OPENCV,支持C++/PYTHON

跌倒检测&#xff0c;只依赖OPENCV&#xff0c;支持C/PYTHON YOLOV8S检测原理&#xff0c;很多CSDN博客已经介绍了&#xff0c;只需要标记数据&#xff0c;然后训练&#xff0c;转换成ONNX模型&#xff0c;然后OPENCV的DNN模块调用&#xff0c;支持C/PYTHON

MySQL数据库面试题汇总

MySQL数据库 1.什么是数据库&#xff1f; 数据库&#xff08;Database&#xff09;是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。&#xff08;简而言之&#xff0c;用来存储大量数据的&…

Java【手撕双指针】LeetCode 11. “盛水最多的容器“, 图文详解思路分析 + 代码

文章目录 前言一、盛水最多的容器1, 题目2, 思路分析3, 代码展示 前言 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: &#x1f4d5; JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习图书管理系统等 &#x1f4d7; Java数据结构: 顺序表…

冠达管理:大盘金针探底 数据要素板块掀涨停潮

快速回调后&#xff0c;大盘走出金针探底走势。 沪指周二高开震动&#xff0c;午后指数刷新本轮回调新低后抄底资金加快流入&#xff0c;推动指数快速翻红&#xff0c;并重回3100点整数关口上方&#xff0c;但未能进一步向5日均线挨近。深成指同样是高开震动午后探底上升&#…

网约车接单神器:智能化技术与出行服务的完美结合

随着移动互联网的迅猛发展&#xff0c;网约车行业成为现代出行方式的主流之一。为了提高用户体验和服务效率&#xff0c;网约车接单神器应运而生。本文将探讨网约车接单神器的专业性、思考深度和逻辑性&#xff0c;以及其与智能化技术和出行服务的完美结合。 一、引言&…

Jobs Portal求职招聘系统源码v3.5版本

Jobs Portal求职招聘系统 是为求职者和公司发布职位而开发的交互式求职招聘源码。它使求职者能够发布简历、搜索工作、查看个人工作列表。 它将提供各种公司在网站上放置他们的职位空缺资料&#xff0c;并且还可以选择搜索候选人简历。 除此之外&#xff0c;还有一个管理模块供…

成功解决SQL 错误 [22000]: 第3 行附近出现错误: 试图修改自增列[ID](达梦数据库)

当我们使用工具来手动修改自增列的自增ID时&#xff0c;可能会报如下异常 SQL 错误 [22000]: 第3 行附近出现错误:试图修改自增列[ID] 解决办法&#xff1a; 可以使用SQL语句来修改 ALTER TABLE "fdw"."SYSTEM_DICT_TYPE" DROP IDENTITY; UPDATE "f…

问道管理:多少钱可以申购新股?

随着中国股市的不断发展&#xff0c;越来越多的人开端进入投资领域。而申购新股是投资中的一种常见方法。那么&#xff0c;多少钱能够申购新股呢&#xff1f;这个问题并不简略&#xff0c;需求从多个视点来剖析。 首先&#xff0c;需求了解什么是申购新股。申购新股&#xff0c…

IGBT基本工作原理及IGBT的作用是什么?

IGBT 今天我们一起来了解关于IGBT&#xff08;绝缘栅双极性晶体管&#xff09;芯片。在过去的几十年中&#xff0c;我们生活的每个角落都离不开能源的驱动。然而&#xff0c;传统的功率晶体管却受限于一些方面不足。幸运的是&#xff0c;IGBT芯片的出现彻底改变了这一局面。 …

管理系统用户登录功能

一、前言 任何一个管理信息系统都会有登录功能。我们简单可以通过用户名加密码加验证码进行登录。但是就是一个这样的简单功能却涉及的要求很多。 比如对账号的要求&#xff0c;对密码复杂度的要求&#xff0c;对登录时长的要求&#xff0c;对密码有效期的要求&#xff0c;对登…