数据库查询:通过两字段其中一个查询信息

根据姓名Name或者编号Code获取Student信息

一、SQL语句

sql 复制代码
select * from student_info
where concat(ifnull(student_code,''),ifnull(student_name,''))like concat('%' ,'具体姓名或学号','%')

二、MyBatis的XML映射代码定义了一个查询方法

XML 复制代码
 <select id="selectStudentByNameOrCode" parameterType="String" resultMap="StudentResult">
        <include refid="selectStudent"/>
        where concat(ifnull(student_code ,''),ifnull(student_name ,'')) like concat('%',#{flag},'%') and status=0
    </select>

这段代码是MyBatis映射文件中的一段SQL映射配置,用于定义一个名为selectStudentByNameOrCode的查询操作。下面是各部分的详细解释:

<select>标签:定义了一个SQL查询语句,其属性说明如下:

id="selectStudentByNameOrCode":这是查询操作的唯一标识符,可以在MyBatis的接口映射或直接在Java代码中通过这个ID来调用这个查询。

parameterType="String":指定了传入此查询方法的参数类型,这里是字符串类型(String),意味着查询时会接收一个字符串参数。

resultMap="StudentResult":指定了查询结果映射到Java对象的方式,通过引用名为StudentResult的结果映射来处理查询结果,将数据库字段映射到Java对象的属性上。

<include refid="selectStudent"/>:这是MyBatis中的动态SQL片段引用,表示将另一个映射文件中定义的SQL片段(ID为selectStudent)插入到此处。这个片段通常包含一些通用的SELECT字段列表或其他重复使用的SQL代码,以提高代码的复用性和可维护性。

where子句:定义了查询的条件。

concat(ifnull(student_code ,''),ifnull(student_name ,'')) like concat('%',#{flag},'%'):构建了一个模糊查询条件,用于匹配student_code和student_name的组合。这里使用了concat函数来连接这两个字段的值(如果它们为NULL,则替换为空字符串),然后使用like操作符配合通配符%来匹配传入的参数#{flag}。这意味着查询会找出student_code和student_name连接起来的字符串中包含flag值的记录。

and status=0:添加了额外的查询条件,限制结果中status字段的值必须为0。

综上所述,这段配置定义了一个查询操作,用于根据传入的flag字符串模糊搜索那些状态为0(假设0表示某种可用状态)且student_code与student_name组合起来包含该flag值的库存记录,并将查询结果映射到StudentResult定义的Java实体类上。

三、mapper

java 复制代码
    /**
     * @return
     * @Author lyy
     * @Description //通过姓名或编号获取信息
     * @Param
     **/
    List<Student> selectStudentByNameOrCode(@Param("flag") String flag);
相关推荐
仍然.4 小时前
Redis---缓存
数据库·redis·缓存
Aloudata4 小时前
LookML 语义模型 vs 企业级独立语义层:BI 建模语言能否承担企业语义底座?
数据库·人工智能·数据分析·数据资产·dataagent
paopaokaka_luck4 小时前
基于springboot+vue的智慧家政管理系统(AI问答、 WebSocket实时沟通、ECharts运营分析、订单规则与服务追踪)
java·javascript·spring boot·数据分析·echarts·mybatis
细嗅蔷薇@4 小时前
排序和分⻚(order by 、limit)
数据库·oracle
wdfk_prog4 小时前
LWIP教程 09:从 `tcp_slowtmr()` 到 Fast Retransmit——TCP 超时重传与重复 ACK
服务器·网络·数据库·网络协议·tcp/ip
逸模4 小时前
BIM在连锁餐饮装修中的应用:不只是画三维图
大数据·数据库·人工智能·物联网·建模
梦想平凡4 小时前
棋牌游戏技术实战(五):从对局事件重新执行规则,核对棋盘和最终状态
数据库·游戏·oracle
白露与泡影5 小时前
Oracle AI Database 26ai RAC 部署步骤、关键命令与一键脚本
数据库·人工智能·oracle
天天喝旺仔5 小时前
MySQL 索引原理与慢查询优化实战:从 B+ 树到执行计划调优
数据库·sql·mysql·性能优化
liulilittle6 小时前
Linux 下 select 测试函数
linux·服务器·网络·数据库·c++·select·c