0.准备数据库表
1 |
|
一.pom.xml文件添加maven依赖
1 | <!--mybatis--> |
注意:druid是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB连接池,据说是“目前最好的连接池”。
二.修改配置文件application.properties
1 | server.port=9997 |
三.MyBatis配置
在resources目录下面新建2个目录:generator和mapping,用于存放mybatis的配置文件和映射文件
在包
spring.boot.mybatis.mysql
下新建包mapper和model,用于存放mybatis生成的代码在generator目录下,新建文件generatorConfig.xml,代码如下:
1 |
|
1 | <!-- mybatis generator 自动生成代码插件 --> |
- 添加并导入包后打开View->Tool Windows->Maven Projects可看到如下插件
- 双击运行,运行完后项目目录将会自动生成如下几个文件:
打开
PersonMapper.xml
就是Mybatis的映射文件,里面的内容其实就是Sql。注意:使用这个插件的时候,生成的的映射文件可能会有多个ResultMap,导致启动的时候会报错
Result Maps collection already contains value for...
这是因为数据库中可能有多个schema中都有同样名字的一张表。这个时候简单的办法就是打开这个文件删除掉多余的配置即可。
打开
PersonMapper
1 | //自动生成的没有下面这个注解,如果在依赖注入的时候报错,记得加上这个注解 |
- 添加我们的service和controller
1 | /* |
注意:如果personMapper下方红线报错,是因为PersonMapper没有配置依赖注入扫描注解,可在类上方增加@Component
注解。当然也可以修改idea的错误提示,降低Autowired检测的级别,将Severity的级别由之前的error改成warning或其它可以忽略的级别。
启动类新增注解
@MapperScan("spring.boot.mybatis.mysql.mapper")
测试运行
四、更优雅的方式
通过上面的过程,可以发现又出现了一系列的配置文件,如果我们想更优雅一点的编码,Mybatis为此也提供了,不需要配置文件的方式。注意,是更优雅一些不是更好一些,至于哪种方式更好要结合实际。
只需要在PersonMapper
接口的方法上添加相应的SQL注解即可
1 | package spring.boot.mybatis.mysql.annotate.mapper; |
- @Select 是查询类的注解,所有的查询均使用这个
- @Result 修饰返回的结果集,关联实体类属性和数据库字段一一对应,如果实体类属性和数据库属性名保持一致,就不需要这个属性来修饰。
- @Insert 插入数据库使用,直接传入实体类会自动解析属性到对应的值
- @Update 负责修改,也可以直接传入对象
- @delete 负责删除
想要了解更多特性,可以参考Mybatis官网
五、踩坑记
Service中注入personMapper报错
PersonMapper类上加注解
@Component
启动的时候报错
Result Maps collection already contains value for...
这是因为数据库中可能有多个schema中都有同样名字的一张表。这个时候简单的办法就是打开这个文件删除掉多余的配置即可。