Mybatis专项

参考: https://blog.csdn.net/eaphyy/article/details/71190441
https://blog.csdn.net/a745233700/article/details/80977133

  1. #{}和KaTeX parse error: Expected 'EOF', got '#' at position 15: {}的区别是什么? 答: #̲{}是预编译处理,{}是字符串替换,
    Mybatis处理#{}会将sql中的#{}替换为?号,处理 时 会 把 {}时会把 {}替换成变量值,
    使用#{}可以有效的防止SQL注入

  2. 实体类中的属性名和表中字段不一样怎么办?
    答①:在sql语句中定义字段名别名,让字段名的别名和实体类的属性名一致
    ②:通过映射字段名和实体类属性名

  3. Mybatis与Hibernate有哪些不同?
    ①:Mybatis不是一个完全的ORM框架,需要自己编写sql语句
    ②:Hibernate对象/关系映射能力强,数据库无关性好,Mybais与数据库相关不能随意切换数据库
    ③:Mybatis直接编写原生态sql,灵活性比较高

  4. 如何在Mapper中传入多个参数
    ①:使用 #{0},#{1} ----#{0}代表接收的是Mapper中的第一个参数,#{1}代表Mapper中第二参数
    ②:使用 @param 注解 — selectuser(@param(“username”) string username)
    ③:多个参数封装成map

  5. 在Xml文件中,常用标签有那些?
    select| insert|updae|delete|resultMap|parameterMap|sql|include|selectKey 动态sql的9个

  6. 什么是动态sql?
    ① Mybatis动态sql而一再Xml文件内,以标签的方式编写动态sql,执行原理:根据表达式的值,完成逻辑判断,并动态拼接sql的功能
    ② 常用的标签: trim | where | set | foreach | if | choose | when | otherwise | bind。

  7. ResultMap和ResultType的差别?
    两者都是表示查询结果集与java对象之间的一种关系,处理查询结果集,映射到java对象。
    resultMap:表示将查询结果集中的列一一映射到bean对象的各个属性。
    ResultType:表示的是bean中的对象类,此时可以省略掉resultMap标签的映射,但是必须保证查询结果集中的属性 和 bean对象类中的属性是一一对应的,此时大小写不敏感,但是有限制。

  8. Mybatis的一级缓存和二级缓存?
    ①:Mybatis一级缓存是指SQLSession,一级缓存的作用域是SQlSession, Mabits默认开启一级缓存。
    同一个SQLSession执行相同的查询语句时,第一次会去查数据库,并写在缓存中,第二次直接冲缓存中读取
    SqlSession执行insert、update、delete等操作commit后会清空该SQLSession缓存
    ②: 二级缓存是mapper级别的,Mybatis默认是没有开启二级缓存的。
    第一次调用mapper下的SQL去查询用户的信息,查询到的信息会存放代该mapper对应的二级缓存区域。 第二次调用namespace下的mapper映射文件中,相同的sql去查询用户信息,会去对应的二级缓存内取结果。

  9. mapper接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗?
    工作原理是JDK动态代理,Mybatis运行时会使用JDK动态代理为Mapperi接口生成proxy对象
    代理对象会拦截接口方法,转而执行MappedStatement所代表的sql,然后将sql执行结果返回
    Dao接口里的方法,是不能重载的,因为是全限名+方法名的保存和寻找策略。

  10. Mybatis使用的数据库连接池?
    默认使用 PooledDataSource 常用阿里的druid连接池

  11. JDBC工作流程
    JDBC操作步骤: (1)加载驱动 (2)建立连接 (3)创建SQL语句并执行 (4)释放资源

其他参考: https://blog.csdn.net/xy3233/article/details/86661704

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值