springboot項(xiàng)目與mysql整合大磺,并使用mybatis框架

1. 安裝mysql數(shù)據(jù)庫(kù)

? mac上可以通過(guò)brew命令安裝mysql

2. 安裝好數(shù)據(jù)庫(kù)后,讓項(xiàng)目與數(shù)據(jù)庫(kù)建立連接需要引入依賴(lài)

```

? ? ? ? <!-- 連接數(shù)據(jù)庫(kù)所需包-->

? ? ? ? <dependency>

? ? ? ? ? ? <groupId>mysql</groupId>

? ? ? ? ? ? <artifactId>mysql-connector-java</artifactId>

? ? ? ? ? ? <version>5.1.6</version>

? ? ? ? </dependency>

```

3. 資源文件的創(chuàng)建未桥。資源配置文件都是放在resources文件夾下的栽渴。資源配置文件的后綴是.properties。命名方式的話一般都是在名稱(chēng)后面加上-dev囱持、-test夯接、-prod以表示在開(kāi)發(fā)環(huán)境、測(cè)試環(huán)境以及線上環(huán)境的配置文件纷妆。舉例盔几,創(chuàng)建一個(gè)application.properties文件,在該文件內(nèi)掩幢,可以指定目前處于active狀態(tài)的配置文件是哪個(gè)逊拍。比如如下內(nèi)容則代表上鞠,生效的是開(kāi)發(fā)環(huán)境配置資源

```

spring.profiles.active=dev

```

然后在dev文件中配置連接數(shù)據(jù)庫(kù)的相關(guān)屬性,內(nèi)容如下:

```

# 數(shù)據(jù)庫(kù)連接

spring.datasource.url=jdbc:mysql://localhost:3306/chat?characterEncoding=utf8&useSSL=false

spring.datasource.username=root

spring.datasource.password=root

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.datasource.tomcat.max-wait=10000

spring.datasource.tomcat.max-active=50

spring.datasource.tomcat.max-idle=50

spring.datasource.tomcat.test-on-borrow=true

spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect

```

上述內(nèi)容表示的是芯丧,連接本地的chat數(shù)據(jù)庫(kù)芍阎。chat數(shù)據(jù)庫(kù)的用戶(hù)名以及密碼分別是root、root

4. 接下來(lái)就是項(xiàng)目數(shù)據(jù)如何和mysql之間進(jìn)行交互缨恒。在這里不會(huì)寫(xiě)原始的jdbc操作語(yǔ)句谴咸。而是選擇ORM框架mybatis

5. 項(xiàng)目要使用mybatis首先也要引入依賴(lài)

```

? ? ? ? <!-- mybatis所需包依賴(lài)-->

? ? ? ? <dependency>

? ? ? ? ? ? <groupId>org.mybatis.spring.boot</groupId>

? ? ? ? ? ? <artifactId>mybatis-spring-boot-starter</artifactId>

? ? ? ? ? ? <version>1.1.1</version>

? ? ? ? </dependency>

```

6. 項(xiàng)目中要使用mybatis有兩種方式一種是xml文件,一種是注解骗露。在該項(xiàng)目中使用后者岭佳。

7. 首先需要建一張數(shù)據(jù)庫(kù)表,用于我們練習(xí)增刪改查操作萧锉。在這里我們舉例建一個(gè)用戶(hù)信息表驼唱,首先新建一個(gè)chat數(shù)據(jù)庫(kù)

```sql

CREATE DATABASE `chat`;

```

選中指定字符集,防止插入中文產(chǎn)生亂碼

```sql

set names utf8;

```

然后選中使用該數(shù)據(jù)庫(kù)

```sql

use chat

```

然后輸入下述語(yǔ)句創(chuàng)建一張用戶(hù)信息表

```sql

CREATE TABLE `user` (

? `id` bigint(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id',

? `userId` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '用戶(hù)id',

? `username` varchar(16) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '用戶(hù)名',

? `password` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '用戶(hù)密碼',

? `salt` varchar(16) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '鹽',

? `phone` varchar(16) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '用戶(hù)手機(jī)號(hào)',

? `email` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '用戶(hù)郵箱',

? `portraitUrl` varchar(256) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '用戶(hù)頭像地址',

? `status` smallint(1) NOT NULL DEFAULT '0' COMMENT '用戶(hù)帳號(hào)狀態(tài)',

? `createTime` bigint(20) NOT NULL DEFAULT '0' COMMENT '創(chuàng)建時(shí)間',

? `updateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時(shí)間',

? `nickname` varchar(32) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '用戶(hù)昵稱(chēng)',

? PRIMARY KEY (`id`),

? UNIQUE KEY `uniq_user_id` (`userId`),

? UNIQUE KEY `uniq_username` (`username`),

? UNIQUE KEY `uniq_phone` (`phone`),

? KEY `idx_user_id` (`userId`),

? KEY `idx_username` (`username`),

? KEY `idx_phone` (`phone`),

? KEY `idx_email` (`email`)

) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='用戶(hù)信息表';

```

8. 數(shù)據(jù)庫(kù)表建好之后需要在項(xiàng)目中建立與其映射的實(shí)體類(lèi)驹暑。在項(xiàng)目中新建mapper包玫恳,然后新建一個(gè)User實(shí)體類(lèi)。在生成實(shí)體類(lèi)時(shí)优俘,我們可以使用Lombok框架京办,省去多余的get set等方法的生成,使代碼看起來(lái)不會(huì)過(guò)于臃腫帆焕。

首先導(dǎo)入Lombok的maven依賴(lài)

```

? ? ? ? <!-- 實(shí)體類(lèi)自動(dòng)生成get set toString等方法的框架-->

? ? ? ? <dependency>

? ? ? ? ? ? <groupId>org.projectlombok</groupId>

? ? ? ? ? ? <artifactId>lombok</artifactId>

? ? ? ? ? ? <version>1.16.18</version>

? ? ? ? ? ? <scope>provided</scope>

? ? ? ? </dependency>

```

然后在Idea中安裝Lombok插件惭婿,preference->Plugins->lombok Plugin 安裝完畢后重啟idea

最后建立User實(shí)體類(lèi)叶雹,記住一定要添加@Data注解财饥。

```

@Data

public class User {

? ? private Long id;

? ? private Long userId;

? ? private String username;

? ? private String password;

? ? private String salt;

? ? private String phone;

? ? private String email;

? ? private String portraitUrl;

? ? private Integer status;

? ? private String nickname;

? ? private Long createTime;

? ? private Long updateTime;

? ? public User() {

? ? ? ? id = null;

? ? ? ? userId = 0L;

? ? ? ? username = "";

? ? ? ? password = "";

? ? ? ? salt = "";

? ? ? ? phone = "";

? ? ? ? email = "";

? ? ? ? portraitUrl = "";

? ? ? ? status = 0;

? ? ? ? nickname = "";

? ? ? ? createTime = System.currentTimeMillis() / 1000;

? ? }

? ? public static class Status {

? ? ? ? public final static Integer UNUSE = 0;

? ? ? ? public final static Integer USED = 1;

? ? }

}

```

9. 新建mapper接口類(lèi),需要添加@Component注解和@Mapper注解折晦,前者是將該接口類(lèi)注冊(cè)進(jìn)spring中钥星,使其依賴(lài)注入,后者是該類(lèi)可以使用mybatis注解的標(biāo)志满着。

```

@Component

@Mapper

public interface UserMapper {

? ? /**

? ? * @Author:gaofeng

? ? * @Date:2019/1/11

? ? * @Description: 保存用戶(hù)

? ? **/

? ? @Insert("INSERT INTO user(userId, username, password, salt, phone, email, portraitUrl, status, createTime) values" +

? ? ? ? ? ? "(#{userId}, #{username}, #{password}, #{salt}, #{phone}, #{email}, #{portraitUrl}, #{status}, " +

? ? ? ? ? ? "#{createTime})")

? ? public Integer saveUser(User user);

? ? /**

? ? * @Author:gaofeng

? ? * @Date:2019/1/11

? ? * @Description: 根據(jù)手機(jī)號(hào)查找用戶(hù)

? ? **/

? ? @Select("SELECT * FROM user WHERE phone=#{phone}")

? ? public User selectUserByPhone(String phone);

? ? /**

? ? * @Author:gaofeng

? ? * @Date:2019/1/11

? ? * @Description: 根據(jù)用戶(hù)名或者手機(jī)號(hào)查找用戶(hù)

? ? **/

? ? @Select("SELECT * FROM user WHERE phone=#{0} OR username=#{1}")

? ? public User selectUserByPhoneOrUsername(String phone, String username);

}

```

10. 上面簡(jiǎn)單寫(xiě)了幾個(gè)操作數(shù)據(jù)庫(kù)的sql語(yǔ)句谦炒。到這里項(xiàng)目與mysql連接就基本完成了,接下來(lái)我們寫(xiě)個(gè)簡(jiǎn)單的接口測(cè)試一下风喇。在這里找出我們之前寫(xiě)的HelloWordController宁改,將UserMapper注入,然后在hello方法中完成新建一個(gè)簡(jiǎn)單實(shí)體類(lèi)魂莫,并save的操作

```

@RestController

@RequestMapping(value = "/helloworld")

public class HelloWordController {

? ? private UserMapper userMapper;

? ? @Autowired

? ? public HelloWordController(UserMapper userMapper) {

? ? ? ? this.userMapper = userMapper;

? ? }

? ? @RequestMapping(value = "/hello")

? ? public String hello() {

? ? ? ? User user = new User();

? ? ? ? user.setUsername("zhangsan");

? ? ? ? user.setPhone("17801020000");

? ? ? ? user.setPassword("123456");

? ? ? ? userMapper.saveUser(user);

? ? ? ? return "hello";

? ? }

}

```

11. 然后在瀏覽器中訪問(wèn)http://localhost:8080/helloworld/hello还蹲,然后去數(shù)據(jù)庫(kù)中查詢(xún)一下user表,你會(huì)發(fā)現(xiàn)多了一條記錄。查詢(xún)語(yǔ)句

```

select * from user\G

```

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末谜喊,一起剝皮案震驚了整個(gè)濱河市潭兽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌锅论,老刑警劉巖讼溺,帶你破解...
    沈念sama閱讀 211,348評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異最易,居然都是意外死亡怒坯,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)藻懒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)剔猿,“玉大人,你說(shuō)我怎么就攤上這事嬉荆」榫矗” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,936評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵鄙早,是天一觀的道長(zhǎng)汪茧。 經(jīng)常有香客問(wèn)我,道長(zhǎng)限番,這世上最難降的妖魔是什么舱污? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,427評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮弥虐,結(jié)果婚禮上扩灯,老公的妹妹穿的比我還像新娘。我一直安慰自己霜瘪,他們只是感情好珠插,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著颖对,像睡著了一般捻撑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上惜互,一...
    開(kāi)封第一講書(shū)人閱讀 49,785評(píng)論 1 290
  • 那天布讹,我揣著相機(jī)與錄音,去河邊找鬼训堆。 笑死,一個(gè)胖子當(dāng)著我的面吹牛白嘁,可吹牛的內(nèi)容都是我干的坑鱼。 我是一名探鬼主播,決...
    沈念sama閱讀 38,931評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鲁沥!你這毒婦竟也來(lái)了呼股?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,696評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤画恰,失蹤者是張志新(化名)和其女友劉穎彭谁,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體允扇,經(jīng)...
    沈念sama閱讀 44,141評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缠局,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了考润。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狭园。...
    茶點(diǎn)故事閱讀 38,625評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖糊治,靈堂內(nèi)的尸體忽然破棺而出唱矛,到底是詐尸還是另有隱情,我是刑警寧澤井辜,帶...
    沈念sama閱讀 34,291評(píng)論 4 329
  • 正文 年R本政府宣布绎谦,位于F島的核電站,受9級(jí)特大地震影響粥脚,放射性物質(zhì)發(fā)生泄漏窃肠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評(píng)論 3 312
  • 文/蒙蒙 一阿逃、第九天 我趴在偏房一處隱蔽的房頂上張望铭拧。 院中可真熱鬧,春花似錦恃锉、人聲如沸搀菩。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)肪跋。三九已至,卻和暖如春土砂,著一層夾襖步出監(jiān)牢的瞬間州既,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工萝映, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吴叶,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓序臂,卻偏偏與公主長(zhǎng)得像蚌卤,于是被迫代替她去往敵國(guó)和親实束。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評(píng)論 2 348

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