剑指Offer(更新)之SSM框架(三)

1.什么是MyBatis的接口绑定,有什么好处?

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

2.什么情况用注解,什么情况用xml绑定?

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

3.MyBatis的核心处理类叫什么?

SqlSession

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

映射键值对即可

<result column="title" property="title" javaType="java.lang.String"/>

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

5.MyBatis的好处?

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

6.MyBatis配置一对多?

<collection property="topicComment" column="id" ofType="com.tmf.bbs.pojo.Comment" select="selectComment" />

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

7.MyBatis配置一对一?

<association property="topicType" column="topics_type_id" javaType="com.tmf.bbs.pojo.Type" select="selectType"/>

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

8.${ }和#{ }的区别?

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

9.获取上一次自动生成的主键值?

select last _insert_id()

10.MyBatis如何分页,分页原理?

  • RowBounds对象分页
  • 在Sql内直接书写,带有物理分页

11.MyBatis工作原理?

  • 通过SqlSessionFactoryBuilder从mybatis-config.xml配置文件中构建出SqlSessionFactory。
  • SqlSessionFactory开启一个SqlSession,通过SqlSession实例获得Mapper对象并且运行Mapper映射的Sql语句。
  • 完成数据库的CRUD操作和事务提交,关闭SqlSession。
    剑指Offer(更新)之SSM框架(三)_第1张图片

你可能感兴趣的:(剑指Offer)