目录
1. mybatis映射文件处理特殊字符.
<!--
第一种:转义标签 <
第二种: <![CDATA[sql]]>
-->
<select id="findByMaxMin" resultType="com.ykq.entity.Account">
<![CDATA[select * from account where id >#{min} and id <#{max}]]>
</select>
2. mybatis完成模糊查询。
select * from 表名 where 列名 like '%a%'
(1)使用字符串函数 完成拼接 concat
<select id="findByLike" resultType="com.cmw.entity.Account">
select * from account where name like concat('%',#{name},'%')
</select>
运行结果:
(2) 使用${}
<select id="findByLike" resultType="com.cmw.entity.Account">
select * from account where name like '%${name}%'
</select>
查询结果:
${}实际上是字符串拼接,它不能防止sql注入
而#{}它是预编译,它可以防止sql注入问题,#{}实际使用的PreparedStatement.
3. 联表查询
多对一 : 从多的一方来查询一的一方。
班级表:
学生表:
根据学生id查询学生信息并携带班级信息。
select * from tb_stu s join tb_class c on s.class_id=c.cid where tb_id=#{id}
Student实体类:
package com.cmw.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author 86151
* @Create 2022/6/1 - 16:23
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student {
private int id;
private String name;
private int age;
private String sex;
private Integer classId;
//学生所属的班级
private Clazz clazz;
}
clazz实体类:
package com.cmw.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author 86151
* @Create 2022/6/2 - 16:37
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Clazz {
private Integer cid;
private String cname;
}
studentMapper.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="com.cmw.dao.StudentDao">
<resultMap id="baseMap" type="com.cmw.entity.Student">
<id column="tb_id" property="id"/>
<result column="tb_name" property="name"/>
<result column="tb_age" property="age"/>
<result column="class_id" property="classId"/>