Spring 通过mybatis连MySQL数据库踩过的坑

关于Mybatis

iBATIS一词来源于“internet”和“abatis”的组合,
是一个基于Java的持久层框架。iBATIS提供的
持久层框架包括SQL Maps和Data Access Objects(DAOs)
当前,最新版本是MyBatis 3.5.4 ,其发布时间是2020年2月4日。

我用的就是最新版的,但其实并没用到什么高级功能。

1. EasyCode

在前面先给大家安利一下这个插件。
EasyCode是一个很强大的Mybatis代码生成器,一次能生成从xml到controller你可能用到的所有代码,详情可以看这里→Easycode
记得自动生成后在dao层加上@Mapper注解,以及在主程序里加上@MapperScan(你的dao文件存放位置如下)

@MapperScan("com.xxx.xxx.dao")
@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

在application.properties加入这个配置

#mybatis
mybatis.mapper-locations=classpath:/mapper/*.xml
mybatis.type-aliases-package=com.jiaoyou.demo.entity

以上这些配置就足够了,不需要再去修改其他的了

我踩的坑

报错1:
Error creating bean with name 'xxx'

这类错误可能你需要检查一下DAO文件,网上大部分教程是说没有扫描到你的dao或者是Service。

  1. 发生这个错误,先去看看你的dao和service(或者是服务实现类impl)加没加@Mapper和@Service注解,还有application里面有没有上面的配置
  2. 如果加了之后还是报错,说明是还没有扫描到你的文件。检查一下你的数据库名是不是和java里面的类重名了我就犯了这错误。
    下图中的collections的数据库之前叫collection。实体类和自有的类重名了,修改半天,删了所有的dao、service和xml还是报错。最后发现是实体类的问题。
    collection数据库生成的实体类与java里的类重名了
  3. 其实遇到最多的问题还是由于修改xml之后出现语法错误,导致查询的时候报错

2. 编程的时候学到的一些东西

2.1 JDBC类型与JAVA类型的映射关系

我用的是MySQL数据库,数据类型和SqlServer之类的有所区别
JDBCJAVA
VARCHAR等字符类型String
bit/tinyint(推荐)Boolean
DATEjava.sql.Date
TIMEjava.sql.Time
TIMESTAMPjava.sql.Timestamp

目前见到的就是这些。其中如果布尔类型MySQL官方是推荐使用tinyint(1)就好了。网上说MySQL没有bit类型,但是我通过Navicat里面是可以设置的……这里还有些疑问

时间也是数据库的小坑,当时为了录入时保留时分秒还费了一点时间。现在好像想不起来
总之,这里记录一个可以录入时分秒的java代码,数据库用的是TIMESTAMP(时间戳)

file1.setUploadTime(new Date(new java.util.Date().getTime()));//录入上传时间
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值