01
2020
04

使用Mybatis的mapper接口调用时候有哪些要求?

1) Mapper接口方法名和Mapper.xml中定义的每个SQL的id相同; 2) Mapper接口方法的输入参数类型和mapper.xml中定义的每个sqlparameterType类型相同 ;3) Mapper接口方法的输入输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同 ;4) Mapper.xml文件中的namespace,就是接口的类路径。
01
2020
04

简单的说一下MyBatis的一级缓存和二级缓存?

Mybatis首先去缓存中查询结果集,如果没有则查询数据库,如果有则从缓存取出返回结果集就不走数据库。Mybatis内部存储缓存使用一个HashMap,key为hashCode+sqlId+Sql语句。value为从查询出来映射生成的java对象Mybatis的二级缓存即查询缓存,它的作用域是一个mapper的namespace,即在同一个namespace中查询sql可以从缓存中获取数据。二级缓存是可以跨SqlSession的。
01
2020
04

SqlMapConfig.xml中配置有哪些内容?

SqlMapConfig.xml中配置的内容和顺序如下:properties(属性)settings(配置)typeAliases(类型别名)typeHandlers(类型处理器)objectFactory(对象工厂)plugins(插件)environments(环境集合属性对象)environment(环境子属性对象)transactionManager(事务管理)dataSource(数据源)mappers(映射器)
01
2020
04

MyBatis编程步骤是什么样的?

① 创建SqlSessionFactory② 通过SqlSessionFactory创建SqlSession③ 通过sqlsession执行数据库操作④ 调用session.commit()提交事务⑤ 调用session.close()关闭会话
01
2020
04

Mybatis工作原理?

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

Mybatis如何分页,分页原理?

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

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

select last _insert_id()
01
2020
04

${} 和 #{}的区别?

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

Mybatis配置一对一?

<association property="topicType" select="selectType" column="topics_type_id" javaType="com.tmf.bbs.pojo.Type"/>property:属性名select:要连接的查询column:共同列javaType:集合中元素的类型
01
2020
04

Mybatis配置一对多?

<collection property="topicComment" column="id" ofType="com.tmf.bbs.pojo.Comment" select="selectComment" />property:属性名column:共同列ofType:集合中元素的类型select:要连接的查询