根据姓名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);