摘要:關(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如下:
配置數(shù)據(jù)庫org.mybatis.spring.boot mybatis-spring-boot-starter 1.3.1 mysql mysql-connector-java 6.0.6
自己安裝下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)程問題順利解決。
問題2Consider defining a bean of type "com.example.api_demo.domain.repository.TempMapper" in your configuration.
這個(gè)自己犯了錯(cuò)誤,忘記在啟動(dòng)類配置掃描包了,立馬添加上。
問題3The 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ū)問題。
問題4Could 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ǎ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
摘要:前兩篇已經(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之外...
摘要:哪吒社區(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...
摘要:前提好幾周沒更新博客了,對(duì)不斷支持我博客的童鞋們說聲抱歉了。熟悉我的人都知道我寫博客的時(shí)間比較早,而且堅(jiān)持的時(shí)間也比較久,一直到現(xiàn)在也是一直保持著更新狀態(tài)。 showImg(https://segmentfault.com/img/remote/1460000014076586?w=1920&h=1080); 前提 好幾周沒更新博客了,對(duì)不斷支持我博客的童鞋們說聲:抱歉了!。自己這段時(shí)...
摘要:上一篇學(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文件。...
摘要:的作用可以看到,它給我們提供了一些核心的功能代碼生成器和現(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); 并且榮獲...
閱讀 3104·2021-11-18 10:02
閱讀 3399·2021-11-02 14:48
閱讀 3441·2019-08-30 13:52
閱讀 605·2019-08-29 17:10
閱讀 2131·2019-08-29 12:53
閱讀 1458·2019-08-29 12:53
閱讀 1069·2019-08-29 12:25
閱讀 2214·2019-08-29 12:17