mybatis 相关面试题

https://blog.csdn.net/a745233700/article/details/80977133

1. 简单介绍一下mybatis和hibernate有啥区别

mybatis

mybatis 是一种半orm(对象关系映射)框架,底层使用的jdbc框架,使用上的特点,支持原生sql,在xml文件里面拼装sql语句执行获得结果
优势:

  1. xml提供标签方便编写复杂sql,而且编写灵活
  2. 相比于hibernate,免除简历table和java 类的对应关系,减少了资源开销,速度快

hibernate

hibernate 是一种orm 框架,使用java类和table建立映射关系,通过操作java对象的方式来,进行数据表数据的增删改查。

2. mybatis xml 有哪些标签

select,insert,update,delete ,sql,foreach,if,map等

Mybatis动态sql有什么用?执行原理?有哪些动态sql?

Mybatis动态sql可以在Xml映射文件内,以标签的形式编写动态sql,执行原理是根据表达式的值 完成逻辑判断并动态拼接sql的功能。

Mybatis提供了9种动态sql标签:trim | where | set | foreach | if | choose | when | otherwise | bind。

3. mybatis 如何实现数据表的字段和java 类的关联

使用别名的方式,注意查询出的字段名称必须和类中字段名称保持一致

 <sql id="leaveColumns">
		a.*,
		u.id AS "createBy.id",
		u.name AS "createBy.name",
		o.id AS "createBy.office.id",
		o.name AS "createBy.office.name"
	</sql>

使用resultMap的方式在xml 配置文件中进行关联

   <resultMap type=”me.gacl.domain.order” id=”orderresultmap”>
        <!–用id属性来映射主键字段–>
        <id property=”id” column=”order_id”>
 
        <!–用result属性来映射非主键字段,property为实体类属性名,column为数据表中的属性–>
        <result property = “orderno” column =”order_no”/>
        <result property=”price” column=”order_price” />
    </reslutMap>

4. mybatis 如何实现分页

实现方案,定义一个Page类,定义好相关的pageNo,pageSize,调用的函数及其他相关的信息

5. mybatis 如何实现批量

mybatis 使用 foreach 标签 拼装相关的sql 实现 批量处理

根据具体数据库的类型,进行拼装sql

6. mybatis 如何实现关联关系

一般可以写sql ,所以关联关系可以直接通过sql 直接实现

当然也可以通过assoation 进行字段的进行关联

7. mybatis 缓存

mybatis 一般有2级缓存

mybatis 一级缓存 自动开启

mybatis 二级缓存

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

#{}是预编译处理,${}是字符串替换。

Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;

Mybatis在处理 时 , 就 是 把 {}时,就是把 {}替换成变量的值。

使用#{}可以有效的防止SQL注入,提高系统安全性。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值