1、Ibatis和Mybatis?

Ibatis:2010年,Apache的Ibatis框架停止更新,并移交给了Google 团队,同时更名为Mybatis。
Mybatis:Ibatis的升级版本。

2、什么是Mybatis的接口绑定,有什么好处?

Mybatis实现了Dao接口与xml映射文件的绑定,自动为我们生成接口的具体实现,使用起来变得更加省事和方便。

3、什么情况用注解,什么情况用xml绑定?

注解使用情况:Sql语句简单时
xml绑定使用情况:xml绑定(@RequestMap用来绑定xml文件)

4、Mybatis在核心处理类叫什么?

SqlSession

5、查询表名和返回实体Bean对象不一致,如何处理?

映射键值对即可

column:数据库中表的列名
property:实体Bean中的属性名

6、Mybatis的好处?

把sql语句从Java中独立出来
封装了底层JDBC,API的的调用并且能够将结果集自动转换成JavaBean对象,简化了java数据库的重复工作。
自己编写SQL语句,更加灵活。
入参无需用对象封装(或者map封装),使用@param注解

7、Mybatis配置一对多?


property:属性名
column:共同列
ofType:集合中元素的类型
select:要连接的查询

8、Mybatis配置一对一?


property:属性名
select:要连接的查询
column:共同列
javaType:集合中元素的类型

9 、${} 和 #{}的区别?

${}:简单的字符串替换,把${}直接替换成变量的值,不做任何转换,这种事取值以后再去编译SQL语句。
#{}:预编译处理,sql中的#{}替换成?,补全预编译语句,有效防止sql语句注入,这种取值是编译好sql语句再取值。
总结:一般用#{}来进行列的代替

使用#{}语法,MyBatis会产生PreparedStatement语句中,并且安全的设置PreparedStatement参数,这个过程中MyBatis会进行必要的安全检查和转义。
示例1: 执行SQL:Select from emp where name = #{employeeName} 参数:employeeName=>Smith 解析后执行的SQL:Select from emp where name = ? 执行SQL:Select from emp where name = ${employeeName} 参数:employeeName传入值为:Smith 解析后执行的SQL:Select from emp where name =Smith
说明:

  1. 将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #{user_id},如果传入的值是111,那么解析成sql时的值为order by “111”, 如果传入的值是id,则解析成的sql为order by “id”.

  2. $将传入的数据直接显示生成在sql中。如:order by ${user_id},如果传入的值是111,那么解析成sql时的值为order by 111, 如果传入的值是id,则解析成的sql为order by id.

综上所述,${}方式会引发SQL注入的问题、同时也会影响SQL语句的预编译,所以从安全性和性能的角度出发,能使用#{}的情况下就不要使用${}。
${}在什么情况下使用呢?
有时候可能需要直接插入一个不做任何修改的字符串到SQL语句中。这时候应该使用${}语法。
比如,动态SQL中的字段名,如:ORDER BY ${columnName}

10、获取上一次自动生成的主键值?

select last _insert_id()

11、Mybatis如何分页,分页原理?

RowBounds对象分页
在Sql内直接书写,带有物理分页
https://blog.csdn.net/tuesdayma/article/details/80166361

12、Mybatis工作原理

Mybatis - 图1
原理:
通过SqlSessionFactoryBuilder 从 mybatis-config.xml 配置文件中构建出 SqlSessionFactory。 SqlSessionFactory开启一个SqlSession,通过SqlSession实例获得Mapper对象并且运行Mapper映射的Sql语句。
完成数据库的CRUD操作和事务提交,关闭SqlSession。

Mybatis - 图2

Mybatis - 图3
若有收获,就赏束稻谷吧

0 颗稻谷
kai
01-26 16:58
0
0
分享到:%20%EF%BC%9A%E6%8A%8Adao%E4%BE%9D%E8%B5%96%E6%B3%A8%E5%85%A5%E5%88%B0service%E5%B1%82%EF%BC%8Cservice%E5%B1%82%E5%8F%8D%E8%BD%AC%E7%BB%99action%E5%B1%82%EF%BC%8CSpring%E9%A1%B6%E5%B1%82%E5%AE%B9%E5%99%A8%E4%B8%BABe…)

上一篇

mysql数据库练习题


下一篇

元旦作业