springboot整合mybatis中的问题及出现的一些问题小结

 更新时间:2018年11月21日 11:52:13   作者:King丶Star  
这篇文章主要介绍了springboot整合mybatis中的问题及出现的一些问题小结,本文给出了解决方案,需要的朋友可以参考下

1.springboot整合mybatis mapper注入时显示could not autowire,如果强行写(value  = false ),可能会报NullPointException异常

解决方案:

dao层加注解@Component(value = "首字母小写的接口名如UserMapper->userMapper")

dao层还可以加注解@Mapper

2.The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone问题

3.java.lang.IllegalArgumentException: DefaultSerializer requires a Serializable payload but received an object of type[xxx]

解决:实体对象类没有序列化,需要implements Serializable

PS:下面看下springboot整合mybatis出现的一些问题

springboot整合mybatis非常非常的简单,简直简单到发指。但是也有一些坑,这里我会详细的指出会遇到什么问题,并且这些配置的作用

整合mybatis,无疑需要mapper文件,实体类,dao层,数据库连接池。。。。。也就没了。

先放配置application.yml

spring:
 datasource:
  type: com.alibaba.druid.pool.DruidDataSource
  driver-class-name: com.mysql.jdbc.Driver
  filters: stat
  maxActive: 20
  initialSize: 1
  maxWait: 60000
  minIdle: 1
  timeBetweenEvictionRunsMillis: 60000
  minEvictableIdleTimeMillis: 300000
  validationQuery: select 'x'
  testWhileIdle: true
  testOnBorrow: false
  testOnReturn: false
  poolPreparedStatements: true
  maxOpenPreparedStatements: 20
  
  name: test
  url: jdbc:mysql://localhost:3306/mama-bike?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
  username: root
  password: root

mybatis:
 #告诉spring你的mapper的位置。
 mapper-locations: classpath:com/coder520/mamabike/**/**.xml
 #告诉spring你的实体类的位置
 type-aliases-package: classpath:com.coder520.mamabike.**.entity

logging:
 config: classpath:logback.xml

dao层接口      //就简单的写一个方法

public interface UserMapper {
 int insert(User record);
}

mapper

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.coder520.mamabike.user.dao.UserMapper" >
 <resultMap id="BaseResultMap" type="com.coder520.mamabike.user.entity.User" >
 <id column="id" property="id" jdbcType="BIGINT" />
 <result column="nickname" property="nickname" jdbcType="VARCHAR" />
 <result column="enable_flag" property="enableFlag" jdbcType="TINYINT" />
 <result column="verify_flag" property="verifyFlag" jdbcType="TINYINT" />
 <result column="head_img" property="headImg" jdbcType="VARCHAR" />
 <result column="mobile" property="mobile" jdbcType="VARCHAR" />
 </resultMap>
 <sql id="Base_Column_List" >
 id, nickname, enable_flag, verify_flag, head_img, mobile
 </sql>
 <insert id="insert" parameterType="com.coder520.mamabike.user.entity.User" >
 insert into user (id, nickname, enable_flag, 
  verify_flag, head_img, mobile
  )
 values (#{id,jdbcType=BIGINT}, #{nickname,jdbcType=VARCHAR}, #{enableFlag,jdbcType=TINYINT}, 
  #{verifyFlag,jdbcType=TINYINT}, #{headImg,jdbcType=VARCHAR}, #{mobile,jdbcType=VARCHAR}
  )
 </insert>
</mapper>

main方法

@SpringBootApplication
@ComponentScan(basePackages={"com.coder520.mamabike"})
@MapperScan(basePackages="com.demo.user.mapper")
public class MamaBikeApplication {
 public static void main(String[] args) {
  SpringApplication.run(MamaBikeApplication.class, args);
 }
}

需要注意的是,dao层接口spring怎么会知道呢?这里就需要@MapperScan(basePackages="com.demo.user.mapper") 这个注解来指定mapper接口的位置。用@ComponentScan(basePackages={"com.coder520.mamabike"})这个注解来让spring扫描我们指定包下的注解。

如果我们不用@MapperScan这个注解的话,也可以在接口类的上方加上@Mapper这个注解也可以。

总结

以上所述是小编给大家介绍的springboot整合mybatis中的问题及出现的一些问题小结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Java中的synchronized重量级锁解析

    Java中的synchronized重量级锁解析

    这篇文章主要介绍了Java中的synchronized重量级锁解析,内核需要去申请这个互斥量,必须要进入内核态,也就是这里需要用户态,内核态的切换,状态的切换,开销是比较大的,这就是重型锁的一个弊端,需要的朋友可以参考下
    2024-01-01
  • 微信小程序之搜索分页功能的实现代码

    微信小程序之搜索分页功能的实现代码

    这篇文章主要介绍了微信小程序之搜索分页功能的实现代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • 详解Java5、Java6、Java7的新特性

    详解Java5、Java6、Java7的新特性

    本编文章详细介绍了Java5、Java6、Java7的新特性,需要的朋友可以参考下
    2017-04-04
  • Java基础之String类使用与字符串比较

    Java基础之String类使用与字符串比较

    String类代表字符串,java程序中的所有字符串文字(例如"abc")都被实现为此类的实例。本文将详解String类的使用,以及如何进行字符串比较
    2022-08-08
  • java中堆和栈的区别分析

    java中堆和栈的区别分析

    这篇文章主要介绍了java中堆和栈的区别,分析了Java中堆和栈的原理及使用时的注意事项,需要的朋友可以参考下
    2014-09-09
  • 如何使用Java调用Spark集群

    如何使用Java调用Spark集群

    这篇文章主要介绍了如何使用Java调用Spark集群,我搭建的Spark集群的版本是2.4.4,本文结合示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-02-02
  • java使用反射访问成员变量的值示例

    java使用反射访问成员变量的值示例

    这篇文章主要介绍了java使用反射访问成员变量的值,结合实例形式分析了java基于反射机制操作类成员变量相关实现技巧,需要的朋友可以参考下
    2019-07-07
  • Linux中Java开发常用软件安装方法总结

    Linux中Java开发常用软件安装方法总结

    这篇文章主要介绍了Linux中Java开发常用软件安装方法总结,需要的朋友可以参考下
    2020-02-02
  • idea2019导入maven项目中的某些问题及解决方法

    idea2019导入maven项目中的某些问题及解决方法

    这篇文章主要介绍了idea2019导入maven项目中的某些问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • Java中如何避免sql注入实例详解

    Java中如何避免sql注入实例详解

    SQL注入是最常见的攻击方式之一,它不是利用操作系统或其它系统的漏洞来实现攻击的,而是程序员因为没有做好判断,被不法用户钻了SQL的空子,下面这篇文章主要给大家介绍了关于Java中如何避免sql注入的相关资料,需要的朋友可以参考下
    2022-01-01

最新评论