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

Mybatis如何自動生成sql語句

 更新時間:2021年12月14日 17:16:07   作者:GeBiao285869350  
這篇文章主要介紹了Mybatis如何自動生成sql語句,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Mybatis自動生成sql語句

創(chuàng)建maven項目,將該配置文件運行即可生成 sql 語句

<?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">
<!-- MyBatis 自動生成sql代碼  -->
<generatorConfiguration>
    <!-- 導入jar包(路徑) -->
    <classPathEntry location="E:\CourseWare\MYSQL\mysql-connector-java-5.1.26-bin.jar" />
    <!-- 設置生成代碼的規(guī)則 targetRuntime 開發(fā)環(huán)境使用Mybatis3的版本 -->
    <context id="DB2Tables" targetRuntime="MyBatis3">
        <plugin type="org.mybatis.generator.plugins.RowBoundsPlugin"></plugin>
        <commentGenerator>
            <!-- 這個元素用來去除指定生成的注釋中是否包含生成的日期 false:表示保護 -->
            <!-- 如果生成日期,會造成即使修改一個字段,整個實體類所有屬性都會發(fā)生變化,不利于版本控制,所以設置為true -->
            <property name="suppressDate" value="true" />
            <!-- 是否去除自動生成的注釋 true:是 : false:否 -->
            <property name="suppressAllComments" value="false" />
        </commentGenerator>
        <!-- 連接數據庫的四要素 -->
        <jdbcConnection 
            driverClass="com.mysql.jdbc.Driver"
            connectionURL="jdbc:mysql://localhost:3306/user" 
            userId="root"
            password="root">
        </jdbcConnection>
        <!-- 該屬性用于指定MyBatis生成器是否應該強制使用java.math。小數點和數字域的BigDecimal -->   
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>
        <!-- 定義實體類 bean -->
        <javaModelGenerator targetPackage="en.et.entity" targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
        <!-- 接口映射的注解 或者xml文件路徑 -->
        <sqlMapGenerator targetPackage="cn.et.resource" targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>
        <!-- 生成的接口所在的位置 type="xml 或者 注解" -->
        <javaClientGenerator type="ANNOTATEDMAPPER"
            targetPackage="en.et.dao" targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>
        <!-- 告訴mbg 需要生成代碼的數據庫的表 -->
        <table tableName="emp"></table>
    </context>
</generatorConfiguration>

Mybatis的動態(tài)sql語句

Mybatis的動態(tài)sql語句主要解決的問題是不同條件sql語句的拼接。

例如:根據用戶信息,查詢用戶列表,當不知道根據的是用戶的什么信息時,寫出查詢的SQL語句是有一定困難的,而動態(tài)SQL語句主要解決的就是此類問題。

if標簽的使用

在持久層接口定義方法

    /**
     * 根據用戶信息,查詢用戶列表
     * @param user
     * @return
     */
    List<User> findByUser(User user);

編寫持久層接口對應的映射文件

 <!-- 根據用戶信息,查詢用戶列表 -->
    <select id="findByUser" resultType="User" parameterType="User">
        select *from user where 1 = 1
        <if test="id != 0">
            and id = #{id}
        </if>
        <if test="username != null and username != '' ">
            and username like #{username}
        </if>
        <if test="birthday != null">
            and birthday = #{birthday}
        </if>
        <if test="sex != null">
            and sex = #{sex}
        </if>
        <if test="address != null">
            and address = #{address}
        </if>
    </select>

編寫測試方法

  /**
     * 根據用戶信息,查詢用戶列表
     */
    @Test
    public void testFindByUser()
    {
        User user = new User();
        user.setUsername("%王%");
        List<User> users = userDao.findByUser(user);
        for (User u : users)
        {
            System.out.println(u);
        }
    }

where標簽的使用

為了簡化上面 where 1=1 的條件拼接,我們可以采用標簽來簡化開發(fā),因此修改持久層映射文件

 <!-- 根據用戶信息,查詢用戶列表 -->
    <select id="findByUser" resultType="User" parameterType="User">
        select *from user
        <where>
            <if test="id != 0">
                and id = #{id}
            </if>
            <if test="username != null and username != '' ">
                and username like #{username}
            </if>
            <if test="birthday != null">
                and birthday = #{birthday}
            </if>
            <if test="sex != null">
                and sex = #{sex}
            </if>
            <if test="address != null">
                and address = #{address}
            </if>
        </where>
    </select>

foreach標簽的使用

froeach是對一個集合進行遍歷,通常在構建in條件語句的時候應用

例如:根據一個用戶id集合查詢用戶。

對id集合進行封裝,加入到List集合

在這里插入圖片描述

編寫持久層接口方法

  /**
     * 根據id集合查詢用戶
     * @param queryUR
     * @return
     */
    List<User> findInIds(QueryUR queryUR);

編寫持久層接口映射文件

  <!--根據id集合查詢用戶 -->
    <select id="findInIds" resultType="user" parameterType="int">
       select *from user
       <where>
           <if test="ids != null and ids.size() > 0">
                <!-- foreach:用于遍歷集合
                    collection:代表要遍歷的集合
                    open:代表語句的開始部分
                    close:代表語句的結束部分
                    item:代表需要遍歷的集合的每個元素
                    sperator:代表分隔符
                 -->
               <foreach collection="ids" open="id in (" close=")" item="uid" separator=",">
                    #{uid}
               </foreach>
           </if>
       </where>
    </select>

編寫測試方法

  /**
     * 根據id集合查詢用戶
     */
    @Test
    public void testFindInIds()
    {
        QueryUR queryUR = new QueryUR();
        List<Integer> ids = new ArrayList<Integer>();
        ids.add(41);
        ids.add(43);
        ids.add(45);
        queryUR.setIds(ids);
        List<User> users = userDao.findInIds(queryUR);
        for (User user : users)
        {
            System.out.println(user);
        }
    }

sql語句的簡化編寫

在映射文件中,可以將重復的sql語句通過sql標簽提取出來,使用include標簽引用即可,已達到sql重用的效果。如下所示:

    <!--抽取重復的語句代碼片段-->
    <sql id="querySql">
        select *from user
    </sql>
    <select id="findAll" resultType="USER" >
        <include refid="querySql"></include>
    </select>
    <!--根據id查詢用戶-->
    <select id="findById" resultType="User" parameterType="int">
        <include refid="querySql"></include> where id= #{userID};
    </select>

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • SpringBoot 如何編寫配置文件

    SpringBoot 如何編寫配置文件

    這篇文章主要介紹了SpringBoot 編寫配置文件的兩種方法,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下
    2020-11-11
  • Java實現解析ini文件對應到JavaBean中

    Java實現解析ini文件對應到JavaBean中

    ini 文件是Initialization File的縮寫,即初始化文件,是windows的系統(tǒng)配置文件所采用的存儲格式。這篇文章主要介紹了通過Java實現解析ini文件對應到JavaBean中,需要的可以參考一下
    2022-01-01
  • 關于ArrayList的動態(tài)擴容機制解讀

    關于ArrayList的動態(tài)擴容機制解讀

    這篇文章主要介紹了關于ArrayList的動態(tài)擴容機制解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Java使用poi生成word文檔的簡單實例

    Java使用poi生成word文檔的簡單實例

    Java POI是一個用于處理Microsoft Office文件(如Word、Excel和PowerPoint)的API,它是一個開源庫,允許Java開發(fā)者讀取、創(chuàng)建和修改這些文檔,本文給大集介紹了Java使用poi生成word文檔的簡單實例,感興趣的朋友可以參考下
    2024-06-06
  • java實現多人聊天室可視化

    java實現多人聊天室可視化

    這篇文章主要為大家詳細介紹了java實現多人聊天室可視化,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Springboot如何設置靜態(tài)資源緩存一年

    Springboot如何設置靜態(tài)資源緩存一年

    這篇文章主要介紹了Springboot如何設置靜態(tài)資源緩存一年,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • java分頁之假分頁實現簡單的分頁器

    java分頁之假分頁實現簡單的分頁器

    這篇文章主要介紹了java分頁之假分頁實現簡單的分頁器的相關資料,需要的朋友可以參考下
    2016-04-04
  • Java異常跟蹤棧定義與用法示例

    Java異常跟蹤棧定義與用法示例

    這篇文章主要介紹了Java異常跟蹤棧定義與用法,結合具體實例形式分析了異常處理棧的概念、原理及相關使用技巧,需要的朋友可以參考下
    2018-05-05
  • Java泛型初學者之上、下界通配符的深入理解

    Java泛型初學者之上、下界通配符的深入理解

    這篇文章主要給大家介紹了關于Java泛型初學者之上、下界通配符的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者實用Java具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-12-12
  • Java中使用Filter過濾器的方法

    Java中使用Filter過濾器的方法

    Filter過濾器是javaWeb層面的,它跟Servlet類似,每次前端請求,首先進入的是過濾器,我們必須實現Filter接口,重寫三個方法,才能使用Filter過濾器,需要的朋友可以參考下
    2021-06-06

最新評論

富锦市| 西青区| 丰县| 惠来县| 潼关县| 佳木斯市| 民权县| 吴川市| 内江市| 阳东县| 峨眉山市| 大埔县| 梓潼县| 米易县| 廉江市| 平塘县| 沙坪坝区| 岳阳县| 通海县| 岳阳县| 加查县| 富阳市| 呼伦贝尔市| 霍林郭勒市| 阿克苏市| 凉山| 泗水县| 马山县| 鲁山县| 清苑县| 大埔区| 东安县| 玉门市| 腾冲县| 台东县| 东安县| 信丰县| 敦化市| 民权县| 葵青区| 汕尾市|