《Gradle構(gòu)建SpringBoot學習筆記》第四章:Spring Boot集成mybatis

1.MySQL數(shù)據(jù)庫

1.1數(shù)據(jù)庫結(jié)構(gòu):

數(shù)據(jù)庫結(jié)構(gòu).png

1.2user表結(jié)構(gòu):

user結(jié)構(gòu).png

1.3user表數(shù)據(jù):

user數(shù)據(jù).png

1.4commodity表結(jié)構(gòu):

commodity結(jié)構(gòu).png

1.5commodity表數(shù)據(jù):

commodity數(shù)據(jù).png

2.使用注解方式實現(xiàn)Mybatis

2.1引入依賴jar包

在build.gradle中添加Mysql驅(qū)動及Mybatis所需jar包如下

dependencies {
    compile('org.springframework.boot:spring-boot-starter')
testCompile('org.springframework.boot:spring-boot-starter-test')
//使用 Controller 的時候需要引入 web 包
    compile('org.springframework.boot:spring-boot-starter-web')

compile 'mysql:mysql-connector-java' 
//配置mybatis 數(shù)據(jù)源
    compile("org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.0")
    testCompile('org.mybatis.spring.boot:mybatis-spring-boot-starter-test:1.3.0')
}

2.2配置數(shù)據(jù)庫連接

將src/main/resources中的application.properties重命名為application.yml,并打開編輯配置項目所需數(shù)據(jù)庫的地址、用戶名、密碼票唆,格式如下

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/boot_db?characterEncoding=utf8
    username: root
    password: 123456

2.3創(chuàng)建web項目各層級包

在src/main/java中的創(chuàng)建entity希太、mapper侥祭、service平痰、web的package包如下


package.png

2.4編寫Mapper接口

在剛剛建的mapper包中新建interface接口UserMapper款违,并以注解方式添加一個查詢方法如下

import org.apache.ibatis.annotations.Select;

public interface UserMapper {

    @Select("select name from user where id = #{id}")
    String findUsername(Long id);
}

2.5編寫Service層

在service包中new一個interface接口UserService.java藕坯,包含一個查詢方法如下

public interface UserService {
    String findUsername(Long id);
}

在service包中創(chuàng)建impl包团南,并創(chuàng)建接口實現(xiàn)類UserServiceImpl.java


UserServiceImpl.png

UserService的實現(xiàn)類UserServiceImpl具體代碼如下

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public String findUsername(Long id) {
        String name = userMapper.findUsername(id);
        return name;
    }
}

實現(xiàn)類需加@Service注解,并將UserMapper用@Autowired注入炼彪。

2.6編寫Controller層

在Web包中創(chuàng)建Controller類如下

@RestController
@RequestMapping(value = "user")
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping("/userName")
    String findUserNameById(Long id) {
        String name = userService.findUsername(id);
        return name;
    }
}

2.7運行測試

打開Application啟動類吐根,去掉之前步驟中測試使用的接口代碼,
并為該類添加Mapper掃描注解辐马,修改后代碼如下

@MapperScan("com.dmcq.mapper")
@SpringBootApplication
public class DmcqApplication {

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

運行該類main方法啟動服務拷橘,控制臺輸出信息如下,顯示出了服務啟動的端口(8080)喜爷,則服務啟動成功冗疮。


啟動成功.png

服務啟動成功后,瀏覽器get方式傳參請求Controller層web接口檩帐,測試請求根據(jù)id查詢數(shù)據(jù)庫中用戶姓名的功能:
瀏覽器測試訪問http://localhost:8080/user/userName?id=1結(jié)果如下

瀏覽測試.png

根據(jù)id查詢數(shù)據(jù)庫中用戶姓名功能完成术幔,測試成功。

3.使用XML方式實現(xiàn)Mybatis

在2的基礎(chǔ)上進行以下操作

3.1創(chuàng)建實體類

在entity包中創(chuàng)建實體類User如下

public class User {
    private long id ;               //id
    private String name;        // 姓名
    
public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

3.2添加Mapper接口

打開2.4中創(chuàng)建的UserMapper接口類湃密,根據(jù)需求添加一個接口方法get()如下

public interface UserMapper {

    @Select("select name from user where id = #{id}")
    String findUsername(Long id);

    User get(User user);
}

3.3創(chuàng)建XML文件

(1)創(chuàng)建mappers文件夾
在src/main/resources下創(chuàng)建mappers文件夾:
右擊resources→New→other


folder.png

選擇Folder,點擊Next


mappers.png

將Folder name命名為mappers诅挑,點擊Finish完成創(chuàng)建文件夾。
(2)創(chuàng)建UserMapper.xml
在新建的mappers文件夾下創(chuàng)建UserMapper.xml文件泛源,如下


UserServiceImpl.png

打開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.dmcq.mapper.UserMapper">
    
    <sql id="userColumns">
        a.id AS "id",
        a.name AS "name"
    </sql>
    
    <select id="get" resultType="User">
        SELECT 
            <include refid="userColumns"/>
        FROM user a
        WHERE a.id = #{id}
    </select>
</mapper>

<select>中的id值對應4.2.2中添加的get()方法。

3.4添加service層測試方法

打開UserService.java达箍,添加一個接口方法没龙,如下

public interface UserService {
    String findUsername(Long id);
    User getUser(User user);
}

打開UserServiceImpl.java,添加實現(xiàn)方法,如下

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;
    @Override
    public String findUsername(Long id) {
        String name = userMapper.findUsername(id);
        return name;
    }
    @Override
    public User getUser(User user) {
        user = userMapper.get(user);
        return user;
    }
}

3.5添加Controller層測試方法

打開UserController.java兜畸,添加一個方法

@RestController
@RequestMapping(value = "user")
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping("/userName")
    String findUserNameById(Long id) {
        String name = userService.findUsername(id);
        return name;
    }

    @RequestMapping("/findUserNameByUser ")
    String findUserNameByUser(User user) {
        String name = userService.getUser(user).getPersonName();
        return name;
    }
}

3.6配置Mybatis

打開src/main/resources的下application.yml添加mybatis配置如下

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/boot_db?characterEncoding=utf8
    username: root
    password: 1234
    
mybatis:
    type-aliases-package: com.dmcq.entity
    mapper-locations: classpath:mappers/**/*.xml
    check-config-location: true

type-aliases-package配置別名為實體類所在包努释,若未配置則xml文件中<select>標簽的返回值類型resultType="User"必須寫成全類名形式resultType="com.dmcq.entity.User"碘梢,否則會因為找不到User的定義位置而報錯咬摇。

3.7運行測試

右鍵點擊Application.java啟動類
Run As/Debug As→Java Application,啟動web服務


運行.png

瀏覽器訪問
http://localhost:8080/user/findUserNameByUser?id=2
結(jié)果如下

測試成功.png

測試成功煞躬。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末肛鹏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子恩沛,更是在濱河造成了極大的恐慌在扰,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雷客,死亡現(xiàn)場離奇詭異芒珠,居然都是意外死亡,警方通過查閱死者的電腦和手機搅裙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門皱卓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人部逮,你說我怎么就攤上這事娜汁。” “怎么了兄朋?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵掐禁,是天一觀的道長。 經(jīng)常有香客問我颅和,道長傅事,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任峡扩,我火速辦了婚禮享完,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘有额。我一直安慰自己般又,他們只是感情好,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布巍佑。 她就那樣靜靜地躺著茴迁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪萤衰。 梳的紋絲不亂的頭發(fā)上堕义,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天,我揣著相機與錄音,去河邊找鬼倦卖。 笑死洒擦,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的怕膛。 我是一名探鬼主播熟嫩,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼褐捻!你這毒婦竟也來了掸茅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤柠逞,失蹤者是張志新(化名)和其女友劉穎昧狮,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體板壮,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡逗鸣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了绰精。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片撒璧。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖茬底,靈堂內(nèi)的尸體忽然破棺而出沪悲,到底是詐尸還是另有隱情,我是刑警寧澤阱表,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布殿如,位于F島的核電站,受9級特大地震影響最爬,放射性物質(zhì)發(fā)生泄漏涉馁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一爱致、第九天 我趴在偏房一處隱蔽的房頂上張望烤送。 院中可真熱鬧,春花似錦糠悯、人聲如沸帮坚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽试和。三九已至,卻和暖如春纫普,著一層夾襖步出監(jiān)牢的瞬間阅悍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留节视,地道東北人拳锚。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像寻行,于是被迫代替她去往敵國和親霍掺。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

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