关于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。
- 发生这个错误,先去看看你的dao和service(或者是服务实现类impl)加没加@Mapper和@Service注解,还有application里面有没有上面的配置
- 如果加了之后还是报错,说明是还没有扫描到你的文件。检查一下你的数据库名是不是和java里面的类重名了我就犯了这错误。
下图中的collections的数据库之前叫collection。实体类和自有的类重名了,修改半天,删了所有的dao、service和xml还是报错。最后发现是实体类的问题。
- 其实遇到最多的问题还是由于修改xml之后出现语法错误,导致查询的时候报错
2. 编程的时候学到的一些东西
2.1 JDBC类型与JAVA类型的映射关系
我用的是MySQL数据库,数据类型和SqlServer之类的有所区别
JDBC | JAVA |
---|---|
VARCHAR等字符类型 | String |
bit/tinyint(推荐) | Boolean |
DATE | java.sql.Date |
TIME | java.sql.Time |
TIMESTAMP | java.sql.Timestamp |
目前见到的就是这些。其中如果布尔类型MySQL官方是推荐使用tinyint(1)就好了。网上说MySQL没有bit类型,但是我通过Navicat里面是可以设置的……这里还有些疑问
时间也是数据库的小坑,当时为了录入时保留时分秒还费了一点时间。现在好像想不起来
总之,这里记录一个可以录入时分秒的java代码,数据库用的是TIMESTAMP(时间戳)
file1.setUploadTime(new Date(new java.util.Date().getTime()));//录入上传时间