Mybatis Generator最完整配置詳解

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

<context id="mysql" defaultModelType="hierarchical" targetRuntime="MyBatis3Simple" >

<!-- 自動(dòng)識(shí)別數(shù)據(jù)庫(kù)關(guān)鍵字烁挟,默認(rèn)false锚国,如果設(shè)置為true傲须,根據(jù)SqlReservedWords中定義的關(guān)鍵字列表游岳;
    一般保留默認(rèn)值溯乒,遇到數(shù)據(jù)庫(kù)關(guān)鍵字(Java關(guān)鍵字)敛熬,使用columnOverride覆蓋
 -->
<property name="autoDelimitKeywords" value="false"/>
<!-- 生成的Java文件的編碼 -->
<property name="javaFileEncoding" value="UTF-8"/>
<!-- 格式化java代碼 -->
<property name="javaFormatter" value="org.mybatis.generator.api.dom.DefaultJavaFormatter"/>
<!-- 格式化XML代碼 -->
<property name="xmlFormatter" value="org.mybatis.generator.api.dom.DefaultXmlFormatter"/>

<!-- beginningDelimiter和endingDelimiter:指明數(shù)據(jù)庫(kù)的用于標(biāo)記數(shù)據(jù)庫(kù)對(duì)象名的符號(hào)黑低,比如ORACLE就是雙引號(hào)锤灿,MYSQL默認(rèn)是`反引號(hào)挽拔; -->
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>

<!-- 必須要有的,使用這個(gè)配置鏈接數(shù)據(jù)庫(kù)
    @TODO:是否可以擴(kuò)展
 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql:///pss" userId="root" password="admin">
    <!-- 這里面可以設(shè)置property屬性但校,每一個(gè)property屬性都設(shè)置到配置的Driver上 -->
</jdbcConnection>

<!-- java類(lèi)型處理器 
    用于處理DB中的類(lèi)型到Java中的類(lèi)型螃诅,默認(rèn)使用JavaTypeResolverDefaultImpl;
    注意一點(diǎn),默認(rèn)會(huì)先嘗試使用Integer术裸,Long倘是,Short等來(lái)對(duì)應(yīng)DECIMAL和 NUMERIC數(shù)據(jù)類(lèi)型; 
-->
<javaTypeResolver type="org.mybatis.generator.internal.types.JavaTypeResolverDefaultImpl">
    <!-- 
        true:使用BigDecimal對(duì)應(yīng)DECIMAL和 NUMERIC數(shù)據(jù)類(lèi)型
        false:默認(rèn),
            scale>0;length>18:使用BigDecimal;
            scale=0;length[10,18]:使用Long袭艺;
            scale=0;length[5,9]:使用Integer搀崭;
            scale=0;length<5:使用Short;
     -->
    <property name="forceBigDecimals" value="false"/>
</javaTypeResolver>


<!-- java模型創(chuàng)建器猾编,是必須要的元素
    負(fù)責(zé):1瘤睹,key類(lèi)(見(jiàn)context的defaultModelType);2答倡,java類(lèi)轰传;3,查詢(xún)類(lèi)
    targetPackage:生成的類(lèi)要放的包苇羡,真實(shí)的包受enableSubPackages屬性控制绸吸;
    targetProject:目標(biāo)項(xiàng)目鼻弧,指定一個(gè)存在的目錄下设江,生成的內(nèi)容會(huì)放到指定目錄中,如果目錄不存在攘轩,MBG不會(huì)自動(dòng)建目錄
 -->
<javaModelGenerator targetPackage="com._520it.mybatis.domain" targetProject="src/main/java">
    <!--  for MyBatis3/MyBatis3Simple
        自動(dòng)為每一個(gè)生成的類(lèi)創(chuàng)建一個(gè)構(gòu)造方法叉存,構(gòu)造方法包含了所有的field;而不是使用setter度帮;
     -->
    <property name="constructorBased" value="false"/>

    <!-- 在targetPackage的基礎(chǔ)上歼捏,根據(jù)數(shù)據(jù)庫(kù)的schema再生成一層package,最終生成的類(lèi)放在這個(gè)package下笨篷,默認(rèn)為false -->
    <property name="enableSubPackages" value="true"/>

    <!-- for MyBatis3 / MyBatis3Simple
        是否創(chuàng)建一個(gè)不可變的類(lèi)瞳秽,如果為true,
        那么MBG會(huì)創(chuàng)建一個(gè)沒(méi)有setter方法的類(lèi)率翅,取而代之的是類(lèi)似constructorBased的類(lèi)
     -->
    <property name="immutable" value="false"/>

    <!-- 設(shè)置一個(gè)根對(duì)象练俐,
        如果設(shè)置了這個(gè)根對(duì)象,那么生成的keyClass或者recordClass會(huì)繼承這個(gè)類(lèi)冕臭;在Table的rootClass屬性中可以覆蓋該選項(xiàng)
        注意:如果在key class或者record class中有root class相同的屬性腺晾,MBG就不會(huì)重新生成這些屬性了,包括:
            1辜贵,屬性名相同悯蝉,類(lèi)型相同,有相同的getter/setter方法托慨;
     -->
    <property name="rootClass" value="com._520it.mybatis.domain.BaseDomain"/>

    <!-- 設(shè)置是否在getter方法中鼻由,對(duì)String類(lèi)型字段調(diào)用trim()方法 -->
    <property name="trimStrings" value="true"/>
</javaModelGenerator>


<!-- 生成SQL map的XML文件生成器,
    注意,在Mybatis3之后嗡靡,我們可以使用mapper.xml文件+Mapper接口(或者不用mapper接口)跺撼,
        或者只使用Mapper接口+Annotation,所以讨彼,如果 javaClientGenerator配置中配置了需要生成XML的話(huà)歉井,這個(gè)元素就必須配置
    targetPackage/targetProject:同javaModelGenerator
 -->
<sqlMapGenerator targetPackage="com._520it.mybatis.mapper" targetProject="src/main/resources">
    <!-- 在targetPackage的基礎(chǔ)上,根據(jù)數(shù)據(jù)庫(kù)的schema再生成一層package哈误,最終生成的類(lèi)放在這個(gè)package下哩至,默認(rèn)為false -->
    <property name="enableSubPackages" value="true"/>
</sqlMapGenerator>


<!-- 對(duì)于mybatis來(lái)說(shuō),即生成Mapper接口蜜自,注意菩貌,如果沒(méi)有配置該元素,那么默認(rèn)不會(huì)生成Mapper接口 
    targetPackage/targetProject:同javaModelGenerator
    type:選擇怎么生成mapper接口(在MyBatis3/MyBatis3Simple下):
        1重荠,ANNOTATEDMAPPER:會(huì)生成使用Mapper接口+Annotation的方式創(chuàng)建(SQL生成在annotation中)箭阶,不會(huì)生成對(duì)應(yīng)的XML;
        2戈鲁,MIXEDMAPPER:使用混合配置仇参,會(huì)生成Mapper接口,并適當(dāng)添加合適的Annotation婆殿,但是XML會(huì)生成在XML中诈乒;
        3,XMLMAPPER:會(huì)生成Mapper接口婆芦,接口完全依賴(lài)XML怕磨;
    注意,如果context是MyBatis3Simple:只支持ANNOTATEDMAPPER和XMLMAPPER
-->
<javaClientGenerator targetPackage="com._520it.mybatis.mapper" type="ANNOTATEDMAPPER" targetProject="src/main/java">
    <!-- 在targetPackage的基礎(chǔ)上消约,根據(jù)數(shù)據(jù)庫(kù)的schema再生成一層package肠鲫,最終生成的類(lèi)放在這個(gè)package下,默認(rèn)為false -->
    <property name="enableSubPackages" value="true"/>

    <!-- 可以為所有生成的接口添加一個(gè)父接口或粮,但是MBG只負(fù)責(zé)生成导饲,不負(fù)責(zé)檢查
    <property name="rootInterface" value=""/>
     -->
</javaClientGenerator>

<!-- 選擇一個(gè)table來(lái)生成相關(guān)文件,可以有一個(gè)或多個(gè)table被啼,必須要有table元素
    選擇的table會(huì)生成一下文件:
    1帜消,SQL map文件
    2,生成一個(gè)主鍵類(lèi)浓体;
    3泡挺,除了BLOB和主鍵的其他字段的類(lèi);
    4命浴,包含BLOB的類(lèi)娄猫;
    5贱除,一個(gè)用戶(hù)生成動(dòng)態(tài)查詢(xún)的條件類(lèi)(selectByExample, deleteByExample),可選媳溺;
    6月幌,Mapper接口(可選)

    tableName(必要):要生成對(duì)象的表名;
    注意:大小寫(xiě)敏感問(wèn)題悬蔽。正常情況下扯躺,MBG會(huì)自動(dòng)的去識(shí)別數(shù)據(jù)庫(kù)標(biāo)識(shí)符的大小寫(xiě)敏感度,在一般情況下蝎困,MBG會(huì)
        根據(jù)設(shè)置的schema录语,catalog或tablename去查詢(xún)數(shù)據(jù)表,按照下面的流程:
        1禾乘,如果schema澎埠,catalog或tablename中有空格,那么設(shè)置的是什么格式始藕,就精確的使用指定的大小寫(xiě)格式去查詢(xún)蒲稳;
        2,否則伍派,如果數(shù)據(jù)庫(kù)的標(biāo)識(shí)符使用大寫(xiě)的江耀,那么MBG自動(dòng)把表名變成大寫(xiě)再查找;
        3拙已,否則决记,如果數(shù)據(jù)庫(kù)的標(biāo)識(shí)符使用小寫(xiě)的摧冀,那么MBG自動(dòng)把表名變成小寫(xiě)再查找倍踪;
        4,否則索昂,使用指定的大小寫(xiě)格式查詢(xún)建车;
    另外的,如果在創(chuàng)建表的時(shí)候椒惨,使用的""把數(shù)據(jù)庫(kù)對(duì)象規(guī)定大小寫(xiě)缤至,就算數(shù)據(jù)庫(kù)標(biāo)識(shí)符是使用的大寫(xiě),在這種情況下也會(huì)使用給定的大小寫(xiě)來(lái)創(chuàng)建表名康谆;
    這個(gè)時(shí)候领斥,請(qǐng)?jiān)O(shè)置delimitIdentifiers="true"即可保留大小寫(xiě)格式;

    可選:
    1沃暗,schema:數(shù)據(jù)庫(kù)的schema月洛;
    2,catalog:數(shù)據(jù)庫(kù)的catalog孽锥;
    3嚼黔,alias:為數(shù)據(jù)表設(shè)置的別名细层,如果設(shè)置了alias,那么生成的所有的SELECT SQL語(yǔ)句中唬涧,列名會(huì)變成:alias_actualColumnName
    4疫赎,domainObjectName:生成的domain類(lèi)的名字,如果不設(shè)置碎节,直接使用表名作為domain類(lèi)的名字捧搞;可以設(shè)置為somepck.domainName,那么會(huì)自動(dòng)把domainName類(lèi)再放到somepck包里面狮荔;
    5实牡,enableInsert(默認(rèn)true):指定是否生成insert語(yǔ)句;
    6轴合,enableSelectByPrimaryKey(默認(rèn)true):指定是否生成按照主鍵查詢(xún)對(duì)象的語(yǔ)句(就是getById或get)创坞;
    7,enableSelectByExample(默認(rèn)true):MyBatis3Simple為false受葛,指定是否生成動(dòng)態(tài)查詢(xún)語(yǔ)句题涨;
    8,enableUpdateByPrimaryKey(默認(rèn)true):指定是否生成按照主鍵修改對(duì)象的語(yǔ)句(即update)总滩;
    9纲堵,enableDeleteByPrimaryKey(默認(rèn)true):指定是否生成按照主鍵刪除對(duì)象的語(yǔ)句(即delete);
    10闰渔,enableDeleteByExample(默認(rèn)true):MyBatis3Simple為false席函,指定是否生成動(dòng)態(tài)刪除語(yǔ)句;
    11冈涧,enableCountByExample(默認(rèn)true):MyBatis3Simple為false茂附,指定是否生成動(dòng)態(tài)查詢(xún)總條數(shù)語(yǔ)句(用于分頁(yè)的總條數(shù)查詢(xún));
    12督弓,enableUpdateByExample(默認(rèn)true):MyBatis3Simple為false营曼,指定是否生成動(dòng)態(tài)修改語(yǔ)句(只修改對(duì)象中不為空的屬性);
    13愚隧,modelType:參考context元素的defaultModelType蒂阱,相當(dāng)于覆蓋;
    14狂塘,delimitIdentifiers:參考tableName的解釋?zhuān)⒁饴济海J(rèn)的delimitIdentifiers是雙引號(hào),如果類(lèi)似MYSQL這樣的數(shù)據(jù)庫(kù)荞胡,使用的是`(反引號(hào)妈踊,那么還需要設(shè)置context的beginningDelimiter和endingDelimiter屬性)
    15,delimitAllColumns:設(shè)置是否所有生成的SQL中的列名都使用標(biāo)識(shí)符引起來(lái)硝训。默認(rèn)為false响委,delimitIdentifiers參考context的屬性

    注意新思,table里面很多參數(shù)都是對(duì)javaModelGenerator,context等元素的默認(rèn)屬性的一個(gè)復(fù)寫(xiě)赘风;
 -->
<table tableName="userinfo" >

    <!-- 參考 javaModelGenerator 的 constructorBased屬性-->
    <property name="constructorBased" value="false"/>

    <!-- 默認(rèn)為false夹囚,如果設(shè)置為true,在生成的SQL中邀窃,table名字不會(huì)加上catalog或schema荸哟; -->
    <property name="ignoreQualifiersAtRuntime" value="false"/>

    <!-- 參考 javaModelGenerator 的 immutable 屬性 -->
    <property name="immutable" value="false"/>

    <!-- 指定是否只生成domain類(lèi),如果設(shè)置為true瞬捕,只生成domain類(lèi)鞍历,如果還配置了sqlMapGenerator,那么在mapper XML文件中肪虎,只生成resultMap元素 -->
    <property name="modelOnly" value="false"/>

    <!-- 參考 javaModelGenerator 的 rootClass 屬性 
    <property name="rootClass" value=""/>
     -->

    <!-- 參考javaClientGenerator 的  rootInterface 屬性
    <property name="rootInterface" value=""/>
    -->

    <!-- 如果設(shè)置了runtimeCatalog劣砍,那么在生成的SQL中,使用該指定的catalog扇救,而不是table元素上的catalog 
    <property name="runtimeCatalog" value=""/>
    -->

    <!-- 如果設(shè)置了runtimeSchema刑枝,那么在生成的SQL中,使用該指定的schema迅腔,而不是table元素上的schema 
    <property name="runtimeSchema" value=""/>
    -->

    <!-- 如果設(shè)置了runtimeTableName装畅,那么在生成的SQL中,使用該指定的tablename沧烈,而不是table元素上的tablename 
    <property name="runtimeTableName" value=""/>
    -->

    <!-- 注意掠兄,該屬性只針對(duì)MyBatis3Simple有用;
        如果選擇的runtime是MyBatis3Simple锌雀,那么會(huì)生成一個(gè)SelectAll方法蚂夕,如果指定了selectAllOrderByClause,那么會(huì)在該SQL中添加指定的這個(gè)order條件汤锨;
     -->
    <property name="selectAllOrderByClause" value="age desc,username asc"/>

    <!-- 如果設(shè)置為true双抽,生成的model類(lèi)會(huì)直接使用column本身的名字百框,而不會(huì)再使用駝峰命名方法闲礼,比如BORN_DATE,生成的屬性名字就是BORN_DATE,而不會(huì)是bornDate -->
    <property name="useActualColumnNames" value="false"/>


    <!-- generatedKey用于生成生成主鍵的方法铐维,
        如果設(shè)置了該元素柬泽,MBG會(huì)在生成的<insert>元素中生成一條正確的<selectKey>元素,該元素可選
        column:主鍵的列名嫁蛇;
        sqlStatement:要生成的selectKey語(yǔ)句锨并,有以下可選項(xiàng):
            Cloudscape:相當(dāng)于selectKey的SQL為: VALUES IDENTITY_VAL_LOCAL()
            DB2       :相當(dāng)于selectKey的SQL為: VALUES IDENTITY_VAL_LOCAL()
            DB2_MF    :相當(dāng)于selectKey的SQL為:SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1
            Derby      :相當(dāng)于selectKey的SQL為:VALUES IDENTITY_VAL_LOCAL()
            HSQLDB      :相當(dāng)于selectKey的SQL為:CALL IDENTITY()
            Informix  :相當(dāng)于selectKey的SQL為:select dbinfo('sqlca.sqlerrd1') from systables where tabid=1
            MySql      :相當(dāng)于selectKey的SQL為:SELECT LAST_INSERT_ID()
            SqlServer :相當(dāng)于selectKey的SQL為:SELECT SCOPE_IDENTITY()
            SYBASE      :相當(dāng)于selectKey的SQL為:SELECT @@IDENTITY
            JDBC      :相當(dāng)于在生成的insert元素上添加useGeneratedKeys="true"和keyProperty屬性
    <generatedKey column="" sqlStatement=""/>
     -->

    <!-- 
        該元素會(huì)在根據(jù)表中列名計(jì)算對(duì)象屬性名之前先重命名列名,非常適合用于表中的列都有公用的前綴字符串的時(shí)候睬棚,
        比如列名為:CUST_ID,CUST_NAME,CUST_EMAIL,CUST_ADDRESS等第煮;
        那么就可以設(shè)置searchString為"^CUST_"解幼,并使用空白替換,那么生成的Customer對(duì)象中的屬性名稱(chēng)就不是
        custId,custName等包警,而是先被替換為ID,NAME,EMAIL,然后變成屬性:id撵摆,name,email害晦;

        注意特铝,MBG是使用java.util.regex.Matcher.replaceAll來(lái)替換searchString和replaceString的,
        如果使用了columnOverride元素壹瘟,該屬性無(wú)效鲫剿;

    <columnRenamingRule searchString="" replaceString=""/>
     -->


     <!-- 用來(lái)修改表中某個(gè)列的屬性,MBG會(huì)使用修改后的列來(lái)生成domain的屬性稻轨;
         column:要重新設(shè)置的列名灵莲;
         注意,一個(gè)table元素中可以有多個(gè)columnOverride元素哈~
      -->
     <columnOverride column="username">
         <!-- 使用property屬性來(lái)指定列要生成的屬性名稱(chēng) -->
         <property name="property" value="userName"/>

         <!-- javaType用于指定生成的domain的屬性類(lèi)型殴俱,使用類(lèi)型的全限定名
         <property name="javaType" value=""/>
          -->

         <!-- jdbcType用于指定該列的JDBC類(lèi)型 
         <property name="jdbcType" value=""/>
          -->

         <!-- typeHandler 用于指定該列使用到的TypeHandler笆呆,如果要指定,配置類(lèi)型處理器的全限定名
             注意粱挡,mybatis中赠幕,不會(huì)生成到mybatis-config.xml中的typeHandler
             只會(huì)生成類(lèi)似:where id = #{id,jdbcType=BIGINT,typeHandler=com._520it.mybatis.MyTypeHandler}的參數(shù)描述
         <property name="jdbcType" value=""/>
         -->

         <!-- 參考table元素的delimitAllColumns配置,默認(rèn)為false
         <property name="delimitedColumnName" value=""/>
          -->
     </columnOverride>

     <!-- ignoreColumn設(shè)置一個(gè)MGB忽略的列询筏,如果設(shè)置了改列榕堰,那么在生成的domain中,生成的SQL中嫌套,都不會(huì)有該列出現(xiàn) 
         column:指定要忽略的列的名字逆屡;
         delimitedColumnName:參考table元素的delimitAllColumns配置,默認(rèn)為false

         注意踱讨,一個(gè)table元素中可以有多個(gè)ignoreColumn元素
     <ignoreColumn column="deptId" delimitedColumnName=""/>
     -->
</table>

</context>

</generatorConfiguration>
</pre>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末魏蔗,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子痹筛,更是在濱河造成了極大的恐慌莺治,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帚稠,死亡現(xiàn)場(chǎng)離奇詭異谣旁,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)滋早,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)榄审,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人杆麸,你說(shuō)我怎么就攤上這事搁进±烁校” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵饼问,是天一觀(guān)的道長(zhǎng)篮撑。 經(jīng)常有香客問(wèn)我,道長(zhǎng)匆瓜,這世上最難降的妖魔是什么赢笨? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮驮吱,結(jié)果婚禮上茧妒,老公的妹妹穿的比我還像新娘。我一直安慰自己左冬,他們只是感情好桐筏,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著拇砰,像睡著了一般梅忌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上除破,一...
    開(kāi)封第一講書(shū)人閱讀 52,696評(píng)論 1 312
  • 那天牧氮,我揣著相機(jī)與錄音,去河邊找鬼瑰枫。 笑死踱葛,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的光坝。 我是一名探鬼主播尸诽,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼盯另!你這毒婦竟也來(lái)了性含?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鸳惯,失蹤者是張志新(化名)和其女友劉穎商蕴,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體悲敷,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡究恤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了后德。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡抄腔,死狀恐怖瓢湃,靈堂內(nèi)的尸體忽然破棺而出理张,到底是詐尸還是另有隱情,我是刑警寧澤绵患,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布雾叭,位于F島的核電站,受9級(jí)特大地震影響落蝙,放射性物質(zhì)發(fā)生泄漏织狐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一筏勒、第九天 我趴在偏房一處隱蔽的房頂上張望移迫。 院中可真熱鬧,春花似錦管行、人聲如沸厨埋。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)荡陷。三九已至,卻和暖如春迅涮,著一層夾襖步出監(jiān)牢的瞬間废赞,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工叮姑, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蛹头,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓戏溺,卻偏偏與公主長(zhǎng)得像渣蜗,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子旷祸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容