admin管理员组文章数量:1026989
Mybatis修改SQL语句的返回值
- 一次只修改一条语句 成功返回 1
- 一次修改两条及以上语句 成功返回 -1
#{}、${}的区别:
a.
#{任意值}
${value} ,其中的标识符只能是value
b.
#{}自动给String类型加上'' (自动类型转换-预编译处理)
${} 原样输出,但是适合于 动态排序(动态字段-字符串替换)
动态排序:
select stuno,stuname,stuage from student order by ${value} asc/desc
不能带双引号 升序/降序
c.
#{}可以防止SQL注入
${}不防止
${}、#{}相同之处:都可以 获取对象的值 (嵌套类型对象)
异常:Consider defining a bean of type ‘xxx.XXXDao’ in your configuration
开启排错路程
- 检查是否导入依赖
<!-- 连接数据mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
- 检查yml文件是否配置自动扫描实体类及映射
#配置mybatis
mybatis:
#自动扫描包下的实体类
type-aliases-package: suoyue.resume.entity
#映射文件所在的位置
mapper-locations: classpath:mapper/*.xml
#开启驼峰功能
configuration:
map-underscore-to-camel-case: true
- 检查Dao层是否添加@mapper和@Repository注解
@Mapper
@Repository
public interface XXXXDao {
}
- 检查导入的mapper是否正确
import org.apache.ibatis.annotations.Mapper;
博主就是被这个给坑了#_#
MyBatis 源码中用到的几个主要设计模式:
- 工厂模式:接口类SqlSessionFactory其子类DefaultSqlSessionFactorys 的一个方法openSession(ExecutorType execType)
- 建造者模式:SqlSessionFactoryBuilder 通过 XMLConfigBuilder 对象读取并解析 XML 的配置文件,再将读取到的配置信息存入到 Configuration 类中,然后再通过 build 方法生成我们需要的 DefaultSqlSessionFactory 对象
- 单例模式:ErrorContext 线程级别的的单例,每个线程中有一个此对象的单例,用于记录该线程的执行环境的错误信息
- 适配器模式:MyBatis 中的日志模块适配了以下多种日志类型:
SLF4J
Apache Commons Logging
Log4j 2
Log4j
JDK logging
首先 MyBatis 定义了一个 Log 的接口,用于统一和规范接口的行为 - 代理模式:MapperProxyFactory 的 newInstance() 方法就是生成一个具体的代理来实现功能的
- 模板方法模式:BaseExecutor 实现了大部分 SQL 执行的逻辑,再把几个方法交给子类来实现
- 装饰器模式:Cache-除了有数据存储和缓存的基本功能外(由 PerpetualCache 永久缓存实现),还有其他附加的 Cache 类,比如先进先出的 FifoCache、最近最少使用的 LruCache、防止多线程并发访问的 SynchronizedCache 等众多附加功能的缓存类
Mybatis修改SQL语句的返回值
- 一次只修改一条语句 成功返回 1
- 一次修改两条及以上语句 成功返回 -1
#{}、${}的区别:
a.
#{任意值}
${value} ,其中的标识符只能是value
b.
#{}自动给String类型加上'' (自动类型转换-预编译处理)
${} 原样输出,但是适合于 动态排序(动态字段-字符串替换)
动态排序:
select stuno,stuname,stuage from student order by ${value} asc/desc
不能带双引号 升序/降序
c.
#{}可以防止SQL注入
${}不防止
${}、#{}相同之处:都可以 获取对象的值 (嵌套类型对象)
异常:Consider defining a bean of type ‘xxx.XXXDao’ in your configuration
开启排错路程
- 检查是否导入依赖
<!-- 连接数据mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
- 检查yml文件是否配置自动扫描实体类及映射
#配置mybatis
mybatis:
#自动扫描包下的实体类
type-aliases-package: suoyue.resume.entity
#映射文件所在的位置
mapper-locations: classpath:mapper/*.xml
#开启驼峰功能
configuration:
map-underscore-to-camel-case: true
- 检查Dao层是否添加@mapper和@Repository注解
@Mapper
@Repository
public interface XXXXDao {
}
- 检查导入的mapper是否正确
import org.apache.ibatis.annotations.Mapper;
博主就是被这个给坑了#_#
MyBatis 源码中用到的几个主要设计模式:
- 工厂模式:接口类SqlSessionFactory其子类DefaultSqlSessionFactorys 的一个方法openSession(ExecutorType execType)
- 建造者模式:SqlSessionFactoryBuilder 通过 XMLConfigBuilder 对象读取并解析 XML 的配置文件,再将读取到的配置信息存入到 Configuration 类中,然后再通过 build 方法生成我们需要的 DefaultSqlSessionFactory 对象
- 单例模式:ErrorContext 线程级别的的单例,每个线程中有一个此对象的单例,用于记录该线程的执行环境的错误信息
- 适配器模式:MyBatis 中的日志模块适配了以下多种日志类型:
SLF4J
Apache Commons Logging
Log4j 2
Log4j
JDK logging
首先 MyBatis 定义了一个 Log 的接口,用于统一和规范接口的行为 - 代理模式:MapperProxyFactory 的 newInstance() 方法就是生成一个具体的代理来实现功能的
- 模板方法模式:BaseExecutor 实现了大部分 SQL 执行的逻辑,再把几个方法交给子类来实现
- 装饰器模式:Cache-除了有数据存储和缓存的基本功能外(由 PerpetualCache 永久缓存实现),还有其他附加的 Cache 类,比如先进先出的 FifoCache、最近最少使用的 LruCache、防止多线程并发访问的 SynchronizedCache 等众多附加功能的缓存类
本文标签: 知识点异常definingMybatisBean
版权声明:本文标题:Mybatis知识点及异常Consider defining a bean of type ‘xxx.XXXDao‘ in your configuration 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1738335439a1562601.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论