mybatis面试经典十一问

#{}和${}的区别是什么?

实体类中的属性名和表中的字段名不一致怎么处理?

模糊查询like该怎么写

如何执行批量插入

如何获取自动生成的主键

在Mapper中如何传递多个参数

MyBatis中动态SQL有哪些(代码示例)

MyBatis实现一对一和一对多查询(代码示例)

MyBatis是否有延迟加载,如果有如何实现

MyBatis的一级缓存和二级缓存测试(代码示例)

MyBatis如何根据XML文件和Mapper接口生成Mapper对象()

1:#{}是预编译处理,$ {}是字符串替换。
使用 #{} 可以有效的防止SQL注入,提高系统安全性。
2:通过在查询的SQL语句中定义字段名的别名的方式,让字段名的别名和实体类中的属性名一致,这样就可以实现实体类属性和表字段一一对应;
通过来映射字段名和实体类属性名的对应关系
3:CONCAT(’%’,#{question},’%’)
4:
insert into names (name) values (#{value})
然后在service里面循环5:useGeneratedKey设置为true
把 keyColumn 设置为数据库的自增长列名
把 keyProperty 设置为java类接收自增长主键的属性名

6:绑定param或者添加到集合里面
7:
if: 根据条件判断
choose、when、otherwise: 组合使用,选择多个条件中的一个
where: where 元素只会在子元素返回任何内容的情况下才插入 “WHERE” 子句,若子句的开头为 “AND” 或 “OR”,where 元素也会将它们去除
trim: 定制类似 where 标签的功能
set: 用于动态包含需要更新的列,忽略其它不更新的列
foreach: 对集合进行遍历
bind: 允许你在 OGNL 表达式以外创建一个变量,并将其绑定到当前的上下文
script: 要在带注解的映射器接口类中使用动态 SQL,可以使用 script 元素

8:

<collection property="tKey" ofType="com.woniuxy.entity.TKey">
            <result column="kid" property="id"/>
            <result column="kname" property="name"/>
            <result column="block_id" property="blockId"/>
        </collection>
  <association property="tBlock" javaType="com.woniuxy.entity.TBlock">
         <result column="bid" property="id"/>
            <result column="bname" property="name"/>
            <result column="key_id" property="keyId"/>
        </association>
public class TBlock {
    private  int id;
    private  String name;
    private int keyId;
    private  List<TKey> tKey;
    ...
public class TKey {
    private  int  id;
    private  String name;
    private  int blockId;
    private  TBlock  tBlock;
```...

一把锁对应多个钥匙,但是一个钥匙就能开一把锁,这个案例很经典,大家可以试一试
9: mybatis默认没有开启延迟加载,需要在SqlMapConfig.xml中setting配置

```java
<settings>
    <!-- 打开延迟加载的开关 -->
    <setting name="lazyLoadingEnabled" value="true"/>
    <!-- 将积极加载改为消极加载,即延迟加载 -->
    <setting name="aggressiveLazyLoading" value="false"/>
</settings>

10:同一个sqlsession的情况下写一个查询语句,然后用mapper调用这个方法进行查询,写三条查询语句但是请求只发送了一次,一级缓存是默认开启的,二级缓存需要手动开启

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值