• 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

  • 相关阅读:
    An Introduction to C & GUI Programming -----Simon Long 学习笔记 6
    An Introduction to C & GUI Programming -----Simon Long 学习笔记 5
    An Introduction to C & GUI Programming -----Simon Long 学习笔记 4
    An Introduction to C & GUI Programming -----Simon Long 学习笔记 3
    An Introduction to C & GUI Programming -----Simon Long 学习笔记 2
    替罪羊树 (Scapegoat Tree)
    Miller-Rabin 质数检测
    杜教筛
    狄利克雷卷积&莫比乌斯反演
    取整函数的性质
  • 原文地址:https://www.cnblogs.com/moonandstar08/p/7599248.html
Copyright © 2020-2023  润新知