Spring使用JdbcTemplate操作數(shù)據(jù)庫附源碼解釋

目錄

1.JdbcTemplate概述

2.JdbcTemplate準(zhǔn)備工作

  • 引入相關(guān) jar 包
  • 如果是maven項(xiàng)目夷蚊,使用pom.xml代替引入jar包的過程(注意)
  • 配置xml配置文件

3.JdbcTemplate 操作數(shù)據(jù)庫

  • 準(zhǔn)備好數(shù)據(jù)庫uset_db創(chuàng)建一個(gè)t_user表
  • 對(duì)應(yīng)數(shù)據(jù)庫創(chuàng)建User實(shí)體類
  • 創(chuàng)建UserDao接口并創(chuàng)建UserDaoImpl類
  • 創(chuàng)建UserService類并在其中注入U(xiǎn)serDao
  • 編寫測(cè)試類進(jìn)行測(cè)試

4.JdbcTemplate源碼解釋

  • jdbcTemplate.update(增刪改操作)
  • jdbcTemplate.queryForObject(返回記錄條數(shù))
  • jdbcTemplate.queryForObject(返回對(duì)象)
  • jdbcTemplate.query(返回對(duì)象集合)
  • jdbcTemplate.batchUpdate(批量操作)

JdbcTemplate概述

Spring 框架對(duì) JDBC 進(jìn)行封裝俊性,使用 JdbcTemplate 方便實(shí)現(xiàn)對(duì)數(shù)據(jù)庫操作馍忽。

JdbcTemplate準(zhǔn)備工作

引入相關(guān) jar 包

Spring使用JdbcTemplate操作數(shù)據(jù)庫附源碼解釋

如果是maven項(xiàng)目祸轮,使用pom.xml代替引入jar包的過程(注意)

pom.xml:

<?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.Keafmd</groupId>
    <artifactId>day04_eesy_01jdbctemplate</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>7</source>
                    <target>7</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.6.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.2.7.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>5.2.7.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.46</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.10</version>
        </dependency>

        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.8.9</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

</project>
————————————————

maven項(xiàng)目的代碼結(jié)構(gòu):

image.png

配置xml配置文件

在 spring 配置文件配置數(shù)據(jù)庫連接池垒在,配置 JdbcTemplate 對(duì)象,注入 DataSource檩禾。配置時(shí)用的是引用外部配置文件,所以還需要引入外部的屬性文件疤祭,同時(shí)創(chuàng)建對(duì)象時(shí)是基于注解的所以還要開啟組件掃描盼产。

bean1.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:util="http://www.springframework.org/schema/util"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
                           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <!--開啟組件掃描-->
    <context:component-scan base-package="com.Keafmd"></context:component-scan>

    <!--引入外部的屬性文件-->
    <context:property-placeholder location="classpath:jdbc.properties"/>

    <!--配置連接池-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">

        <property name="driverClassName" value="${jdbc.driverClass}"></property>
        <property name="url" value="${jdbc.url}" ></property>
        <property name="username" value="${jdbc.username}" ></property>
        <property name ="password" value="${jdbc.password}" ></property>

    </bean>

    <!--創(chuàng)建jdbcTemplate對(duì)象-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <!--注入DataSource-->
        <property name="dataSource" ref="dataSource"></property>

    </bean>

</beans>

jdbc.properties:

jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/user_db?characterEncoding=utf8&useUnicode=true&useSSL=false
jdbc.username=root
jdbc.password=root

JdbcTemplate 操作數(shù)據(jù)庫

相關(guān)的操作及注釋都在代碼中,請(qǐng)看代碼勺馆。

準(zhǔn)備好數(shù)據(jù)庫uset_db創(chuàng)建一個(gè)t_user表

Spring使用JdbcTemplate操作數(shù)據(jù)庫附源碼解釋

對(duì)應(yīng)數(shù)據(jù)庫創(chuàng)建User實(shí)體類

User類:

package com.Keafmd.spring5.entity;

/**
 * Keafmd
 *
 * @ClassName: User
 * @Description: 數(shù)據(jù)庫對(duì)應(yīng)user實(shí)體類
 * @author: 牛哄哄的柯南
 * @date: 2021-01-19 10:07
 */

public class User {
    private String userId;
    private String username;
    private String ustatus;

    public User() {
    }

    public User(String userId, String username, String ustatus) {
        this.userId = userId;
        this.username = username;
        this.ustatus = ustatus;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public void setUstatus(String ustatus) {
        this.ustatus = ustatus;
    }

    public String getUserId() {
        return userId;
    }

    public String getUsername() {
        return username;
    }

    public String getUstatus() {
        return ustatus;
    }

    @Override
    public String toString() {
        return "User{" +
                "userId='" + userId + '\'' +
                ", username='" + username + '\'' +
                ", ustatus='" + ustatus + '\'' +
                '}';
    }
}

創(chuàng)建UserDao接口并創(chuàng)建UserDaoImpl類

在UserDaoImpl內(nèi)注入jdbcTemplate戏售。

UserDao接口:

package com.Keafmd.spring5.dao;

import com.Keafmd.spring5.entity.User;

import java.util.List;

/**
 * Keafmd
 *
 * @ClassName: UserDao
 * @Description:
 * @author: 牛哄哄的柯南
 * @date: 2021-01-19 9:56
 */

public interface UserDao {

    //添加方法
    void add(User user);

    //修改方法
    void updateUser(User user);

    //刪除方法
    void delete(String id);

    //查詢記錄數(shù)
    int selectCount();

    //查詢返回對(duì)象
    User findUserInfo(String id);

    //查詢集合
    List<User> findAllUser();

    //批量添加
    void batchAddUser(List<Object[]> batchArgs);

    //批量修改
    void batchUpdateUser(List<Object[]> batchArgs);

    //批量刪除
    void batchDeleteUser(List<Object[]> batchArgs);
}

UserDaoImpl類:

package com.Keafmd.spring5.dao;

import com.Keafmd.spring5.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

import java.util.Arrays;
import java.util.List;

/**
 * Keafmd
 *
 * @ClassName: UserDaoImpl
 * @Description: UserDao實(shí)現(xiàn)類
 * @author: 牛哄哄的柯南
 * @date: 2021-01-19 9:56
 */
@Repository
public class UserDaoImpl implements UserDao {

    //注入jdbcTemplate
    @Autowired
    private JdbcTemplate jdbcTemplate;

    //添加的方法
    @Override
    public void add(User user) {
        //創(chuàng)建sql語句
        String sql=" INSERT INTO t_user (user_id, username, ustatus) VALUES (?, ?, ?) ";
        // 調(diào)用方法實(shí)行
        int updat = jdbcTemplate.update(sql,user.getUserId(),user.getUsername(),user.getUstatus());
        // 返回成功的條數(shù)
        System.out.println(updat);
    }
    //修改
    @Override
    public void updateUser(User user) {

        String sql = "UPDATE   user_db.t_user SET   username = ?,  ustatus = ? WHERE user_id = ?";
        Object[] args = {user.getUsername(),user.getUstatus(),user.getUserId()};
        int updat = jdbcTemplate.update(sql,args);
        System.out.println(updat);
    }
    //刪除
    @Override
    public void delete(String id) {

        String sql ="DELETE FROM user_db.t_user WHERE user_id = ?";
        int updat = jdbcTemplate.update(sql,id);
        System.out.println(updat);
    }

    //查詢記錄數(shù)
    @Override
    public int selectCount() {
        String sql ="SELECT COUNT(*) FROM t_user";
        Integer count = jdbcTemplate.queryForObject(sql,Integer.class);
        return count;

    }

    //返回對(duì)象
    @Override
    public User findUserInfo(String id) {
        String sql ="SELECT * FROM t_user where user_id = ?";
        User user = jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<User>(User.class),id);
        return user;
    }

    //返回集合對(duì)象
    @Override
    public List<User> findAllUser() {
        String sql = "select * from t_user";
        List<User> userList =jdbcTemplate.query(sql,new BeanPropertyRowMapper<User>(User.class));
        return userList;
    }

    //批量添加
    @Override
    public void batchAddUser(List<Object[]> batchArgs) {
        String sql=" INSERT INTO t_user (user_id, username, ustatus) VALUES (?, ?, ?) ";
        int []ints = jdbcTemplate.batchUpdate(sql,batchArgs);
        System.out.println(Arrays.toString(ints));
    }

    //批量修改
    @Override
    public void batchUpdateUser(List<Object[]> batchArgs) {
        String sql = "UPDATE   user_db.t_user SET   username = ?,  ustatus = ? WHERE user_id = ?";
        int []ints = jdbcTemplate.batchUpdate(sql,batchArgs);
        System.out.println(Arrays.toString(ints));
    }

    //批量刪除
    @Override
    public void batchDeleteUser(List<Object[]> batchArgs) {
        String sql ="DELETE FROM user_db.t_user WHERE user_id = ?";
        int []ints = jdbcTemplate.batchUpdate(sql,batchArgs);
        System.out.println(Arrays.toString(ints));
    }
}

創(chuàng)建UserService類并在其中注入U(xiǎn)serDao

UserService類:

package com.Keafmd.spring5.service;

import com.Keafmd.spring5.dao.UserDao;
import com.Keafmd.spring5.dao.UserDaoImpl;
import com.Keafmd.spring5.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * Keafmd
 *
 * @ClassName: BookService
 * @Description:
 * @author: 牛哄哄的柯南
 * @date: 2021-01-19 9:55
 */
@Service
public class UserService {

    //注入dao
    @Autowired
    private UserDao userDao;

    //添加的方法
    public void addUser(User user){
        userDao.add(user);
    }

    //修改的方法
    public void updateUser(User user){
        userDao.updateUser(user);
    }

    //刪除的方法
    public void deleteUser(String id){
        userDao.delete(id);
    }

    //查詢表中的記錄數(shù)
    public int findCount(){
        return userDao.selectCount();
    }

    //查詢返回對(duì)象
    public User findOne(String id){
        return userDao.findUserInfo(id);
    }

    //查詢返回集合
    public List<User> findAll(){
        return userDao.findAllUser();
    }

    //批量添加
    public void batchAdd(List<Object[]> batchArgs){
        userDao.batchAddUser(batchArgs);
    }

    //批量修改
    public void batchUpdate(List<Object[]> batchArgs){
        userDao.batchUpdateUser(batchArgs);
    }

    //批量刪除
    public void batchDelete(List<Object[]> batchArgs){
        userDao.batchDeleteUser(batchArgs);
    }

}

編寫測(cè)試類進(jìn)行測(cè)試

TestUser :

package com.Keafmd.spring5.test;

import com.Keafmd.spring5.entity.User;
import com.Keafmd.spring5.service.UserService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.ArrayList;
import java.util.List;

/**
 * Keafmd
 *
 * @ClassName: TestUser
 * @Description:
 * @author: 牛哄哄的柯南
 * @date: 2021-01-19 10:35
 */
public class TestUser {

    @Test
    public void testJdbcTemplate(){
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
        UserService userService = context.getBean("userService", UserService.class);

        //添加
        /*User user = new User("001","Keafmd","11");
        userService.addUser(user);*/

        //更新
        /*User user1 = new User("001","Keafmd","2");
        userService.updateUser(user1);*/

        //刪除
        /*String id = "2";
        userService.deleteUser(id);*/

        //返回總條數(shù)
        int count = userService.findCount();
        System.out.println(count);

        // 返回對(duì)象
        User user = userService.findOne("1");
        System.out.println(user);

        // 返回集合對(duì)象

        List<User> userList =userService.findAll();
        System.out.println(userList);

        //批量添加
        /*List<Object[]> batchArgs = new ArrayList<>();
        Object[]o1 = {"7","77","7"};
        Object[]o2 = {"8","88","8"};
        Object[]o3 = {"9","99","9"};
        batchArgs.add(o1);
        batchArgs.add(o2);
        batchArgs.add(o3);
        userService.batchAdd(batchArgs);*/

        //批量修改
        /*List<Object[]> batchArgs = new ArrayList<>();
        Object[]o11 = {"tt","2","7"};
        Object[]o22 = {"uu","2","8"};
        Object[]o33 = {"ii","2","9"};
        batchArgs.add(o11);
        batchArgs.add(o22);
        batchArgs.add(o33);
        userService.batchUpdate(batchArgs);*/

        //批量刪除
        List<Object[]> batchArgs = new ArrayList<>();
        Object[]o1 = {"7"};
        Object[]o2 = {"8"};
        Object[]o3 = {"9"};
        batchArgs.add(o1);
        batchArgs.add(o2);
        batchArgs.add(o3);
        userService.batchDelete(batchArgs);

    }
}

輸出結(jié)果:

一月 19, 2021 4:05:28 下午 com.alibaba.druid.pool.DruidDataSource info
信息: {dataSource-1} inited
9
User{userId='1', username='Keafmd', ustatus='2'}
[User{userId='1', username='Keafmd', ustatus='2'}, User{userId='2', username='aa', ustatus='1'}, User{userId='3', username='bb', ustatus='1'}, User{userId='4', username='cc', ustatus='1'}, User{userId='5', username='dd', ustatus='1'}, User{userId='6', username='ee', ustatus='1'}, User{userId='7', username='tt', ustatus='2'}, User{userId='8', username='uu', ustatus='2'}, User{userId='9', username='ii', ustatus='2'}]
[1, 1, 1]

Process finished with exit code 0
Spring使用JdbcTemplate操作數(shù)據(jù)庫附源碼解釋

上面兩行紅色的是日志信息,不是報(bào)錯(cuò)草穆,不用擔(dān)心灌灾。

JdbcTemplate源碼解釋

jdbcTemplate.update(增刪改操作)

在增刪改操作中調(diào)用的jdbcTemplate.update(sql,id);中有兩個(gè)參數(shù)。 源碼:

public int update(String sql, @Nullable Object... args) throws DataAccessException {
    return this.update(sql, this.newArgPreparedStatementSetter(args));
}

第一個(gè)參數(shù):sql 語句悲柱。

第二個(gè)參數(shù):可變參數(shù)锋喜,設(shè)置為 sql 語句值。

jdbcTemplate.queryForObject(返回記錄條數(shù))

在查詢記錄數(shù)操作中調(diào)用的
jdbcTemplate.queryForObject(sql,Integer.class);中有兩個(gè)參數(shù)豌鸡。

源碼:

public <T> T queryForObject(String sql, Class<T> requiredType) throws DataAccessException {
    return this.queryForObject(sql, this.getSingleColumnRowMapper(requiredType));
}

兩個(gè)參數(shù):

第一個(gè)參數(shù):sql 語句嘿般。

第二個(gè)參數(shù):返回類型 Class。

jdbcTemplate.queryForObject(返回對(duì)象)

在返回對(duì)象中調(diào)用的
jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper(User.class),id);中有三個(gè)參數(shù)涯冠。

源碼:

public <T> T queryForObject(String sql, RowMapper<T> rowMapper, @Nullable Object... args) throws DataAccessException {
    List<T> results = (List)this.query((String)sql, (Object[])args, (ResultSetExtractor)(new RowMapperResultSetExtractor(rowMapper, 1)));
    return DataAccessUtils.nullableSingleResult(results);
}

有三個(gè)參數(shù) :

第一個(gè)參數(shù):sql 語句炉奴。

第二個(gè)參數(shù):RowMapper 是接口,針對(duì)返回不同類型數(shù)據(jù)功偿,使用這個(gè)接口里面實(shí)現(xiàn)類完成數(shù)據(jù)封裝盆佣。

第三個(gè)參數(shù):sql 語句值。

jdbcTemplate.query(返回對(duì)象集合)

在返回對(duì)象集合中調(diào)用的jdbcTemplate.query(sql,newBeanPropertyRowMapper(User.class));中有兩個(gè)參數(shù)械荷。

源碼:

public <T> List<T> query(String sql, RowMapper<T> rowMapper) throws DataAccessException {
    return (List)result(this.query((String)sql, (ResultSetExtractor)(new RowMapperResultSetExtractor(rowMapper))));
}

有兩個(gè)個(gè)參數(shù) :

第一個(gè)參數(shù):sql 語句共耍。

第二個(gè)參數(shù):RowMapper 是接口,針對(duì)返回不同類型數(shù)據(jù)吨瞎,使用這個(gè)接口里面實(shí)現(xiàn)類完成數(shù)據(jù)封裝痹兜。

jdbcTemplate.batchUpdate(批量操作)

在批量操作中調(diào)用的jdbcTemplate.batchUpdate(sql,batchArgs);有兩個(gè)參數(shù)。

源碼:

public int[] batchUpdate(String sql, List<Object[]> batchArgs) throws DataAccessException {
    return this.batchUpdate(sql, batchArgs, new int[0]);
}

有兩個(gè)參數(shù) :

第一個(gè)參數(shù):sql 語句颤诀。

第二個(gè)參數(shù):List 集合字旭,添加了多條記錄數(shù)據(jù)对湃。

以上就是Spring中使用JdbcTemplate操作數(shù)據(jù)庫(增刪改查以及批量操作)附帶源碼解釋的全部內(nèi)容。

看完如果對(duì)你有幫助遗淳,感謝點(diǎn)贊支持拍柒!

如果你是電腦端的話,看到右下角的 “一鍵三連” 了嗎屈暗,沒錯(cuò)點(diǎn)它[哈哈]

Spring使用JdbcTemplate操作數(shù)據(jù)庫附源碼解釋

原文鏈接:
https://blog.csdn.net/weixin_43883917/article/details/112845731

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拆讯,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子养叛,更是在濱河造成了極大的恐慌种呐,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件弃甥,死亡現(xiàn)場(chǎng)離奇詭異爽室,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)淆攻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門阔墩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人卜录,你說我怎么就攤上這事戈擒】裘鳎” “怎么了艰毒?”我有些...
    開封第一講書人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長搜囱。 經(jīng)常有香客問我丑瞧,道長,這世上最難降的妖魔是什么蜀肘? 我笑而不...
    開封第一講書人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任绊汹,我火速辦了婚禮,結(jié)果婚禮上扮宠,老公的妹妹穿的比我還像新娘西乖。我一直安慰自己,他們只是感情好坛增,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開白布获雕。 她就那樣靜靜地躺著,像睡著了一般收捣。 火紅的嫁衣襯著肌膚如雪届案。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,096評(píng)論 1 291
  • 那天罢艾,我揣著相機(jī)與錄音楣颠,去河邊找鬼尽纽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛童漩,可吹牛的內(nèi)容都是我干的弄贿。 我是一名探鬼主播,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼矫膨,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼挎春!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起豆拨,我...
    開封第一講書人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤直奋,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后施禾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體脚线,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年弥搞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了邮绿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡攀例,死狀恐怖船逮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情粤铭,我是刑警寧澤挖胃,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站梆惯,受9級(jí)特大地震影響酱鸭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜垛吗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一凹髓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧怯屉,春花似錦蔚舀、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至足删,卻和暖如春寿谴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背失受。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來泰國打工讶泰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留咏瑟,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓痪署,卻偏偏與公主長得像码泞,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子狼犯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

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