Mapper XML使用

如果要写复杂的sql语句,使用xml写自定义SQL比较合适。

数据库:Oracle

步骤

1、controller.java文件

    /**
     * 根据人员id获取人员信息
     *
     * @param ids
     * @return
     */
    @PostMapping("/getUserListByIds")
    public List<TrainUserEntity> getUserListByIds(List<String> ids) {
        return trainService.getUserListByIds(ids);
    }

2、service.java文件

   /**
     * 根据人员id查询人员信息
     *
     * @param ids
     * @return
     */
    List<TrainUserEntity> getUserListByIds(List<String> ids);

3、mapper.java文件

在resource文件夹-mapper文件夹(没有则创建)下,增加xml文件(此处使用TrainMapper.xml)
在这里插入图片描述
在这里插入图片描述

在TrainMapper.java文件中,增加以下代码:

 /**
     * 根据人员id查询人员信息
     *
     * @param ids
     * @return
     */
    List<TrainUserEntity> getUserListByIds(@Param("ids") List<String> ids);

这个时候代码会报错,
在这里插入图片描述
此时直接点击Generate statement,就会自动在对应的TrainMapper.xml中生成对应方法的xml语句(SQL语句是空的)。
根据自己的业务完善sql语句。
在这里插入图片描述

4、serviceImpl.java文件

在TrainServiceImpl.java文件中,调用mapper.xml的sql语句方法。
在这里插入图片描述

使用XML自定义SQL语句

1、简单查询

在这里插入图片描述

   <select id="getByName" resultMap="userEntityMap">
        select * from user where user_name = #{name}
    </select>

2、模糊查询-LIKE

  <select id="getByName" resultMap="userEntityMap">
        select *
        from train_user
        where user_name LIKE CONCAT('%', CONCAT(#{name}, '%'))
    </select>

3、IN

in后括号中的参数个数有限制,Oracle 9i 中个数不能超过256,Oracle 10g个数不能超过1000。
此处的解决方案:对参数进行处理,分成多个in,其中每个in列表中参数都小于1000,

在这里插入图片描述

 <!--    getUserListByIds:对应mapper文件的方法名-->
    <!--    resultType:结果的返回类型-->
    <select id="getUserListByIds" resultType="com.train.mybatisplus.domain.TrainUserEntity">
        select * from user
        <where>
            <!--ids对应mapper方法的入参名称-->
            <if test='ids != null and ids.size() > 0'>
                AND id IN
                <foreach index="index" collection="ids" item="userid" open="(" separator="," close=")">
                    <if test="(index % 999) == 998">
                        NULL) OR id IN (
                    </if>
                    #{userid}
                </foreach>
            </if>
        </where>
    </select>

生成SQL:
在这里插入图片描述
结果:
在这里插入图片描述

### 创建或自动生成 MyBatis Mapper XML 文件 #### 使用IDEA手动创建MyBatis Mapper XML文件 为了在IntelliJ IDEA中创建一个新的`mapper.xml`文件,可以遵循特定的设置流程[^4]。通过点击 `File -> Settings` 进入配置界面,接着添加新的文件模板来简化这一过程。具体操作是在弹出窗口中的`+`号按钮处新建一个模板,指定`.xml`作为后缀名,并提供一个易于辨识的名字。对于内容部分,则应填充标准的MyBatis Mapper XML声明: ```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"> <mapper namespace=""> <!-- 此处填写具体的命名空间 --> </mapper> ``` 此方法允许开发者快速建立基础结构并着手定义所需的SQL映射。 #### 自动生成MyBatis Mapper XML文件 当涉及到自动化生成这些资源时,通常依赖于集成开发环境(IDE)插件或是项目构建工具的支持。例如,在某些场景下可以通过Maven或Gradle配合相应的插件实现自动化的脚本化生成。此外,一些高级IDE如IntelliJ IDEA也提供了内置支持或者是第三方插件能够帮助完成这项工作[^1]。这类工具往往能依据现有的数据库模式来自动生成初步版本的Mapper接口及其对应的XML映射文档,极大地提高了工作效率。 #### 利用代码生成功能减少重复劳动 考虑到MyBatis的核心优势之一即为显著降低手写持久层代码的工作量,其设计初衷便是让程序员不必再纠结于繁琐的数据访问逻辑之中[^2]。因此,利用好官方提供的或者社区贡献的各种辅助工具来进行批量生产标准化的Mapper XML文件是非常值得推荐的做法。这不仅有助于保持项目的整洁度,同时也降低了因人为疏忽而引入错误的风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值