成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Spring Boot學(xué)習(xí)筆記(五)整合MyBatis實(shí)現(xiàn)數(shù)據(jù)庫訪問

Tony / 2685人閱讀

摘要:關(guān)閉進(jìn)程問題順利解決。問題泄也是一個(gè)奇葩的問題,百度一下,原來碰到的人挺多,原因就是高版本的驅(qū)動(dòng)會(huì)有數(shù)據(jù)庫和系統(tǒng)時(shí)區(qū)差異我用的版本是,所以碰到了,修改下配置,執(zhí)行時(shí)區(qū)就可以了或者用回版本,該版本不會(huì)存在時(shí)區(qū)問題。

本文主要在上一篇Spring Boot學(xué)習(xí)筆記(四)構(gòu)建RESTful API標(biāo)準(zhǔn)工程實(shí)例的基礎(chǔ)上,整合MyBatis,實(shí)現(xiàn)簡(jiǎn)單的MySql數(shù)據(jù)庫訪問
引入依賴

這里主要依賴兩個(gè),一個(gè)是連接MySql的mysql-connector-java,還一個(gè)是SpringBoot整合MyBatis的核心依賴mybatis-spring-boot-starter

可以從maven倉庫里生成對(duì)應(yīng)的配置代碼:

對(duì)應(yīng)pom.xml如下:


    org.mybatis.spring.boot
    mybatis-spring-boot-starter
    1.3.1



    mysql
    mysql-connector-java
    6.0.6
配置數(shù)據(jù)庫

自己安裝下MySql,創(chuàng)建庫和表,我這邊demo的表如下:

CREATE TABLE `temp` (
    `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT "自增長id",
    `name` VARCHAR(50) NOT NULL DEFAULT "" COMMENT "姓名",
    `content` VARCHAR(100) NOT NULL DEFAULT "" COMMENT "描述",
    PRIMARY KEY (`id`)
)
COMMENT="測(cè)試表";

application.properties下配置對(duì)應(yīng)的數(shù)據(jù)庫地址:

spring.datasource.url=jdbc:mysql://localhost:3306/mytest
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
實(shí)際代碼編寫

首先創(chuàng)建數(shù)據(jù)庫映射對(duì)象Temp:

public class Temp {
    
    private Integer id;
    private  String name;
    private String content;

    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setId(String name) {
        this.name = name;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
}

然后創(chuàng)建Temp映射的操作TempMapper:

@Mapper
public interface TempMapper {

    @Select("SELECT * FROM TEMP WHERE ID = #{id}")
    Temp findById(@Param("id") Integer id);

    @Insert("INSERT INTO TEMP(NAME, CONTENT) VALUES(#{name}, #{content})")
    int insert(Temp temp);

    @Update("UPDATE TEMP SET  CONTENT=#{content} WHERE ID=#{id}")
    int update(@Param("content") String content, @Param("id") Integer id);
}

編寫對(duì)應(yīng)的service層TempServiceImpl,TempService:

public interface TempService {
    public Temp getTemp(Integer id);
    public Boolean insertTemp(Temp entity);
    public Boolean updateTemp(Temp entity);
}
@Service
public class TempServiceImpl implements TempService{

    @Autowired
    private TempMapper tempMapper;

    @Override
    public Temp getTemp(Integer id)
    {
        return tempMapper.findById(id);
    }

    @Override
    public Boolean insertTemp(Temp entity)
    {
        return tempMapper.insert(entity)>0;
    }

    @Override
    public Boolean updateTemp(Temp entity)
    {
        return tempMapper.update(entity.getContent(),entity.getId())>0;
    }
}

最后編寫Controller:

@RestController
public class TempController {
    @Autowired
    private TempService tempService;

    @ApiOperation(value="MyBatis_Demo", notes="MyBatis實(shí)現(xiàn)數(shù)據(jù)庫訪問demo")
    @RequestMapping(value = "/temp",method = RequestMethod.GET)
    public Temp getTemp()
    {
        Temp t=tempService.getTemp(1);
        return t;
    }
}

好啦,大功告成,如果沒有意外的話,應(yīng)該能順利看到結(jié)果啦。

問題匯總

編寫過程中不是一帆風(fēng)順的,我遇到的問題如下,供大家參考。

問題1

啟動(dòng)時(shí)提示Failed to start connecter[HTTP/1.1-8080]

看到這個(gè)提示后還是比較好定位問題的,基本鎖定端口被占用了,很好奇被誰占用了,于是排查了下:

打開命令窗口輸入:

netstat -aon|findstr "8080"

找到對(duì)應(yīng)的PID后到任務(wù)管理器去查看被什么進(jìn)程給占用了

結(jié)果發(fā)現(xiàn)是個(gè)奇怪的進(jìn)程,后來百度了下和docker有關(guān),這才恍然大悟,之前在docker下調(diào)試 .net core項(xiàng)目的。關(guān)閉進(jìn)程問題順利解決。

問題2
Consider defining a bean of type "com.example.api_demo.domain.repository.TempMapper" in your configuration.

這個(gè)自己犯了錯(cuò)誤,忘記在啟動(dòng)類配置掃描包了,立馬添加上。

問題3
The server time zone value "?泄???????" is unrecognized or represents more t...

也是一個(gè)奇葩的問題,百度一下,原來碰到的人挺多,原因就是高版本的MySql驅(qū)動(dòng)會(huì)有數(shù)據(jù)庫和系統(tǒng)時(shí)區(qū)差異,我用的版本是6.0.6,所以碰到了,修改下配置,執(zhí)行時(shí)區(qū)就可以了

jdbc:mysql://localhost:3306/mytest?serverTimezone=UTC

或者用回5.1.4版本,該版本不會(huì)存在時(shí)區(qū)問題。

問題4
Could not autowired,No beans of "**" type found

這個(gè)問題困擾了我一陣,很尷尬,應(yīng)該早點(diǎn)百度的或者先嘗試一下編譯的,后來發(fā)現(xiàn)編譯能通過,運(yùn)行也沒問題,后來才知道,可參考這篇博客

如果不想看到這個(gè)報(bào)錯(cuò),可降低Autowired檢測(cè)的級(jí)別:

總結(jié)

到這里,簡(jiǎn)單MyBatis實(shí)現(xiàn)數(shù)據(jù)庫訪問已經(jīng)基本實(shí)現(xiàn),但這不能滿足實(shí)際業(yè)務(wù)需求,比如復(fù)雜的sql如何處理,如何訪問多個(gè)庫等。

同時(shí),MyBatis的一些注解對(duì)于新手來說還是比較陌生的,下一篇我會(huì)嘗試從我的角度去深度整理下MyBatis的復(fù)雜使用,和大家一起分享,共同進(jìn)步。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/68936.html

相關(guān)文章

  • Spring Boot學(xué)習(xí)筆記(六)結(jié)合MyBatis實(shí)現(xiàn)較為復(fù)雜的RESTful API

    摘要:前兩篇已經(jīng)構(gòu)建了標(biāo)準(zhǔn)工程實(shí)例,也整合了實(shí)現(xiàn)了簡(jiǎn)單數(shù)據(jù)庫訪問,本篇主要更深入的學(xué)習(xí)下,實(shí)現(xiàn)較為完整的數(shù)據(jù)庫的標(biāo)準(zhǔn)服務(wù)。到這里,最復(fù)雜的數(shù)據(jù)訪問基本就算編寫完了。 前兩篇已經(jīng)構(gòu)建了RESTful API標(biāo)準(zhǔn)工程實(shí)例,也整合了MyBatis實(shí)現(xiàn)了簡(jiǎn)單數(shù)據(jù)庫訪問,本篇主要更深入的學(xué)習(xí)下,實(shí)現(xiàn)較為完整的數(shù)據(jù)庫CRUD的標(biāo)準(zhǔn)服務(wù)。 首先看下要實(shí)現(xiàn)的效果吧,完成下面截圖部分的API,除了CRUD之外...

    CntChen 評(píng)論0 收藏0
  • Java學(xué)習(xí)路線總結(jié),搬磚工逆襲Java架構(gòu)師(全網(wǎng)最強(qiáng))

    摘要:哪吒社區(qū)技能樹打卡打卡貼函數(shù)式接口簡(jiǎn)介領(lǐng)域優(yōu)質(zhì)創(chuàng)作者哪吒公眾號(hào)作者架構(gòu)師奮斗者掃描主頁左側(cè)二維碼,加入群聊,一起學(xué)習(xí)一起進(jìn)步歡迎點(diǎn)贊收藏留言前情提要無意間聽到領(lǐng)導(dǎo)們的談話,現(xiàn)在公司的現(xiàn)狀是碼農(nóng)太多,但能獨(dú)立帶隊(duì)的人太少,簡(jiǎn)而言之,不缺干 ? 哪吒社區(qū)Java技能樹打卡?【打卡貼 day2...

    Scorpion 評(píng)論0 收藏0
  • 寫這么多系列博客,怪不得找不到女朋友

    摘要:前提好幾周沒更新博客了,對(duì)不斷支持我博客的童鞋們說聲抱歉了。熟悉我的人都知道我寫博客的時(shí)間比較早,而且堅(jiān)持的時(shí)間也比較久,一直到現(xiàn)在也是一直保持著更新狀態(tài)。 showImg(https://segmentfault.com/img/remote/1460000014076586?w=1920&h=1080); 前提 好幾周沒更新博客了,對(duì)不斷支持我博客的童鞋們說聲:抱歉了!。自己這段時(shí)...

    JerryWangSAP 評(píng)論0 收藏0
  • 5、springcloud整合mybatis注解方式

    摘要:上一篇學(xué)習(xí)了服務(wù)提供者,但是并不是單單就學(xué)習(xí)了服務(wù)提供者。中間還穿插使用了數(shù)據(jù)源和整合。但是上篇使用時(shí)還是沿用了老的方式,需要配置對(duì)應(yīng)的文件。 1、上一篇學(xué)習(xí)了服務(wù)提供者provider,但是并不是單單就學(xué)習(xí)了服務(wù)提供者。中間還穿插使用了Hikari數(shù)據(jù)源和spring cloud整合mybatis。但是上篇使用mybatis時(shí)還是沿用了老的方式,需要配置mapper對(duì)應(yīng)的xml文件。...

    ingood 評(píng)論0 收藏0
  • Spring Boot 2.x():整合Mybatis-Plus

    摘要:的作用可以看到,它給我們提供了一些核心的功能代碼生成器和現(xiàn)成的接口以及可以結(jié)合的條件構(gòu)造器使我們的代碼變得足夠優(yōu)雅,分頁的使用也是相當(dāng)?shù)姆奖?,以及提供了不同的主鍵生成策略。 簡(jiǎn)介 Mybatis-Plus是在Mybatis的基礎(chǔ)上,國人開發(fā)的一款持久層框架。 showImg(https://segmentfault.com/img/bVbvFk4?w=2022&h=862); 并且榮獲...

    AaronYuan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<