Spring Boot常见配置及错误
一、SpringBoot常见配置
(1)SpingBoot与MyBatis集成时跟踪SQL语句
log4j:
logger:
java:
sql:
ResultSet: TRACE
(2)日志跟踪
debug: true
logging:
config: classpath:log4j2/log4j2.xml license:
file-path: xxx
@Value("${license.file-path}")
private String licenseFilePath
(3)MyBatis集成:
#mybatis配置
mybatis:
#配置映射类所在包名
type-aliases-package: com.xx.it.model
(数据库实体对象所在路径,一般为@Data对象,非Mapper注释项所在路径)
#配置mapper.xml文件所在路径
mapper-location: classpath:com/xx/it/*.xml(非必须项,可以不配) #不需要再配置Spring任何文件
@SpringBootApplication
public class Application {
SpringApplication.run(Application.class,args);
}
Mapper所在路径不需要配置,系统会自动扫描与Application同级及以下的所有目录,同时对应的Spring也不需要配置
二、常见错误
(1)SpringBoot与MyBatis集成
A.ResultMap与ResultType导致的问题
<resultMap id="sample" type="com.xx.it.SampleVo">
<result property="id" column="id" />
<result property="name" column="name" />
<result property="useYn" column="use_yn" />
</resultMap> <select id="selectSample" resultMap="sample">
select id,name,useYn from sample where id = #{id}
</select> <select id="getReply" parameterType="sampleVo" resultType="sample">
select id,name,useYn from sample where id = #{id}
</select>
如上情况当ResultMap与ResultType混用时,会出现java.lang.ClassNotFoundException错误,此时对应的解决方案如下:
1、按照上述思路,统一换成ResultMap;
2、在定义resultMap的名字时,按照首字母小写的方式来命名。上例中为:sampVo;
MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap.
resultType是直接表示返回类型的(对应着我们的model对象中的实体),
resultMap则是对外部ResultMap的引用(提前定义了db和model之间的隐射key-->value关系),但是resultType跟resultMap不能同时 存在。
在MyBatis进行查询映射时,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值。
①当提供的返回类型属性是resultType时,MyBatis会将Map里面的键值对取出赋给resultType所指定的对象对应的属性。所以其实MyBatis的每一个查询映射的返回类型都是ResultMap,只是当提供的返回类型属性是resultType的时候,MyBatis对自动的给把对应的值赋给resultType所指定对象的属性。
②当提供的返回类型是resultMap时,因为Map不能很好表示领域模型,就需要自己再进一步的把它转化为对应的对象,这常常在复杂查询中很有作用
参见:http://www.ibloger.net/article/2434.html
注:select语句中不能同时使用resultType和resultMap
ResultMap:组装数据库中结果与实体对象的映射关系(将数据库中查询出来的结果映射给实体类)
column:表中字段名;property:实体类的属性名
ResultType:查询结果不需要映射时使用resultType
个人总结:表中定义create_time,类中createTime,返回值类型为resultMap,如果用resultType,那么createTime字段的值为NULL.
当使用ResultType进行输出映射时,只有查询出来的列名和pojo的属性名一致,该列才可以映射成功;
如果查询出来的列名和pojo中的属性名全部不一致,没有创建pojo对象;
只要查询出来的列名和pojo中的属性有一个一致,就会创建pojo对象;
B.#与$区别
${name}原样替换,#{name}是带单引号,占位符
like '% %'在mybatis中应当写成like '%${name}%'而不是'%#{name}%'
参见:https://segmentfault.com/a/1190000004617028
Spring Boot常见配置及错误的更多相关文章
- Spring Boot 自动配置的原理、核心注解以及利用自动配置实现了自定义 Starter 组件
本章内容 自定义属性快速入门 外化配置 自动配置 自定义创建 Starter 组件 摘录:读书是读完这些文字还要好好用心去想想,写书也一样,做任何事也一样 图 2 第二章目录结构图 第 2 章 Spr ...
- Spring Boot 属性配置和使用(转)
Spring Boot 属性配置和使用 Spring Boot 允许通过外部配置让你在不同的环境使用同一应用程序的代码,简单说就是可以通过配置文件来注入属性或者修改默认的配置. Spring Boot ...
- 转:spring boot log4j2配置(使用log4j2.yml文件)---YAML 语言教程
转:spring boot log4j2配置(使用log4j2.yml文件) - CSDN博客http://blog.csdn.net/ClementAD/article/details/514988 ...
- spring boot 常见三十四问
Spring Boot 是微服务中最好的 Java 框架. 我们建议你能够成为一名 Spring Boot 的专家. 问题一 Spring Boot.Spring MVC 和 Spring 有什么区别 ...
- Spring Boot 日志配置
Spring Boot 日志配置 默认日志 Logback: 默认情况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台.在运行应用程序和其他例子时,你应该已经看到很 ...
- Spring boot 零配置开发微服务
2018年12月29日星期六 体验Spring boot 零配置开发微服务 1.为什么要用Spring boot? 1.1 简单方便.配置少.整合了大多数框架 1.2 适用于微服务搭建,搭建的微服务 ...
- Spring Boot自定义配置与加载
Spring Boot自定义配置与加载 application.properties主要用来配置数据库连接.日志相关配置等.除了这些配置内容之外,还可以自定义一些配置项,如: my.config.ms ...
- Spring Boot Security配置教程
1.简介 在本文中,我们将了解Spring Boot对spring Security的支持. 简而言之,我们将专注于默认Security配置以及如何在需要时禁用或自定义它. 2.默认Security设 ...
- Spring Boot + Mybatis 配置多数据源
Spring Boot + Mybatis 配置多数据源 Mybatis拦截器,字段名大写转小写 package com.sgcc.tysj.s.common.mybatis; import java ...
随机推荐
- VS2017 下载离线MSDN文档
VS2017 下载离线MSDN文档 点开帮助窗口的时候发现没有添加和删除帮助内容选项.处理方法如下: 1.打开vs2017安装包,如果你找不到安装包,可在相应你下载vs2017的浏览器上找到下载内容, ...
- PostgreSQL 调用存储过程返回结果集
创建返回结果集类型的存储过程: CREATE OR REPLACE FUNCTION public.f_get_member_info( id integer, productname charact ...
- css position相对定位与绝对定位彻底搞懂
定位position position本身就有给...定位的意思 position属性的值: static ---默认值 relative ---相对定位 absolute ---绝对定位 fixed ...
- C# 简单学习正则表达式
第一步先要引入有关正则式的命名空间: using System.Text.RegularExpressions; 第二步用指定的正则式构建一个正则表达式对象,下面的正则式是用来搜 ...
- Dotnet core结合jquery的前后端加密解密密码密文传输的实现
在一个正常的项目中,登录注册的密码是密文传输到后台服务端的,也就是说,首先前端js对密码做处理,随后再传递到服务端,服务端解密再加密传出到数据库里面.Dotnet已经提供了RSA算法的加解密类库,我们 ...
- js和jquery获取当前元素的内容
html代码 <div>测试文本</div>js:div.innerHTMLjQuery:div.html()
- FasterRCNN代码解读
之前的文章简要介绍了Faster-RCNN等物体检测的算法,本文将从代码角度详细分析介绍Faster-RCNN的实现.本文使用的代码参考了chenyuntc的实现,代码的位置看这里.需要注意的是,本文 ...
- 洛谷.3369.[模板]普通平衡树(Splay)
题目链接 第一次写(2017.11.7): #include<cstdio> #include<cctype> using namespace std; const int N ...
- JavaScript基础笔记(十三)测试和调试
错误处理与测试 一.错误处理 一)try-catch语句 function atest() { try { //可能发生错误的代码 return 0; } catch (error) { //错误处理 ...
- pyhthon 利用爬虫结合阿里大于短信接口实现短信发送天气预报
# -*- coding: utf-8 -*- ''''' SDK for alidayu requires: python3.x, requests @author: raptor.zh@gmail ...