SpringCloud微服務(wù)實戰(zhàn)——搭建企業(yè)級開發(fā)框架(五):數(shù)據(jù)庫持久化集成MySql+Druid+MyBatis-Plus

??在引入相關(guān)數(shù)據(jù)庫持久化相關(guān)依賴庫之前朋鞍,我們可以考慮到棋凳,當我們因業(yè)務(wù)開發(fā)需要,引入各種各樣的依賴庫時坠陈,Jar包沖突是我們必須面對的一個問題萨惑,Spring為了解決這些Jar包的沖突捐康,推出了各種bom,最著名的就是Spring IO Platform bom庸蔼,其中最核心的三個是:spring-framework-bom解总、spring-boot-dependencies、platform-bom姐仅。我們這里參考Spring管理Jar包的方式花枫,新建一個GitEgg-Platform平臺工程,提供各種第三方組件的配置及自定義方法掏膏,使用子工程gitegg-platform-bom統(tǒng)一管理GitEgg自定義方法擴展jar包及第三方Jar包版本劳翰。
1、首先在GitEgg-Platform工程下新建gitegg-platform-db用于管理系統(tǒng)需要用到的數(shù)據(jù)庫驅(qū)動馒疹、數(shù)據(jù)庫連接池的jar包及配置佳簸,新建gitegg-platform-mybatis用于管理系統(tǒng)需要用到的持久層框架,建好的結(jié)構(gòu)如下:

image.png

2颖变、修改GitEgg-Platform根目錄下的pom.xml生均,設(shè)置工程編碼方式,及引入的Spring Boot腥刹,Spring Cloud马胧,gitegg-platform-bom版本:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.gitegg.platform</groupId>
    <artifactId>GitEgg-Platform</artifactId>
    <name>${project.artifactId}</name>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <modules>
        <module>gitegg-platform-bom</module>
        <module>gitegg-platform-db</module>
        <module>gitegg-platform-mybatis</module>
    </modules>

    <properties>
        <!-- jdk版本1.8 -->
        <java.version>1.8</java.version>
        <!-- maven-compiler-plugin插件版本,Java代碼編譯 -->
        <maven.plugin.version>3.8.1</maven.plugin.version>
        <!-- maven編譯時指定編碼UTF-8 -->
        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
        <!-- 項目統(tǒng)一字符集編碼UTF-8 -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <!-- 項目統(tǒng)一字符集編碼UTF-8 -->
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <!-- SpringBoot版本號 -->
        <spring.boot.version>2.3.3.RELEASE</spring.boot.version>
        <!-- SpringCloud版本號 -->
        <spring.cloud.version>Hoxton.SR8</spring.cloud.version>
        <!-- SpringPlatform版本號 -->
        <spring.platform.version>Cairo-SR8</spring.platform.version>

    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.gitegg.platform</groupId>
                <artifactId>gitegg-platform-bom</artifactId>
                <version>${project.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring.boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring.cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <finalName>${project.name}</finalName>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven.plugin.version}</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <encoding>UTF-8</encoding>
                    <compilerArgs>
                        <arg>-parameters</arg>
                    </compilerArgs>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <repository>
            <id>aliyun-repos</id>
            <url>https://maven.aliyun.com/nexus/content/groups/public/</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>gitegg-release</id>
            <name>Release Repository</name>
            <url>https://packages.aliyun.com/maven/repository/2020515-release-dpxo1j/</url>
        </repository>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>aliyun-plugin</id>
            <url>https://maven.aliyun.com/nexus/content/groups/public/</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

    <profiles>
        <profile>
            <id>dev</id>
            <properties>
                <profileActive>dev</profileActive>
            </properties>
            <activation>
                <!--默認為dev環(huán)境打包方式-->
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>test</id>
            <properties>
                <profileActive>test</profileActive>
            </properties>
        </profile>
        <profile>
            <id>pro</id>
            <properties>
                <profileActive>pro</profileActive>
            </properties>
        </profile>
    </profiles>

</project>

3衔峰、修改gitegg-platform-bom工程下的pom.xml佩脊,引入目前需要的數(shù)據(jù)庫驅(qū)動,數(shù)據(jù)連接池及Mybatis-Plus:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.3.RELEASE</version>
        <relativePath />
    </parent>

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.gitegg.platform</groupId>
    <artifactId>gitegg-platform-bom</artifactId>
    <name>${project.artifactId}</name>
    <version>${gitegg.project.version}</version>
    <packaging>pom</packaging>

    <properties>
        <!-- jdk版本1.8 -->
        <java.version>1.8</java.version>
        <!-- maven-compiler-plugin插件版本朽色,Java代碼編譯 -->
        <maven.plugin.version>3.8.1</maven.plugin.version>
        <!-- maven編譯時指定編碼UTF-8 -->
        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
        <!-- 項目統(tǒng)一字符集編碼UTF-8 -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <!-- 項目統(tǒng)一字符集編碼UTF-8 -->
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <!-- GitEgg項目統(tǒng)一設(shè)置版本號 -->
        <gitegg.project.version>1.0-SNAPSHOT</gitegg.project.version>

        <!-- mysql數(shù)據(jù)庫驅(qū)動 -->
        <mysql.connector.version>8.0.17</mysql.connector.version>
        <!-- postgresql數(shù)據(jù)庫驅(qū)動 -->
        <postgresql.connector.version>9.1-901.jdbc4</postgresql.connector.version>
        <!-- 數(shù)據(jù)庫連接池Druid -->
        <druid.version>1.1.23</druid.version>
        <!-- Mybatis Plus增強工具 -->
        <mybatis.plus.version>3.4.0</mybatis.plus.version>

    </properties>

    <dependencyManagement>
        <dependencies>
            <!-- gitegg數(shù)據(jù)庫驅(qū)動及連接池 -->
            <dependency>
                <groupId>com.gitegg.platform</groupId>
                <artifactId>gitegg-platform-db</artifactId>
                <version>${gitegg.project.version}</version>
            </dependency>
            <!-- gitegg mybatis-plus -->
            <dependency>
                <groupId>com.gitegg.platform</groupId>
                <artifactId>gitegg-platform-mybatis</artifactId>
                <version>${gitegg.project.version}</version>
            </dependency>
            <!-- mysql數(shù)據(jù)庫驅(qū)動 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.connector.version}</version>
            </dependency>
            <!-- postgresql數(shù)據(jù)庫驅(qū)動 -->
            <dependency>
                <groupId>postgresql</groupId>
                <artifactId>postgresql</artifactId>
                <version>${postgresql.connector.version}</version>
            </dependency>
            <!-- 數(shù)據(jù)庫連接池 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>${druid.version}</version>
            </dependency>
            <!-- Mybatis Plus增強工具 -->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>${mybatis.plus.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>


</project>

4邻吞、修改gitegg-platform-db工程下的pom.xml,只引入數(shù)據(jù)庫驅(qū)動及數(shù)據(jù)庫連接池相關(guān)jar包:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>GitEgg-Platform</artifactId>
        <groupId>com.gitegg.platform</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>gitegg-platform-db</artifactId>
    <name>${project.artifactId}</name>
    <version>${project.parent.version}</version>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>postgresql</groupId>
            <artifactId>postgresql</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
        </dependency>
    </dependencies>
</project>

5葫男、修改gitegg-platform-mybatis工程下的pom.xml,只引入mybatis-plus相關(guān)jar包:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>GitEgg-Platform</artifactId>
        <groupId>com.gitegg.platform</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>gitegg-platform-mybatis</artifactId>
    <name>${project.artifactId}</name>
    <version>${project.parent.version}</version>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
        </dependency>
    </dependencies>

</project>

6崔列、pom.xml文件配置好之后梢褐,在IDEA右側(cè)窗口,Maven中點擊install赵讯,將包安裝到本地盈咳,這樣GitEgg-Cloud工程就可以引用GitEgg-Platform工程的jar包了,同理边翼,測試及正式環(huán)境需要點擊deploy鱼响,將jar包發(fā)布到測試的Maven私服,或者正式環(huán)境的Maven私服组底。


image.png

image.png

7丈积、回到GitEgg-Cloud項目筐骇,在gitegg-service下的pom.xml里面引入gitegg-platform-db和gitegg-platform-mybatis

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>GitEgg-Cloud</artifactId>
        <groupId>com.gitegg.cloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>gitegg-service</artifactId>
    <packaging>pom</packaging>
    <modules>
        <module>gitegg-service-base</module>
        <module>gitegg-service-bigdata</module>
        <module>gitegg-service-system</module>
    </modules>

    <dependencies>
        <!-- gitegg數(shù)據(jù)庫驅(qū)動及連接池 -->
        <dependency>
            <groupId>com.gitegg.platform</groupId>
            <artifactId>gitegg-platform-db</artifactId>
        </dependency>
        <!-- gitegg mybatis-plus -->
        <dependency>
            <groupId>com.gitegg.platform</groupId>
            <artifactId>gitegg-platform-mybatis</artifactId>
        </dependency>
        <!-- spring boot web核心包 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- spring boot 健康監(jiān)控 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>

</project>

8、在gitegg-service-system工程下修改application.yml江滨,增加數(shù)據(jù)庫連接和mybatis的配置:

server:
  port: 8001
spring:
  application:
    name: gitegg-service-system
    datasource:
      type: com.alibaba.druid.pool.DruidDataSource
      driverClassName: com.mysql.jdbc.Driver
      url: jdbc:mysql://127.0.0.1/gitegg_cloud?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&autoReconnect=true
      username: root
      password: root
      initialSize: 1
      minIdle: 3
      maxActive: 20
      # 配置獲取連接等待超時的時間
      maxWait: 60000
      # 配置間隔多久才進行一次檢測铛纬,檢測需要關(guān)閉的空閑連接,單位是毫秒
      timeBetweenEvictionRunsMillis: 60000
      # 配置一個連接在池中最小生存的時間唬滑,單位是毫秒
      minEvictableIdleTimeMillis: 30000
      validationQuery: select 'x'
      testWhileIdle: true
      testOnBorrow: false
      testOnReturn: false
      # 打開PSCache告唆,并且指定每個連接上PSCache的大小
      poolPreparedStatements: true
      maxPoolPreparedStatementPerConnectionSize: 20
      # 配置監(jiān)控統(tǒng)計攔截的filters,去掉后監(jiān)控界面sql無法統(tǒng)計晶密,'wall'用于防火墻
      filters: config,stat,slf4j
      # 通過connectProperties屬性來打開mergeSql功能擒悬;慢SQL記錄
      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000;
      # 合并多個DruidDataSource的監(jiān)控數(shù)據(jù)
      useGlobalDataSourceStat: true
mybatis-plus:
      mapper-locations: classpath*:/com/gitegg/*/*/mapper/*Mapper.xml
      typeAliasesPackage: com.gitegg.*.*.entity
      global-config:
        #主鍵類型  0:"數(shù)據(jù)庫ID自增", 1:"用戶輸入ID",2:"全局唯一ID (數(shù)字類型唯一ID)", 3:"全局唯一ID UUID";
        id-type: 2
        #字段策略 0:"忽略判斷",1:"非 NULL 判斷"),2:"非空判斷"
        field-strategy: 2
        #駝峰下劃線轉(zhuǎn)換
        db-column-underline: true
        #刷新mapper 調(diào)試神器
        refresh-mapper: true
        #數(shù)據(jù)庫大寫下劃線轉(zhuǎn)換
        #capital-mode: true
        #邏輯刪除配置
        logic-delete-value: 1
        logic-not-delete-value: 0
      configuration:
        map-underscore-to-camel-case: true
        cache-enabled: false

9、修改GitEggSystemApplication稻艰,添加要掃描的mapper路徑聲明:

package com.gitegg.service.system;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * gitegg-system 啟動類
 */
@MapperScan("com.gitegg.*.*.mapper")
@SpringBootApplication
public class GitEggSystemApplication {

    public static void main(String[] args) {
        SpringApplication.run(GitEggSystemApplication.class,args);
    }

}

10懂牧、修改GitEgg-Platform工程中的gitegg-platform-db和gitegg-platform-mybatis,新增mybatis-plus分頁配置连锯,和Druid數(shù)據(jù)庫連接配置归苍,此配置類預(yù)留,后面需要自定義修改运怖。

  • DruidConfig.java內(nèi)容如下:
package com.gitegg.platform.db.config;

import org.springframework.context.annotation.Configuration;

@Configuration
public class DruidConfig {

}

  • MybatisPlusConfig.java內(nèi)容如下:
package com.gitegg.platform.mybatis.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@MapperScan("com.gitegg.**.mapper.**")
public class MybatisPlusConfig {

    /**
     * 新的分頁插件,一緩和二緩遵循mybatis的規(guī)則,需要設(shè)置 MybatisConfiguration#useDeprecatedExecutor = false
     * 避免緩存出現(xiàn)問題(該屬性會在舊插件移除后一同移除)
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }

}

11拼弃、增加測試類,通過訪問controller->service->dao層摇展,獲取數(shù)據(jù)庫數(shù)據(jù)吻氧。新建controller、service咏连、impl盯孙、mapper、entity祟滴、dto包振惰,這些包和類,后面可以用系統(tǒng)自動生成垄懂,不需要每次都自己手動建立骑晶。

  • SystemController.java文件內(nèi)容:
package com.gitegg.service.system.controller;

import com.gitegg.service.system.service.ISystemService;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping(value = "system")
@AllArgsConstructor
public class SystemController {

    private final ISystemService systemService;

    @GetMapping(value = "list")
    public Object list() {
        return systemService.list();
    }


    @GetMapping(value = "page")
    public Object page() {
        return systemService.page();
    }
}

  • ISystemService.java文件內(nèi)容:
package com.gitegg.service.system.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gitegg.service.system.entity.SystemTable;

import java.util.List;

public interface ISystemService {

    List<SystemTable> list();

    Page<SystemTable> page();
}

  • SystemServiceImpl.java 內(nèi)容:
package com.gitegg.service.system.service.impl;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gitegg.service.system.entity.SystemTable;
import com.gitegg.service.system.mapper.SystemTableMapper;
import com.gitegg.service.system.service.ISystemService;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 *
 */
@Service
@AllArgsConstructor
public class SystemServiceImpl implements ISystemService {

    private final SystemTableMapper systemTableMapper;

    @Override
    public List<SystemTable> list() {
        return systemTableMapper.list();
    }

    @Override
    public Page<SystemTable> page() {
        Page<SystemTable> page = new Page<>(1, 10);
        List<SystemTable> records = systemTableMapper.page(page);
        page.setRecords(records);
        return page;
    }
}

  • SystemTableMapper.java內(nèi)容:
package com.gitegg.service.system.mapper;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gitegg.service.system.entity.SystemTable;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface SystemTableMapper {

    List<SystemTable> list();

    List<SystemTable> page(Page<SystemTable> page);
}
  • SystemTable.java內(nèi)容:
package com.gitegg.service.system.entity;

import lombok.Data;

@Data
public class SystemTable {

    private Long id;

    private String name;

}

  • SystemTableMapper.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.gitegg.service.system.mapper.SystemTableMapper" >

    <select id="list" resultType="com.gitegg.service.system.entity.SystemTable">
        select * from system_table
    </select>

    <select id="page" resultType="com.gitegg.service.system.entity.SystemTable">
        select * from system_table
    </select>
</mapper>

12、運行GitEggSystemApplication草慧,在控制臺看是否啟動成功桶蛔,如果啟動成功,在瀏覽器中分別訪問http://127.0.0.1:8001/system/listhttp://127.0.0.1:8001/system/page漫谷,可以看到數(shù)據(jù)里面的數(shù)據(jù):

image.png

image.png

image.png

本文源碼在https://gitee.com/wmz1930/GitEgg的chapter-05分支仔雷。

GitEgg-Cloud是一款基于SpringCloud整合搭建的企業(yè)級微服務(wù)應(yīng)用開發(fā)框架,開源項目地址:

Gitee: https://gitee.com/wmz1930/GitEgg
GitHub: https://github.com/wmz1930/GitEgg

歡迎感興趣的小伙伴Star支持一下。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末碟婆,一起剝皮案震驚了整個濱河市电抚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌脑融,老刑警劉巖喻频,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異肘迎,居然都是意外死亡甥温,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門妓布,熙熙樓的掌柜王于貴愁眉苦臉地迎上來姻蚓,“玉大人,你說我怎么就攤上這事匣沼≌玻” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵释涛,是天一觀的道長加叁。 經(jīng)常有香客問我,道長唇撬,這世上最難降的妖魔是什么它匕? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮窖认,結(jié)果婚禮上豫柬,老公的妹妹穿的比我還像新娘。我一直安慰自己扑浸,他們只是感情好烧给,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著喝噪,像睡著了一般础嫡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上酝惧,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天驰吓,我揣著相機與錄音,去河邊找鬼系奉。 笑死,一個胖子當著我的面吹牛姑廉,可吹牛的內(nèi)容都是我干的缺亮。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼萌踱!你這毒婦竟也來了葵礼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤并鸵,失蹤者是張志新(化名)和其女友劉穎鸳粉,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體园担,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡届谈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了弯汰。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片艰山。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖咏闪,靈堂內(nèi)的尸體忽然破棺而出曙搬,到底是詐尸還是另有隱情,我是刑警寧澤鸽嫂,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布纵装,位于F島的核電站,受9級特大地震影響据某,放射性物質(zhì)發(fā)生泄漏橡娄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一哗脖、第九天 我趴在偏房一處隱蔽的房頂上張望瀑踢。 院中可真熱鬧,春花似錦才避、人聲如沸橱夭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽棘劣。三九已至,卻和暖如春楞遏,著一層夾襖步出監(jiān)牢的瞬間茬暇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工寡喝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留糙俗,地道東北人。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓预鬓,卻偏偏與公主長得像巧骚,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

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