最近一直都在学习Java,发现目前Java招聘中,mybatis出现的频率挺高的,可能是目前Java开发中使用比较多的数据库ORM框架。于是我准备研究下Spring Boot和mybatis的整合。

1.在pom.xml文件中添加下面的配置

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-starter-jdbc

mysql

mysql-connector-java

runtime

com.alibaba

druid

1.0.29

org.springframework.boot

spring-boot-starter-data-jpa

org.mybatis.spring.boot

mybatis-spring-boot-starter

1.3.2

org.mybatis.generator

mybatis-generator

1.3.5

pom

org.mybatis.generator

mybatis-generator-core

1.3.5

org.springframework.boot

spring-boot-maven-plugin

org.mybatis.generator

mybatis-generator-maven-plugin

1.3.2

true

true

2.在application.properties配置文件中进行数据库和mybatis扫描的配置

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.datasource.url=jdbc:mysql://localhost:3306/yddy?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC

spring.datasource.username=root

spring.datasource.password=123456

mybatis.config-locations=classpath:mybatis-config.xml

# mapper文件

mybatis.mapper-locations=classpath:mapper/*.xml #这里直接写*,对后面自定义sql,编写xxxExt.xml有好处,自动扫描到这些文件,不用再改配置了

mybatis.type-aliases-package=com.dameiweb.learn.model

logging.level.com.dameiweb.learn.dao=debug

#mybatis.config = mybatis 配置文件名称

#mybatis.mapperLocations = mapper xml 文件地址

#mybatis.typeAliasesPackage = 实体类包路径

#mybatis.typeHandlersPackage = type handlers 处理器包路径

#mybatis.check-config-location = 检查 mybatis 配置是否存在,一般命名为 mybatis-config.xml

#mybatis.executorType = 执行模式。默认是 SIMPLE

3.mybatis的配置和自动生成mapper的配置

在resource目录下新建一个generatorConfig.xml和mybatis-config.xml。内容如下:

generatorConfig.xml内容

/p>

PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"

"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

mybatis-config.xml的内容:

这样我们就配置好了Spring Boot和mybatis与mybatis自动生成mapper和实体的功能。这样我们要生成某个表的实体和mapper的时候,只需要在generatorConfig.xml中javaClientGenerator标签之后添加下面的内容即可。

此处我们已yd_movies表为例(主要数据库表名字不要用复数,这个表名肯定是我之前脑子抽了,搞个复数的名字)

enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">

然后点击idea右侧Maven projects,就可以看到mybatis-generate下的mybatis-generate:generate,双击mybatis-generate:generate即可。

**generator 注意点,也可以说是BUG

就是在生成的时候,在第二次生成的时候,dao 和entity 都会直接覆盖,而Mapper.xml 会直接追加,导致运行报错,而且很难找。**

4.mybatis自定义sql

当我们需要自定义sql的时候,我们不能把这些也放到mapper文件中。不然,当数据库表的字段有更新需要重新生成mapper的时候,这样我们自定义的sql不就被覆盖没了么!所以我们需要在MovieMapper.xml的同级目录里,新建一个MovieMapperExt.xml文件,把自定义的sql放到这里,例子如下:

MovieMapperExt.xml文件内容

SELECT yd_movies.* FROM yd_movies

LEFT JOIN yd_r_movie_countries ON yd_movies.id = yd_r_movie_countries.movie_id

LEFT JOIN yd_countries cou ON yd_r_movie_countries.country_id = cou.id

LEFT JOIN yd_r_movie_category ON yd_movies.id = yd_r_movie_category.movie_id

LEFT JOIN yd_category cat ON yd_r_movie_category.category_id = cat.id

LEFT JOIN yd_r_movie_actor ON yd_movies.id = yd_r_movie_actor.movie_id

LEFT JOIN yd_actors a ON yd_r_movie_actor.actor_id = a.id

WHERE

yd_movies.status = 1

AND yd_movies.title LIKE "%"#{movieRequest.title}"%"

AND cou.id = #{movieRequest.country}

AND cat.id = #{movieRequest.category}

AND year = #{movieRequest.year}

AND rate >= #{movieRequest.rate}

AND rate < (#{movieRequest.rate}+1)

AND yd_movies.subtype = #{movieRequest.subtype}

GROUP BY yd_movies.id

ORDER BY updated_at DESC, year

总结

以上所述是小编给大家介绍的Spring Boot整合mybatis并自动生成mapper和实体,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐