亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Spring Boot整合mybatis并自動生成mapper和實體實例解析

2024-07-14 08:40:43
字體:
來源:轉載
供稿:網友

最近一直都在學習Java,發現目前Java招聘中,mybatis出現的頻率挺高的,可能是目前Java開發中使用比較多的數據庫ORM框架。于是我準備研究下Spring Boot和mybatis的整合。

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

<dependencies>  <dependency>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-starter-web</artifactId>  </dependency>  <dependency>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-starter-test</artifactId>   <scope>test</scope>  </dependency>  <dependency>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-starter-jdbc</artifactId>  </dependency>  <dependency>   <groupId>mysql</groupId>   <artifactId>mysql-connector-java</artifactId>   <scope>runtime</scope>  </dependency>  <dependency>   <groupId>com.alibaba</groupId>   <artifactId>druid</artifactId>   <version>1.0.29</version>  </dependency>  <dependency>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-starter-data-jpa</artifactId>  </dependency> <!-- 這個是官方的mybatis依賴,這個你不加沒法用噻 -->  <dependency>   <groupId>org.mybatis.spring.boot</groupId>   <artifactId>mybatis-spring-boot-starter</artifactId>   <version>1.3.2</version>  </dependency>  <!-- 這個是自動生成mapper等的依賴,必須得加-->  <dependency>   <groupId>org.mybatis.generator</groupId>   <artifactId>mybatis-generator</artifactId>   <version>1.3.5</version>   <type>pom</type>  </dependency>  <!--這個是自動生成mapper等的依賴,必須得加 https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core -->  <dependency>   <groupId>org.mybatis.generator</groupId>   <artifactId>mybatis-generator-core</artifactId>   <version>1.3.5</version>  </dependency>  </dependencies> <build>  <plugins>   <plugin>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-maven-plugin</artifactId>   </plugin>   <plugin>    <groupId>org.mybatis.generator</groupId>    <artifactId>mybatis-generator-maven-plugin</artifactId>    <version>1.3.2</version>    <configuration>     <!--配置文件存放的地址-->     <!--<configurationFile>src/main/resources/mybatis-generator/generatorConfig.xml</configurationFile>-->     <verbose>true</verbose>     <overwrite>true</overwrite>    </configuration>   </plugin>  </plugins> </build>

2.在application.properties配置文件中進行數據庫和mybatis掃描的配置

spring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/yddy?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTCspring.datasource.username=rootspring.datasource.password=123456mybatis.config-locations=classpath:mybatis-config.xml# mapper文件mybatis.mapper-locations=classpath:mapper/*.xml #這里直接寫*,對后面自定義sql,編寫xxxExt.xml有好處,自動掃描到這些文件,不用再改配置了mybatis.type-aliases-package=com.dameiweb.learn.modellogging.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內容

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration  PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration> <classPathEntry location="C:/Users/nick/.m2/repository/mysql/mysql-connector-java/5.1.46/mysql-connector-java-5.1.46.jar"/> <context id="DB2Tables" targetRuntime="MyBatis3">  <commentGenerator>   <property name="suppressDate" value="true"/>   <property name="suppressAllComments" value="true"/>  </commentGenerator>  <!--數據庫鏈接地址賬號密碼-->  <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/yddy?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC" userId="root" password="123456">  </jdbcConnection>  <javaTypeResolver>   <property name="forceBigDecimals" value="false"/>  </javaTypeResolver>  <!--生成Model類存放位置-->  <javaModelGenerator targetPackage="com.dameiweb.learn.model" targetProject="src/main/java">   <property name="enableSubPackages" value="true"/>   <!-- 從數據庫返回的值被清理前后的空格 -->   <property name="trimStrings" value="false"/>  </javaModelGenerator>  <!--生成映射文件存放位置-->  <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">   <property name="enableSubPackages" value="true"/>  </sqlMapGenerator>  <!--生成Dao類存放位置-->  <!-- 客戶端代碼,生成易于使用的針對Model對象和XML配置文件 的代碼    type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper對象    type="MIXEDMAPPER",生成基于注解的Java Model 和相應的Mapper對象    type="XMLMAPPER",生成SQLMap XML文件和獨立的Mapper接口  -->  <javaClientGenerator type="XMLMAPPER" targetPackage="com.dameiweb.learn.dao" targetProject="src/main/java">   <property name="enableSubPackages" value="true"/>  </javaClientGenerator> </context></generatorConfiguration>

mybatis-config.xml的內容:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <settings>  <setting name="callSettersOnNulls" value="true"/>  <setting name="cacheEnabled" value="true"/>  <setting name="lazyLoadingEnabled" value="true"/>  <setting name="aggressiveLazyLoading" value="true"/>  <setting name="multipleResultSetsEnabled" value="true"/>  <setting name="useColumnLabel" value="true"/>  <setting name="useGeneratedKeys" value="false"/>  <setting name="autoMappingBehavior" value="PARTIAL"/>  <setting name="defaultExecutorType" value="SIMPLE"/>  <setting name="mapUnderscoreToCamelCase" value="true"/>  <setting name="localCacheScope" value="SESSION"/>  <setting name="jdbcTypeForNull" value="NULL"/> </settings> <typeAliases>  <typeAlias alias="Integer" type="java.lang.Integer" />  <typeAlias alias="Long" type="java.lang.Long" />  <typeAlias alias="HashMap" type="java.util.HashMap" />  <typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap" />  <typeAlias alias="ArrayList" type="java.util.ArrayList" />  <typeAlias alias="LinkedList" type="java.util.LinkedList" /> </typeAliases></configuration>

這樣我們就配置好了Spring Boot和mybatis與mybatis自動生成mapper和實體的功能。這樣我們要生成某個表的實體和mapper的時候,只需要在generatorConfig.xml中javaClientGenerator標簽之后添加下面的內容即可。

此處我們已yd_movies表為例(主要數據庫表名字不要用復數,這個表名肯定是我之前腦子抽了,搞個復數的名字)

<!--生成對應表及類名-->  <table tableName="yd_movies" domainObjectName="Movie" enableCountByExample="false" enableUpdateByExample="false"    enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">   <columnOverride column="cover_photos" javaType="java.lang.String" jdbcType="VARCHAR" />   <columnOverride column="cover_photos_loc" javaType="java.lang.String" jdbcType="VARCHAR" />   <columnOverride column="pubdates" javaType="java.lang.String" jdbcType="VARCHAR" />   <columnOverride column="photographs_origin" javaType="java.lang.String" jdbcType="VARCHAR" />   <columnOverride column="photographs_origin_loc" javaType="java.lang.String" jdbcType="VARCHAR" />   <columnOverride column="languages" javaType="java.lang.String" jdbcType="VARCHAR" />   <columnOverride column="awards" javaType="java.lang.String" jdbcType="VARCHAR" />   <columnOverride column="summary" javaType="java.lang.String" jdbcType="VARCHAR" />  </table><!--columnOverride使用這個標簽是為了防止數據庫字段類型為text時候,mybatis會生成xxxxWithBLOBs文件。-->

然后點擊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文件內容

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" ><mapper namespace="com.dameiweb.learn.dao.MovieMapper" > <select id="selectByCondition" resultMap="BaseResultMap" parameterType="com.dameiweb.learn.dto.MovieRequest"> 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 <if test="movieRequest.title != null">  AND yd_movies.title LIKE "%"#{movieRequest.title}"%" </if> <if test="movieRequest.country != null">  AND cou.id = #{movieRequest.country} </if> <if test="movieRequest.category != null">  AND cat.id = #{movieRequest.category} </if> <if test="movieRequest.year != null">  AND year = #{movieRequest.year} </if> <if test="movieRequest.rate != null">  AND rate >= #{movieRequest.rate} </if> <if test="movieRequest.rate != null">  AND rate < (#{movieRequest.rate}+1) </if> <if test="movieRequest.subtype != null">  AND yd_movies.subtype = #{movieRequest.subtype} </if> GROUP BY yd_movies.id ORDER BY updated_at DESC, year </select></mapper>

總結

以上所述是小編給大家介紹的Spring Boot整合mybatis并自動生成mapper和實體,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日本成人黄色片| wwwwwwww亚洲| 欧美另类精品xxxx孕妇| 日韩精品一区二区视频| 欧美日韩国产999| 国产在线精品一区免费香蕉| 日韩在线观看免费| 九九热最新视频//这里只有精品| 国产成人+综合亚洲+天堂| 国产91色在线播放| 精品国产一区二区在线| 俺去了亚洲欧美日韩| 欧美日韩亚洲一区二| 国产成人精品电影| 亚洲精品久久久久久久久| 国产97在线视频| 精品国产999| 中文字幕精品影院| 国产99久久精品一区二区永久免费| 国产精品精品一区二区三区午夜版| 精品国产91久久久久久老师| 久久伊人精品一区二区三区| 国产精品av电影| 国产激情久久久| 91系列在线播放| 久久手机免费视频| 欧美日韩国产精品专区| 久久大大胆人体| 国产精品久久久久久久久久久不卡| 日韩高清av一区二区三区| 91精品国产九九九久久久亚洲| 亚洲香蕉在线观看| 精品福利樱桃av导航| 精品日韩美女的视频高清| 伊人久久久久久久久久久久久| 1769国内精品视频在线播放| 成人黄色av网站| 欧美丝袜第一区| 精品国产欧美成人夜夜嗨| 91精品久久久久久久久青青| 亚洲高清福利视频| 国产欧美日韩中文字幕在线| 免费av在线一区| 乱亲女秽乱长久久久| 91香蕉国产在线观看| 国产丝袜一区二区三区免费视频| 一区二区欧美激情| 日本国产欧美一区二区三区| 成人中心免费视频| 97在线观看免费高清| 久久视频在线直播| 国产精品一区二区三区久久| 久久久精品视频成人| 亚洲天堂免费视频| 久久亚洲春色中文字幕| 粗暴蹂躏中文一区二区三区| 久国内精品在线| 欧美影院成年免费版| 色香阁99久久精品久久久| 国产人妖伪娘一区91| 久久久久99精品久久久久| 久久久精品一区| 欧美日韩在线视频首页| 亚洲性无码av在线| 国产精品第2页| 国产日韩精品入口| 国产一区二区美女视频| 一区二区三区四区精品| 亚洲第一福利视频| 一区二区三区美女xx视频| 日韩欧美aaa| 亚洲国产成人在线播放| 国内精品视频久久| 国产亚洲一区二区在线| 欧美日本精品在线| 欧美成在线观看| 国产精品电影网站| 久久av在线播放| 成人有码在线视频| 国产精品网红福利| 欧美性猛交xxxx免费看| 粗暴蹂躏中文一区二区三区| 欧美另类高清videos| 亚洲人线精品午夜| 亚洲在线免费视频| 国产91成人在在线播放| 国产欧美日韩免费| 国产精选久久久久久| 欧美xxxx做受欧美.88| 91国产美女在线观看| 精品国产依人香蕉在线精品| 欧美日韩xxxxx| 国色天香2019中文字幕在线观看| 国产视频久久网| 尤物精品国产第一福利三区| 亚洲一区二区三区成人在线视频精品| 国产精品亚洲精品| 欧美中文字幕在线视频| 亚洲aⅴ日韩av电影在线观看| 欧美激情精品久久久| 亚洲欧洲黄色网| 国产精品观看在线亚洲人成网| 中文字幕欧美精品日韩中文字幕| 一区二区三区视频观看| 亚洲成人激情小说| 欧美一区二区三区艳史| 国产精品老女人精品视频| 亚洲片国产一区一级在线观看| 狠狠色香婷婷久久亚洲精品| 国产精自产拍久久久久久蜜| 国产精品美女主播| 久久久欧美精品| www.日韩不卡电影av| 久久久久久网址| 国产不卡视频在线| 亚洲社区在线观看| 最近中文字幕mv在线一区二区三区四区| 日韩欧美一区二区在线| 精品国产一区二区三区久久狼黑人| 亚洲视频综合网| 久久久女女女女999久久| 美女久久久久久久久久久| 欧美日韩中文字幕综合视频| 国产成人精品亚洲精品| 色悠久久久久综合先锋影音下载| 日韩精品有码在线观看| 91精品国产综合久久香蕉的用户体验| 精品电影在线观看| 97婷婷涩涩精品一区| 亚洲成人久久久| 欧美天天综合色影久久精品| 最近免费中文字幕视频2019| 91丨九色丨国产在线| 国产精品美女视频网站| 国产精品成人va在线观看| 久久精品国产精品亚洲| 亚洲老司机av| 91美女高潮出水| 原创国产精品91| 大量国产精品视频| 最新的欧美黄色| 亚洲欧美999| 日韩av免费在线看| 欧美与黑人午夜性猛交久久久| 欧美最顶级的aⅴ艳星| 亚洲男人第一av网站| 97精品久久久中文字幕免费| 亚洲成人av中文字幕| 91丨九色丨国产在线| 操日韩av在线电影| 欧美肥老太性生活视频| 国产盗摄xxxx视频xxx69| 中文字幕亚洲图片| 欧美黑人性视频| 国产91精品黑色丝袜高跟鞋| 日韩中文有码在线视频| 国产自产女人91一区在线观看| 亚洲日韩中文字幕在线播放| 激情成人在线视频| 欧美成人一区在线| 欧美整片在线观看| 久久国产精品99国产精| 在线观看日韩视频| 91久久国产精品91久久性色|