Spring boot Mybatis 整合(完整版)

對(duì)Mybatis注解方式有興趣的,可以查看我的另一篇:Spring boot Mybatis 整合(注解版) 注解方式更加簡(jiǎn)潔簡(jiǎn)單,極大程度的提高了開發(fā)速度。如果大家需要使用更高的版本比如springboot2.0,請(qǐng)參照我最新的博客springboot2.0 Mybatis 整合 (springboot2.0版本)

個(gè)人開源項(xiàng)目

推薦開源項(xiàng)目

更多干貨

springboot2.0 mybatis 使用多數(shù)據(jù)源

Spring Boot快速入門
Spring Boot開發(fā)Web應(yīng)用
Spring Boot工程結(jié)構(gòu)推薦
Spring Boot構(gòu)建RESTful API與單元測(cè)試
Spring Boot中使用Swagger2構(gòu)建強(qiáng)大的RESTful API文檔
Spring Boot中使用JdbcTemplate訪問數(shù)據(jù)庫(kù)
Spring Boot中使用Spring-data-jpa讓數(shù)據(jù)訪問更簡(jiǎn)單、更優(yōu)雅
Spring Boot多數(shù)據(jù)源配置與使用
Spring Boot日志管理
Spring Boot中使用Redis數(shù)據(jù)庫(kù)
Spring Boot中使用MongoDB數(shù)據(jù)庫(kù)
Spring Boot中Web應(yīng)用的統(tǒng)一異常處理
Spring Boot屬性配置文件詳解
Spring Boot中使用@Scheduled創(chuàng)建定時(shí)任務(wù)
Spring Boot中使用@Async實(shí)現(xiàn)異步調(diào)用
Spring boot Mybatis 整合(注解版)
springboot事務(wù)管理詳解
springboot中使用Mybatis注解配置詳解

正題

本項(xiàng)目使用的環(huán)境:

  • 開發(fā)工具:Intellij IDEA 2017.1.3
  • jdk:1.8.0_161
  • maven:3.3.9

額外功能

  • PageHelper 分頁(yè)插件
  • mybatis generator 自動(dòng)生成代碼插件

步驟:
1.創(chuàng)建一個(gè)springboot項(xiàng)目:

這里寫圖片描述

2.創(chuàng)建項(xiàng)目的文件結(jié)構(gòu)以及jdk的版本
這里寫圖片描述

3.選擇項(xiàng)目所需要的依賴
這里寫圖片描述

這里寫圖片描述

然后點(diǎn)擊finish

5.看一下文件的結(jié)構(gòu):

這里寫圖片描述

6.查看一下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.winter</groupId>
    <artifactId>springboot-mybatis-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>springboot-mybatis-demo</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.7</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <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>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.35</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.datatype</groupId>
            <artifactId>jackson-datatype-joda</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.module</groupId>
            <artifactId>jackson-module-parameter-names</artifactId>
        </dependency>
        <!-- 分頁(yè)插件 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.1.2</version>
        </dependency>
        <!-- alibaba的druid數(shù)據(jù)庫(kù)連接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.0</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!-- mybatis generator 自動(dòng)生成代碼插件 -->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
                <configuration>
                    <configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
                    <overwrite>true</overwrite>
                    <verbose>true</verbose>
                </configuration>
            </plugin>
        </plugins>
    </build>


</project>

7.項(xiàng)目不使用application.properties文件 而使用更加簡(jiǎn)潔的application.yml文件:
將原有的resource文件夾下的application.properties文件刪除氢惋,創(chuàng)建一個(gè)新的application.yml配置文件洞翩,
文件的內(nèi)容如下:


server:
  port: 8080

spring:
    datasource:
        name: test
        url: jdbc:mysql://127.0.0.1:3306/depot
        username: root
        password: root
        # 使用druid數(shù)據(jù)源
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.jdbc.Driver
        filters: stat
        maxActive: 20
        initialSize: 1
        maxWait: 60000
        minIdle: 1
        timeBetweenEvictionRunsMillis: 60000
        minEvictableIdleTimeMillis: 300000
        validationQuery: select 'x'
        testWhileIdle: true
        testOnBorrow: false
        testOnReturn: false
        poolPreparedStatements: true
        maxOpenPreparedStatements: 20
mybatis:
  mapper-locations: classpath:mapping/*.xml
  type-aliases-package: com.winter.model

#pagehelper分頁(yè)插件
pagehelper:
    helperDialect: mysql
    reasonable: true
    supportMethodsArguments: true
    params: count=countSql

8.創(chuàng)建數(shù)據(jù)庫(kù):

CREATE DATABASE mytest;

CREATE TABLE t_user(
  user_id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  user_name VARCHAR(255) NOT NULL ,
  password VARCHAR(255) NOT NULL ,
  phone VARCHAR(255) NOT NULL
) ENGINE=INNODB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8;

9.使用mybatis generator 自動(dòng)生成代碼:

  • 配置pom.xml中g(shù)enerator 插件所對(duì)應(yīng)的配置文件 ${basedir}/src/main/resources/generator/generatorConfig.xml
<?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>
    <!-- 數(shù)據(jù)庫(kù)驅(qū)動(dòng):選擇你的本地硬盤上面的數(shù)據(jù)庫(kù)驅(qū)動(dòng)包-->
    <classPathEntry  location="E:\developer\mybatis-generator-core-1.3.2\lib\mysql-connector-java-5.1.25-bin.jar"/>
    <context id="DB2Tables"  targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <!-- 是否去除自動(dòng)生成的注釋 true:是 : false:否 -->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>
        <!--數(shù)據(jù)庫(kù)鏈接URL,用戶名焰望、密碼 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1/mytest" userId="root" password="root">
        </jdbcConnection>
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        <!-- 生成模型的包名和位置-->
        <javaModelGenerator targetPackage="com.winter.model" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!-- 生成映射文件的包名和位置-->
        <sqlMapGenerator targetPackage="mapping" targetProject="src/main/resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <!-- 生成DAO的包名和位置-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.winter.mapper" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
        <!-- 要生成的表 tableName是數(shù)據(jù)庫(kù)中的表名或視圖名 domainObjectName是實(shí)體類名-->
        <table tableName="t_user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
    </context>
</generatorConfiguration>


  • 點(diǎn)擊run-Edit Configurations
這里寫圖片描述
  • 添加配置
這里寫圖片描述
  • 運(yùn)行


    這里寫圖片描述

    最后生成的文件以及結(jié)構(gòu):

這里寫圖片描述

10. 生成的文件

UserMapper.java

package com.winter.mapper;

import com.winter.model.User;

public interface UserMapper {
    int deleteByPrimaryKey(Integer userId);

    int insert(User record);

    int insertSelective(User record);

    User selectByPrimaryKey(Integer userId);

    int updateByPrimaryKeySelective(User record);

    int updateByPrimaryKey(User record);
    //這個(gè)方式我自己加的
    List<User> selectAllUser();
}

User.java

package com.winter.model;

public class User {
    private Integer userId;

    private String userName;

    private String password;

    private String phone;

    public Integer getUserId() {
        return userId;
    }

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

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName == null ? null : userName.trim();
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password == null ? null : password.trim();
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone == null ? null : phone.trim();
    }
}

對(duì)于sql語(yǔ)句這種黃色的背景骚亿,真心是看不下去了(解決方案):


這里寫圖片描述

**UserMapper.xml **


<?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.winter.mapper.UserMapper" >
  <resultMap id="BaseResultMap" type="com.winter.model.User" >
    <id column="user_id" property="userId" jdbcType="INTEGER" />
    <result column="user_name" property="userName" jdbcType="VARCHAR" />
    <result column="password" property="password" jdbcType="VARCHAR" />
    <result column="phone" property="phone" jdbcType="VARCHAR" />
  </resultMap>
  <sql id="Base_Column_List" >
    user_id, user_name, password, phone
  </sql>
  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
    select 
    <include refid="Base_Column_List" />
    from t_user
    where user_id = #{userId,jdbcType=INTEGER}
  </select>
  <!-- 這個(gè)方法是我自己加的 -->
  <select id="selectAllUser" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List" />
    from t_user
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
    delete from t_user
    where user_id = #{userId,jdbcType=INTEGER}
  </delete>
  <insert id="insert" parameterType="com.winter.model.User" >
    insert into t_user (user_id, user_name, password, 
      phone)
    values (#{userId,jdbcType=INTEGER}, #{userName,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, 
      #{phone,jdbcType=VARCHAR})
  </insert>
  <insert id="insertSelective" parameterType="com.winter.model.User" >
    insert into t_user
    <trim prefix="(" suffix=")" suffixOverrides="," >
      <if test="userId != null" >
        user_id,
      </if>
      <if test="userName != null" >
        user_name,
      </if>
      <if test="password != null" >
        password,
      </if>
      <if test="phone != null" >
        phone,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides="," >
      <if test="userId != null" >
        #{userId,jdbcType=INTEGER},
      </if>
      <if test="userName != null" >
        #{userName,jdbcType=VARCHAR},
      </if>
      <if test="password != null" >
        #{password,jdbcType=VARCHAR},
      </if>
      <if test="phone != null" >
        #{phone,jdbcType=VARCHAR},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.winter.model.User" >
    update t_user
    <set >
      <if test="userName != null" >
        user_name = #{userName,jdbcType=VARCHAR},
      </if>
      <if test="password != null" >
        password = #{password,jdbcType=VARCHAR},
      </if>
      <if test="phone != null" >
        phone = #{phone,jdbcType=VARCHAR},
      </if>
    </set>
    where user_id = #{userId,jdbcType=INTEGER}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.winter.model.User" >
    update t_user
    set user_name = #{userName,jdbcType=VARCHAR},
      password = #{password,jdbcType=VARCHAR},
      phone = #{phone,jdbcType=VARCHAR}
    where user_id = #{userId,jdbcType=INTEGER}
  </update>
</mapper>

11.打開類SpringbootMybatisDemoApplication.java,這個(gè)是springboot的啟動(dòng)類熊赖。我們需要添加點(diǎn)東西:

package com.winter;

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

@SpringBootApplication
@MapperScan("com.winter.mapper")//將項(xiàng)目中對(duì)應(yīng)的mapper類的路徑加進(jìn)來就可以了
public class SpringbootMybatisDemoApplication {

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

12.到這里所有的搭建工作都完成了来屠,接下來就是測(cè)試的工作,沒使用junit4進(jìn)行測(cè)試:
首先看一下完成之后的文件的結(jié)構(gòu):

這里寫圖片描述

現(xiàn)在controller震鹉,service層的代碼都寫好:

UserController.java

package com.winter.Controller;

import com.winter.model.User;
import com.winter.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * Created by Administrator on 2017/8/16.
 */
@Controller
@RequestMapping(value = "/user")
public class UserController {

    @Autowired
    private UserService userService;

    @ResponseBody
    @RequestMapping(value = "/add", produces = {"application/json;charset=UTF-8"})
    public int addUser(User user){
        return userService.addUser(user);
    }

    @ResponseBody
    @RequestMapping(value = "/all/{pageNum}/{pageSize}", produces = {"application/json;charset=UTF-8"})
    public Object findAllUser(@PathVariable("pageNum") int pageNum, @PathVariable("pageSize") int pageSize){

        return userService.findAllUser(pageNum,pageSize);
    }
}

UserService.java

package com.winter.service;

import com.winter.model.User;

import java.util.List;

/**
 * Created by Administrator on 2017/8/16.
 */
public interface UserService {

    int addUser(User user);

    List<User> findAllUser(int pageNum, int pageSize);
}

UserServiceImpl.java

package com.winter.service.impl;

import com.github.pagehelper.PageHelper;
import com.winter.mapper.UserMapper;
import com.winter.model.User;
import com.winter.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * Created by Administrator on 2017/8/16.
 */
@Service(value = "userService")
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;//這里會(huì)報(bào)錯(cuò)俱笛,但是并不會(huì)影響

    @Override
    public int addUser(User user) {

        return userMapper.insertSelective(user);
    }

    /*
    * 這個(gè)方法中用到了我們開頭配置依賴的分頁(yè)插件pagehelper
    * 很簡(jiǎn)單,只需要在service層傳入?yún)?shù)足陨,然后將參數(shù)傳遞給一個(gè)插件的一個(gè)靜態(tài)方法即可嫂粟;
    * pageNum 開始頁(yè)數(shù)
    * pageSize 每頁(yè)顯示的數(shù)據(jù)條數(shù)
    * */
    @Override
    public List<User> findAllUser(int pageNum, int pageSize) {
        //將參數(shù)傳給這個(gè)方法就可以實(shí)現(xiàn)物理分頁(yè)了,非常簡(jiǎn)單墨缘。
        PageHelper.startPage(pageNum, pageSize);
        return userMapper.selectAllUser();
    }
}



如果強(qiáng)迫癥看不下去那個(gè)報(bào)錯(cuò):(解決方法)


這里寫圖片描述

測(cè)試我使用了idea一個(gè)很用心的功能星虹。
可以發(fā)http請(qǐng)求的插件

這里寫圖片描述

這里寫圖片描述

點(diǎn)擊左側(cè)的運(yùn)行按鈕就可以發(fā)送請(qǐng)求了;
如果返回值正確 說明你已經(jīng)搭建成功了D魉稀宽涌!

如果大家想使用事務(wù)控制的話,請(qǐng)參照Spring boot Mybatis 整合(注解版) ,這個(gè)里面就有關(guān)于事務(wù)控制的使用

源碼地址:https://github.com/WinterChenS/springboot-mybatis-demo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蝶棋,一起剝皮案震驚了整個(gè)濱河市卸亮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌玩裙,老刑警劉巖兼贸,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異吃溅,居然都是意外死亡溶诞,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門决侈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來螺垢,“玉大人,你說我怎么就攤上這事赖歌⊥髌裕” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵庐冯,是天一觀的道長(zhǎng)孽亲。 經(jīng)常有香客問我,道長(zhǎng)展父,這世上最難降的妖魔是什么墨林? 我笑而不...
    開封第一講書人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任赁酝,我火速辦了婚禮,結(jié)果婚禮上旭等,老公的妹妹穿的比我還像新娘酌呆。我一直安慰自己,他們只是感情好搔耕,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開白布隙袁。 她就那樣靜靜地躺著,像睡著了一般弃榨。 火紅的嫁衣襯著肌膚如雪菩收。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,155評(píng)論 1 299
  • 那天鲸睛,我揣著相機(jī)與錄音娜饵,去河邊找鬼。 笑死官辈,一個(gè)胖子當(dāng)著我的面吹牛箱舞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拳亿,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼晴股,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了肺魁?” 一聲冷哼從身側(cè)響起电湘,我...
    開封第一講書人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鹅经,沒想到半個(gè)月后寂呛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡瘾晃,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年贷痪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片酗捌。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡呢诬,死狀恐怖涌哲,靈堂內(nèi)的尸體忽然破棺而出胖缤,到底是詐尸還是另有隱情,我是刑警寧澤阀圾,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布哪廓,位于F島的核電站,受9級(jí)特大地震影響初烘,放射性物質(zhì)發(fā)生泄漏涡真。R本人自食惡果不足惜分俯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望哆料。 院中可真熱鬧缸剪,春花似錦、人聲如沸东亦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)典阵。三九已至奋渔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間壮啊,已是汗流浹背嫉鲸。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留歹啼,地道東北人玄渗。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像染突,于是被迫代替她去往敵國(guó)和親捻爷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理份企,服務(wù)發(fā)現(xiàn)也榄,斷路器,智...
    卡卡羅2017閱讀 134,651評(píng)論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,803評(píng)論 6 342
  • 前言 最近做回后臺(tái)開發(fā)司志,重新抓起以前學(xué)過的SSM(Spring+Spring MVC+Mybatis)甜紫,但是發(fā)現(xiàn)配...
    Raye閱讀 6,527評(píng)論 15 79
  • 我從昨天開始關(guān)注阿廖沙,北電侯亮平的事情骂远,一直到今天囚霸,發(fā)現(xiàn)昨天有關(guān)這個(gè)事情的宋靖,吳毅根本沒上過一點(diǎn)點(diǎn)熱搜激才。 然而...
    七言夏閱讀 146評(píng)論 0 0
  • 家 在寒冷的夜空中夢(mèng)游很久 洗刷碗筷的聲音 喚我醒來 土壤溫厚 床頭小燈還開
    方牧重閱讀 316評(píng)論 1 0