SpringBoot工程中MyBatis框架的应用
Posted 六一
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot工程中MyBatis框架的应用相关的知识,希望对你有一定的参考价值。
MyBatis 概述
1)优秀的持久层框架?(持久层:负责将内存中的对象存储到数据库的那一层对象(DAO).
2)最大的优势? (能够低成本的快速实现数据库中的数据操作)
2.1)开源 (免费-成本低)
2.2)简单 (操作步骤,参数映射,结果映射)
2.4)灵活 (动态SQL-可以更好适配不同需求-for,if,...)
2.5)稳定 (不会三天两头出错)
2.MyBatis框架的应用架构?
1)DAO (自己写的数据访问对象-这个对象中要调用mybatis规范-SqlSession)
2)MyBatis API(规范,规范的实现-封装了JDBC操作)
3)JDBC API (规范-Java官方定义)
4)Driver(JDBC规范的实现-数据库厂商提供其驱动)
1)如何理解SqlSession?(mybatis中实现与数据库会话的一个入口对象)
2)测试过程中SqlSession规范的具体实现是谁?(SqlSessionTemplate)
3)测试过程中我们自己创建SqlSessionFactory对象了吗?(没有,springboot工程底层创建-开箱即用)
4)SqlSession对象获取连接时,连接来自哪里?(HikariDataSource关联的连接池对象)
Bug?
1)IllegalArgumentException (Mapped Statement Collections does not contains .....)
MyBatis框架为我们的接口创建实现类?
在GoodsDao接口上添加@Mapper注解或者在启动类上添加
@MapperScan("dao接口所在包")
1)@Mapper注解的作用是什么?
描述数据逻辑层接口,告诉mybatis框架这个接口的实现类,由mybatis创建,
并将其实现类的对象交给spring管理,Spring会为他管理的这个bean起个名字
,默认为接口名,然后首字母小写。
2)MyBatis为我们的Dao接口创建的实现类及其方法内部做了什么?
a)获取sqlSession对象
b)获取sql映射的key信息(namespace,elementId)
c)基于statement获取sql映射信息(底层是存储在了MappedStatement对象中)
d)基于sqlsession以及sql实现与数据库的会话。
3)数据层接口(XxxDao)可以有多个实现类吗?(可以,但是需要时注入那个需要我们进行设计)
Bug?
1.BindingException (mybatis绑定异常)
1)业务类中使用的日志API是谁?(org.slf4j.Logger)
2)日志API的应用中使用到了什么设计模式?(门面模式)
3)你了解哪些日志的级别吗?(trace,debug,info,error)
4)你知道日志输出时底层为什么要定义日志级别吗?(便于对日志行为进行打开,关闭操作)
5)日志输出时"{}"作用是什么?(占位符,类似sql中的?)
6)日志可以记录到文件吗?如何配置?(可以,logging.file.path)
7)为什么要将日志的记录放到商品业务逻辑对象中?(日志记录本身就属于一个业务)
以上是关于SpringBoot工程中MyBatis框架的应用的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot 整合其他框架 -- SpringBoot整合Mybatis
SpringBoot示例教程MySQL与Mybatis基础用法
Java之Spring Boot入门到精通IDEA版SpringBoot整合其他框架Junit,Redis,MyBatis(一篇文章精通系列)中