没有废话-MySQL,MyBatis 动态参数添加序号值(默认递增或根据内容进行递增)

创建数据

创建表

CREATE TABLE `aml_inst_risk_assess_category`
(
    `id`                    int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
    `dept_id`               int(11)       DEFAULT NULL COMMENT '机构id',
    `dept_name`             varchar(30)   DEFAULT NULL COMMENT '机构名称',
    `is_legal_person`       varchar(10)   DEFAULT NULL COMMENT '是否法人机构',
    `supervision_dept_id`   varchar(10)   DEFAULT NULL COMMENT '监管机构id',
    `supervision_dept_name` varchar(30)   DEFAULT NULL COMMENT '监管机构名称',
    `assessment_category`   varchar(20)   DEFAULT NULL COMMENT '评估类别',
    `assessment_score`      decimal(5, 2) DEFAULT NULL COMMENT '评估得分',
    `assessment_date`       date          DEFAULT NULL COMMENT '评估日期',
    `create_by`             varchar(64)   DEFAULT '' COMMENT '创建者',
    `create_time`           datetime      DEFAULT NULL COMMENT '创建时间',
    `update_by`             varchar(64)   DEFAULT '' COMMENT '更新者',
    `update_time`           datetime      DEFAULT NULL COMMENT '更新时间',
    `remark`                varchar(500)  DEFAULT '' COMMENT '备注',
    PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB
  AUTO_INCREMENT = 18364
  DEFAULT CHARSET = utf8
  ROW_FORMAT = DYNAMIC COMMENT ='机构风险评级类别表';

添加表数据

INSERT INTO aml_yc.aml_inst_risk_assess_category (id, dept_id, dept_name, is_legal_person, supervision_dept_id, supervision_dept_name, assessment_category, assessment_score, assessment_date, create_by, create_time, update_by, update_time, remark) VALUES (1, 25, '宁夏银行股份有限公司', 'Y', '2', '中国人民银行宁夏回族自治区分行', '基础信息', 0.00, '2024-06-11', '1', '2024-06-11 17:21:46', null, null, null);
INSERT INTO aml_yc.aml_inst_risk_assess_category (id, dept_id, dept_name, is_legal_person, supervision_dept_id, supervision_dept_name, assessment_category, assessment_score, assessment_date, create_by, create_time, update_by, update_time, remark) VALUES (2, 25, '宁夏银行股份有限公司', 'Y', '2', '中国人民银行宁夏回族自治区分行', '内控机制建设', 0.00, '2024-06-11', '1', '2024-06-11 17:21:46', null, null, null);
INSERT INTO aml_yc.aml_inst_risk_assess_category (id, dept_id, dept_name, is_legal_person, supervision_dept_id, supervision_dept_name, assessment_category, assessment_score, assessment_date, create_by, create_time, update_by, update_time, remark) VALUES (3, 25, '宁夏银行股份有限公司', 'Y', '2', '中国人民银行宁夏回族自治区分行', '日常监管情况', 0.00, '2024-06-11', '1', '2024-06-11 17:21:46', null, null, null);
INSERT INTO aml_yc.aml_inst_risk_assess_category (id, dept_id, dept_name, is_legal_person, supervision_dept_id, supervision_dept_name, assessment_category, assessment_score, assessment_date, create_by, create_time, update_by, update_time, remark) VALUES (4, 25, '宁夏银行股份有限公司', 'Y', '2', '中国人民银行宁夏回族自治区分行', '风险评估', 0.00, '2024-06-11', '1', '2024-06-11 17:21:46', null, null, null);
INSERT INTO aml_yc.aml_inst_risk_assess_category (id, dept_id, dept_name, is_legal_person, supervision_dept_id, supervision_dept_name, assessment_category, assessment_score, assessment_date, create_by, create_time, update_by, update_time, remark) VALUES (5, 25, '宁夏银行股份有限公司', 'Y', '2', '中国人民银行宁夏回族自治区分行', '风险自评估', 0.00, '2024-06-11', '1', '2024-06-11 17:21:46', null, null, null);
INSERT INTO aml_yc.aml_inst_risk_assess_category (id, dept_id, dept_name, is_legal_person, supervision_dept_id, supervision_dept_name, assessment_category, assessment_score, assessment_date, create_by, create_time, update_by, update_time, remark) VALUES (6, 25, '宁夏银行股份有限公司', 'Y', '2', '中国人民银行宁夏回族自治区分行', '反洗钱监测', 0.00, '2024-06-11', '1', '2024-06-11 17:21:46', null, null, null);
INSERT INTO aml_yc.aml_inst_risk_assess_category (id, dept_id, dept_name, is_legal_person, supervision_dept_id, supervision_dept_name, assessment_category, assessment_score, assessment_date, create_by, create_time, update_by, update_time, remark) VALUES (124, 26, '石嘴山银行股份有限公司', 'Y', '2', '中国人民银行宁夏回族自治区分行', '基础信息', 0.00, '2024-06-11', '1', '2024-06-11 17:21:46', null, null, null);
INSERT INTO aml_yc.aml_inst_risk_assess_category (id, dept_id, dept_name, is_legal_person, supervision_dept_id, supervision_dept_name, assessment_category, assessment_score, assessment_date, create_by, create_time, update_by, update_time, remark) VALUES (125, 26, '石嘴山银行股份有限公司', 'Y', '2', '中国人民银行宁夏回族自治区分行', '内控机制建设', 0.00, '2024-06-11', '1', '2024-06-11 17:21:46', null, null, null);
INSERT INTO aml_yc.aml_inst_risk_assess_category (id, dept_id, dept_name, is_legal_person, supervision_dept_id, supervision_dept_name, assessment_category, assessment_score, assessment_date, create_by, create_time, update_by, update_time, remark) VALUES (126, 26, '石嘴山银行股份有限公司', 'Y', '2', '中国人民银行宁夏回族自治区分行', '日常监管情况', 0.00, '2024-06-11', '1', '2024-06-11 17:21:46', null, null, null);

具体执行SQL

第一种方式(默认递增)

SELECT id,
       (@rn := @rn + 1) AS row_number
FROM
    aml_inst_risk_assess_category,
    (SELECT @rn := 0) AS init_variable

ORDER BY id; -- 或者你需要的任何其他排序条件

第二种方式(根据相同的值进行动态排序)

SET @row_number = 0;
SET @prev_value = NULL;

SELECT
    dept_id,
    IF(@prev_value = dept_id, @row_number, @row_number := @row_number + 1) AS same_value_rank,
    @prev_value := dept_id,
       dept_name
FROM
    aml_inst_risk_assess_category
ORDER BY
    dept_id;

第三种方式(在上边的基础上去掉 SET, 满足在mybatis可以直接使用)

SELECT
    dept_id,
    IF(@prev_value = dept_id, @row_number, @row_number := @row_number + 1) AS same_value_rank,
    @prev_value := dept_id,
    dept_name
FROM
    aml_inst_risk_assess_category,
     (select @row_number := 0,@prev_value := NULL) init_variable
ORDER BY
    dept_id;
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: MyBatis是一个开源的持久层框架,可以很方便地与各种数据库进行交互。动态添加参数MyBatis中非常常见的一种需求,可以根据不同的条件动态添加参数到SQL语句中,提高SQL的灵活性和可复用性。下面以一个简单的查询示例来说明如何动态添加参数。 假设有一个用户表,我们需要根据不同的查询条件查询用户信息。首先,我们可以在Mapper接口中定义一个方法,如下所示: public List<User> searchUser(@Param("name") String name, @Param("age") Integer age); 接下来,在Mapper的XML配置文件中编写SQL语句,如下所示: <select id="searchUser" resultType="User"> SELECT * FROM user WHERE 1=1 <if test="name != null"> AND name = #{name} </if> <if test="age != null"> AND age = #{age} </if> </select> 在这个SQL语句中,我们使用了动态SQL的if语句,根据参数判断是否添加相应的查询条件。参数name和age分别对应Mapper接口中的@Param注解,保证了参数的正确传递和绑定。 当我们调用searchUser方法时,可以根据需要传递不同的参数。例如,如果只需要根据名称查询用户,可以这样调用: List<User> userList = userMapper.searchUser("张三", null); 在这个例子中,我们只传递了name参数,age参数为null,所以只查询到了名称为"张三"的用户信息。 通过动态添加参数,我们可以根据不同的条件组合自由地构建SQL语句,使查询更加灵活和高效。这种灵活性在真实的项目开发中非常有用,可以满足各种复杂的查询需求。 ### 回答2: MyBatis是一个优秀的持久层框架,提供了灵活的参数传递和动态SQL语句的编写方式,可以很方便地实现动态添加参数。 在MyBatis中,可以使用动态SQL标签来实现动态添加参数。常用的动态SQL标签包括<if>、<choose>、<when>和<otherwise>等。 首先,在定义MyBatis的Mapper接口方法时,需要使用@Param注解来声明参数名称。例如: ``` void updateUserInfo(@Param("name") String name, @Param("age") Integer age); ``` 在XML映射文件中,可以使用动态SQL标签来实现根据不同情况动态添加参数。例如: ``` <update id="updateUserInfo"> update user_info <set> <if test="name != null"> name = #{name}, </if> <if test="age != null"> age = #{age}, </if> </set> where id = #{id} </update> ``` 上述代码中,根据传入的参数动态判断是否添加对应的SQL语句片段。如果name参数不为空,则添加name字段更新语句;如果age参数不为空,则添加age字段更新语句。 在使用该方法时,可以根据需要传入相应的参数,只添加需要更新的字段。例如: ``` mapper.updateUserInfo(null, 18); // 只更新age字段 ``` 总结来说,MyBatis通过动态SQL标签的使用,可以很方便地实现动态添加参数的功能。开发者可以根据具体需求,灵活地选择添加哪些参数,减少重复代码的编写。 ### 回答3: Mybatis是一个开源的持久层框架,它可以与Java应用程序无缝集成。在使用Mybatis进行数据库操作时,有时需要动态添加参数来满足不同的查询条件。下面是如何动态添加参数的简单示例。 首先,可以使用动态SQL语句来实现参数动态添加Mybatis提供了一些动态SQL语句的标签,如if、choose、when、otherwise等。可以根据需要使用这些标签来判断条件并添加参数。 例如,假设有一个查询用户信息的方法,可以根据传入的条件动态添加参数。可以定义一个动态SQL语句,根据传入的条件判断是否添加相应的参数。 ``` <select id="getUserList" parameterType="map" resultType="User"> SELECT * FROM user WHERE 1=1 <if test="username != null"> AND username = #{username} </if> <if test="age != null and age > 0"> AND age = #{age} </if> </select> ``` 在上述示例中,通过if标签判断是否传入了username和age参数,如果传入了这些参数,则在SQL语句中添加相应的条件。 使用动态SQL语句后,调用该方法时可以传入不同的参数动态地生成SQL语句。例如: ``` Map<String, Object> params = new HashMap<>(); params.put("username", "张三"); List<User> userList = sqlSession.selectList("getUserList", params); ``` 以上示例中,根据传入的params参数生成相应的SQL语句,根据条件查询满足条件的用户信息。 总而言之,Mybatis提供了动态SQL语句的支持,可以根据需要动态添加参数来构建灵活的SQL语句。可以使用if、choose、when、otherwise等标签来判断条件并添加参数。通过传入不同的参数可以生成不同的SQL语句,以满足不同的查询需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java我跟你拼了

您的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值