https://blog.csdn.net/a745233700/article/details/80977133
1. 简单介绍一下mybatis和hibernate有啥区别
mybatis
mybatis 是一种半orm(对象关系映射)框架,底层使用的jdbc框架,使用上的特点,支持原生sql,在xml文件里面拼装sql语句执行获得结果
优势:
- xml提供标签方便编写复杂sql,而且编写灵活
- 相比于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注入,提高系统安全性。