Spring Boot整合mybatis并自动生成mapper和实体实例解析
最近一直都在学习Java,发现目前Java招聘中,mybatis出现的频率挺高的,可能是目前Java开发中使用比较多的数据库ORM框架。于是我准备研究下SpringBoot和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=mapperxml文件地址 #mybatis.typeAliasesPackage=实体类包路径 #mybatis.typeHandlersPackage=typehandlers处理器包路径 #mybatis.check-config-location=检查mybatis配置是否存在,一般命名为mybatis-config.xml #mybatis.executorType=执行模式。默认是SIMPLE
3.mybatis的配置和自动生成mapper的配置
在resource目录下新建一个generatorConfig.xml和mybatis-config.xml。内容如下:
generatorConfig.xml内容
mybatis-config.xml的内容:
这样我们就配置好了SpringBoot和mybatis与mybatis自动生成mapper和实体的功能。这样我们要生成某个表的实体和mapper的时候,只需要在generatorConfig.xml中javaClientGenerator标签之后添加下面的内容即可。
此处我们已yd_movies表为例(主要数据库表名字不要用复数,这个表名肯定是我之前脑子抽了,搞个复数的名字)
然后点击idea右侧Mavenprojects,就可以看到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文件内容
SELECTyd_movies.*FROMyd_movies LEFTJOINyd_r_movie_countriesONyd_movies.id=yd_r_movie_countries.movie_id LEFTJOINyd_countriescouONyd_r_movie_countries.country_id=cou.id LEFTJOINyd_r_movie_categoryONyd_movies.id=yd_r_movie_category.movie_id LEFTJOINyd_categorycatONyd_r_movie_category.category_id=cat.id LEFTJOINyd_r_movie_actorONyd_movies.id=yd_r_movie_actor.movie_id LEFTJOINyd_actorsaONyd_r_movie_actor.actor_id=a.id WHERE yd_movies.status=1 ANDyd_movies.titleLIKE"%"#{movieRequest.title}"%" ANDcou.id=#{movieRequest.country} ANDcat.id=#{movieRequest.category} ANDyear=#{movieRequest.year} ANDrate>=#{movieRequest.rate} ANDrate<(#{movieRequest.rate}+1) ANDyd_movies.subtype=#{movieRequest.subtype} GROUPBYyd_movies.id ORDERBYupdated_atDESC,year
总结
以上所述是小编给大家介绍的SpringBoot整合mybatis并自动生成mapper和实体,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!