首页 > 编程 > Java > 正文

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

2019-11-26 09:31:05
字体:
来源:转载
供稿:网友

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: rootmybatis: #告诉spring你的mapper的位置。 mapper-locations: classpath:com/coder520/mamabike/**/**.xml #告诉spring你的实体类的位置 type-aliases-package: classpath:com.coder520.mamabike.**.entitylogging: 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中的问题及出现的一些问题小结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表