最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Boot整合mybatis并自動(dòng)生成mapper和實(shí)體實(shí)例解析

 更新時(shí)間:2018年05月07日 16:09:09   投稿:mrr  
本文是小編給大家總結(jié)的關(guān)于Spring Boot整合mybatis并自動(dòng)生成mapper和實(shí)體的內(nèi)容,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

最近一直都在學(xué)習(xí)Java,發(fā)現(xiàn)目前Java招聘中,mybatis出現(xiàn)的頻率挺高的,可能是目前Java開發(fā)中使用比較多的數(shù)據(jù)庫(kù)ORM框架。于是我準(zhǔn)備研究下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>
 <!-- 這個(gè)是官方的mybatis依賴,這個(gè)你不加沒法用噻 -->
  <dependency>
   <groupId>org.mybatis.spring.boot</groupId>
   <artifactId>mybatis-spring-boot-starter</artifactId>
   <version>1.3.2</version>
  </dependency>
  <!-- 這個(gè)是自動(dòng)生成mapper等的依賴,必須得加-->
  <dependency>
   <groupId>org.mybatis.generator</groupId>
   <artifactId>mybatis-generator</artifactId>
   <version>1.3.5</version>
   <type>pom</type>
  </dependency>
  <!--這個(gè)是自動(dòng)生成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配置文件中進(jìn)行數(shù)據(jù)庫(kù)和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 #這里直接寫*,對(duì)后面自定義sql,編寫xxxExt.xml有好處,自動(dòng)掃描到這些文件,不用再改配置了
mybatis.type-aliases-package=com.dameiweb.learn.model
logging.level.com.dameiweb.learn.dao=debug
#mybatis.config = mybatis 配置文件名稱
#mybatis.mapperLocations = mapper xml 文件地址
#mybatis.typeAliasesPackage = 實(shí)體類包路徑
#mybatis.typeHandlersPackage = type handlers 處理器包路徑
#mybatis.check-config-location = 檢查 mybatis 配置是否存在,一般命名為 mybatis-config.xml
#mybatis.executorType = 執(zhí)行模式。默認(rèn)是 SIMPLE

3.mybatis的配置和自動(dòng)生成mapper的配置

在resource目錄下新建一個(gè)generatorConfig.xml和mybatis-config.xml。內(nèi)容如下:

generatorConfig.xml內(nèi)容

<?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>
  <!--數(shù)據(jù)庫(kù)鏈接地址賬號(hào)密碼-->
  <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"/>
   <!-- 從數(shù)據(jù)庫(kù)返回的值被清理前后的空格 -->
   <property name="trimStrings" value="false"/>
  </javaModelGenerator>
  <!--生成映射文件存放位置-->
  <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
   <property name="enableSubPackages" value="true"/>
  </sqlMapGenerator>
  <!--生成Dao類存放位置-->
  <!-- 客戶端代碼,生成易于使用的針對(duì)Model對(duì)象和XML配置文件 的代碼
    type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper對(duì)象
    type="MIXEDMAPPER",生成基于注解的Java Model 和相應(yīng)的Mapper對(duì)象
    type="XMLMAPPER",生成SQLMap XML文件和獨(dú)立的Mapper接口
  -->
  <javaClientGenerator type="XMLMAPPER" targetPackage="com.dameiweb.learn.dao" targetProject="src/main/java">
   <property name="enableSubPackages" value="true"/>
  </javaClientGenerator>
 </context>
</generatorConfiguration>

mybatis-config.xml的內(nèi)容:

<?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自動(dòng)生成mapper和實(shí)體的功能。這樣我們要生成某個(gè)表的實(shí)體和mapper的時(shí)候,只需要在generatorConfig.xml中javaClientGenerator標(biāo)簽之后添加下面的內(nèi)容即可。

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

<!--生成對(duì)應(yīng)表及類名-->
  <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使用這個(gè)標(biāo)簽是為了防止數(shù)據(jù)庫(kù)字段類型為text時(shí)候,mybatis會(huì)生成xxxxWithBLOBs文件。-->

然后點(diǎn)擊idea右側(cè)Maven projects,就可以看到mybatis-generate下的mybatis-generate:generate,雙擊mybatis-generate:generate即可。

**generator 注意點(diǎn),也可以說是BUG

就是在生成的時(shí)候,在第二次生成的時(shí)候,dao 和entity 都會(huì)直接覆蓋,而Mapper.xml 會(huì)直接追加,導(dǎo)致運(yùn)行報(bào)錯(cuò),而且很難找。**

4.mybatis自定義sql

當(dāng)我們需要自定義sql的時(shí)候,我們不能把這些也放到mapper文件中。不然,當(dāng)數(shù)據(jù)庫(kù)表的字段有更新需要重新生成mapper的時(shí)候,這樣我們自定義的sql不就被覆蓋沒了么!所以我們需要在MovieMapper.xml的同級(jí)目錄里,新建一個(gè)MovieMapperExt.xml文件,把自定義的sql放到這里,例子如下:

MovieMapperExt.xml文件內(nèi)容

<?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>

總結(jié)

以上所述是小編給大家介紹的Spring Boot整合mybatis并自動(dòng)生成mapper和實(shí)體,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • SpringBoot配置嵌入式Servlet容器和使用外置Servlet容器的教程圖解

    SpringBoot配置嵌入式Servlet容器和使用外置Servlet容器的教程圖解

    這篇文章主要介紹了SpringBoot配置嵌入式Servlet容器和使用外置Servlet容器的教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 淺析Java中的虛擬線程

    淺析Java中的虛擬線程

    在本篇文章中,小編將帶大家深入了解Java虛擬線程的原理、如何使用、使用的注意事項(xiàng)以及其他相似技術(shù)的差別,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10
  • IDEA報(bào)錯(cuò):Process terminated的問題及解決

    IDEA報(bào)錯(cuò):Process terminated的問題及解決

    這篇文章主要介紹了IDEA報(bào)錯(cuò):Process terminated的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • mybatis查詢實(shí)現(xiàn)返回List<Map>類型數(shù)據(jù)操作

    mybatis查詢實(shí)現(xiàn)返回List<Map>類型數(shù)據(jù)操作

    這篇文章主要介紹了mybatis查詢實(shí)現(xiàn)返回List<Map>類型數(shù)據(jù)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 如何在Spring Boot中使用MQTT

    如何在Spring Boot中使用MQTT

    這篇文章主要介紹了如何在Spring Boot中使用MQTT,幫助大家更好的理解和學(xué)習(xí)使用Spring Boot,感興趣的朋友可以了解下
    2021-04-04
  • [Spring MVC]-詳解SpringMVC的各種參數(shù)綁定方式

    [Spring MVC]-詳解SpringMVC的各種參數(shù)綁定方式

    本篇文章主要介紹了SpringMVC的各種參數(shù)綁定方式 ,具有一定的參考價(jià)值,有需要的可以了解一下。
    2016-12-12
  • Scala數(shù)據(jù)庫(kù)連接池的簡(jiǎn)單實(shí)現(xiàn)

    Scala數(shù)據(jù)庫(kù)連接池的簡(jiǎn)單實(shí)現(xiàn)

    本文主要介紹了Scala數(shù)據(jù)庫(kù)連接池的簡(jiǎn)單實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • springboot詳解實(shí)現(xiàn)車險(xiǎn)理賠信息管理系統(tǒng)代碼

    springboot詳解實(shí)現(xiàn)車險(xiǎn)理賠信息管理系統(tǒng)代碼

    本系統(tǒng)基于Springboot開發(fā)實(shí)現(xiàn)了一個(gè)為用戶車險(xiǎn)進(jìn)行理賠信息管理的一個(gè)信息化管理系統(tǒng),核心的業(yè)務(wù)主要是用戶申請(qǐng)保險(xiǎn)理賠,管理員審核進(jìn)入理賠程序,事故調(diào)查員對(duì)事故進(jìn)行調(diào)查和現(xiàn)場(chǎng)勘察,這其中共涉及到三類用戶,購(gòu)買保險(xiǎn)的客戶,事故調(diào)查員和系統(tǒng)管理員
    2022-06-06
  • springMvc和mybatis-plus中枚舉值和字段的映射

    springMvc和mybatis-plus中枚舉值和字段的映射

    這篇文章主要為大家介紹了springMvc和mybatis-plus中枚舉值和字段的映射示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • Java使用jxl包寫Excel文件適合列寬實(shí)現(xiàn)

    Java使用jxl包寫Excel文件適合列寬實(shí)現(xiàn)

    用jxl.jar包,讀寫過Excel文件。也沒有注意最適合列寬的問題,但是jxl.jar沒有提供最適合列寬的功能,上次用到寫了一下,可以基本實(shí)現(xiàn)最適合列寬。
    2013-11-11

最新評(píng)論

富川| 和林格尔县| 佳木斯市| 洛浦县| 辰溪县| 拜城县| 富宁县| 金昌市| 西林县| 麻栗坡县| 平泉县| 屏东市| 宜良县| 沐川县| 拉萨市| 汨罗市| 衡山县| 双鸭山市| 满洲里市| 景泰县| 临桂县| 五台县| 贵南县| 松溪县| 兰州市| 莲花县| 陇西县| 滨州市| 游戏| 建水县| 营口市| 恩平市| 汽车| 郎溪县| 华宁县| 万全县| 龙泉市| 县级市| 高雄市| 宁都县| 应城市|