一、mybatis:
1、当实体类中的属性名和表中的字段名不一样 ,怎么办
1、使用as关键字起别名
-
<sql id="Base_Column_List"> -
<!--数据库种表的字段 as 实体类属性--> -
uid as id, userName as name, age as age, -
email as email, create_time as createTime, -
update_time as updateTime, is_deleted as deleted -
</sql>
2、使用resultMap标签映射:column的值为数据库中的字段名,property的值为实体类中的属性名
-
<!-- type:指定需要映射的实体类 --> -
<resultMap id="userMap" type="User"> -
<!-- column:数据库表中的字段名 --> -
<!-- property:实体类中的属性 --> -
<id column="uid" property="id" /> -
<result column="userName" property="name" /> -
<result column="age" property="age" /> -
<result column="email" property="email" /> -
<result column="create_time" property="createTime" /> -
<result column="update_time" property="updateTime" /> -
<result column="is_deleted" property="deleted" /> -
</resultMap> -
<select id="getUserList" resultMap="userMap"> -
select uid,userName,age,email,create_time,update_time,is_deleted from t_user; -
</select>
![]()
2、#{}和${}的区别是什么
#{}是预编译参数占位符,可以防止sql注入。
${}是字符串替换占位符,无法防止sql注入。
sql注入:sql注入是指攻击者向数据库中插入恶意的sql语句,从而来获取或篡改数据库中的数据。
3、Mybatis 分页插件的原理是什么
MyBatis 分页插件的原理是通过拦截 SQL 执行过程,在执行前和执行后对 SQL 进行改写,添加分页相关的语句,实现数据库分页查询功能。
具体原理包括:
1、拦截器:MyBatis 分页插件通过拦截器拦截 Executor 的 query 方法,在执行 SQL 之前和之后进行处理。
2、SQL 改写:在执行前,插件会将原始 SQL 语句改写成分页查询语句,通常是在原始 SQL 后面添加 LIMIT 或 OFFSET 等关键字,限制返回结果的数量。
3、参数处理:插件还会处理分页相关的参数,如页码和每页数据量,以便构建正确的分页查询语句。
4、结果处理:在执行后,插件会对查询结果进行处理,将结果封装成分页对象,包括总记录数、当前页码、每页数据量等信息。
通过以上步骤,MyBatis 分页插件实现了对 SQL 查询结果的分页处理,使得开发者可以方便地进行数据库分页查询。
4、一对一、一对多的关联查询
1、一对一使用association标签
2、一对多使用collection标签
案例:一个商品对应一个价格,一个价格对应多个商品
实体类:
篇幅限制下面就只能给大家展示小册部分内容了。包括了:Java面试、Spring、JVM、MyBatis、Redis、MySQL、并发编程、微服务、Linux、Springboot、SpringCloud、MQ、Kafka 面试专题
需要全套面试笔记的【点击此处即可】即可免费获取
-
public class Product { -
private Long id; -
private String name; -
private Price price; -
// Getters and setters -
}
-
public class Price { -
private Long id; -
private Double value; -
private List<Product> products; -
// Getters and setters -
}
xml:
-
<select id="selectProductWithPrice" resultMap="productWithPrice"> -
SELECT p.id AS product_id, p.name, pr.id AS price_id, pr.value -
FROM product p -
LEFT JOIN price pr ON p.id = pr.product_id -
</select> -
<resultMap id="productWithPrice" type="Product"> -
<id property="id" column="product_id"/> -
<result property="name" column="name"/> -
<association property="price" javaType="Price"> -
<id property="id" column="price_id"/> -
<result property="value" column="value"/> -
</association> -
</resultMap>
-
<select id="selectPriceWithProducts" resultMap="priceWithProducts"> -
SELECT pr.id AS price_id, pr.value, p.id AS product_

最低0.47元/天 解锁文章
2876

被折叠的 条评论
为什么被折叠?



