摘要:關閉進程問題順利解決。問題泄也是一個奇葩的問題,百度一下,原來碰到的人挺多,原因就是高版本的驅動會有數(shù)據(jù)庫和系統(tǒng)時區(qū)差異我用的版本是,所以碰到了,修改下配置,執(zhí)行時區(qū)就可以了或者用回版本,該版本不會存在時區(qū)問題。
本文主要在上一篇Spring Boot學習筆記(四)構建RESTful API標準工程實例的基礎上,整合MyBatis,實現(xiàn)簡單的MySql數(shù)據(jù)庫訪問引入依賴
這里主要依賴兩個,一個是連接MySql的mysql-connector-java,還一個是SpringBoot整合MyBatis的核心依賴mybatis-spring-boot-starter
可以從maven倉庫里生成對應的配置代碼:
對應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="測試表";
在application.properties下配置對應的數(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實際代碼編寫
首先創(chuàng)建數(shù)據(jù)庫映射對象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); }
編寫對應的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實現(xiàn)數(shù)據(jù)庫訪問demo") @RequestMapping(value = "/temp",method = RequestMethod.GET) public Temp getTemp() { Temp t=tempService.getTemp(1); return t; } }
好啦,大功告成,如果沒有意外的話,應該能順利看到結果啦。
問題匯總編寫過程中不是一帆風順的,我遇到的問題如下,供大家參考。
問題1啟動時提示Failed to start connecter[HTTP/1.1-8080]
看到這個提示后還是比較好定位問題的,基本鎖定端口被占用了,很好奇被誰占用了,于是排查了下:
打開命令窗口輸入:
netstat -aon|findstr "8080"
找到對應的PID后到任務管理器去查看被什么進程給占用了
結果發(fā)現(xiàn)是個奇怪的進程,后來百度了下和docker有關,這才恍然大悟,之前在docker下調試 .net core項目的。關閉進程問題順利解決。
問題2Consider defining a bean of type "com.example.api_demo.domain.repository.TempMapper" in your configuration.
這個自己犯了錯誤,忘記在啟動類配置掃描包了,立馬添加上。
問題3The server time zone value "?泄???????" is unrecognized or represents more t...
也是一個奇葩的問題,百度一下,原來碰到的人挺多,原因就是高版本的MySql驅動會有數(shù)據(jù)庫和系統(tǒng)時區(qū)差異,我用的版本是6.0.6,所以碰到了,修改下配置,執(zhí)行時區(qū)就可以了
jdbc:mysql://localhost:3306/mytest?serverTimezone=UTC
或者用回5.1.4版本,該版本不會存在時區(qū)問題。
問題4Could not autowired,No beans of "**" type found
這個問題困擾了我一陣,很尷尬,應該早點百度的或者先嘗試一下編譯的,后來發(fā)現(xiàn)編譯能通過,運行也沒問題,后來才知道,可參考這篇博客
如果不想看到這個報錯,可降低Autowired檢測的級別:
到這里,簡單MyBatis實現(xiàn)數(shù)據(jù)庫訪問已經(jīng)基本實現(xiàn),但這不能滿足實際業(yè)務需求,比如復雜的sql如何處理,如何訪問多個庫等。
同時,MyBatis的一些注解對于新手來說還是比較陌生的,下一篇我會嘗試從我的角度去深度整理下MyBatis的復雜使用,和大家一起分享,共同進步。
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/68936.html
摘要:前兩篇已經(jīng)構建了標準工程實例,也整合了實現(xiàn)了簡單數(shù)據(jù)庫訪問,本篇主要更深入的學習下,實現(xiàn)較為完整的數(shù)據(jù)庫的標準服務。到這里,最復雜的數(shù)據(jù)訪問基本就算編寫完了。 前兩篇已經(jīng)構建了RESTful API標準工程實例,也整合了MyBatis實現(xiàn)了簡單數(shù)據(jù)庫訪問,本篇主要更深入的學習下,實現(xiàn)較為完整的數(shù)據(jù)庫CRUD的標準服務。 首先看下要實現(xiàn)的效果吧,完成下面截圖部分的API,除了CRUD之外...
摘要:哪吒社區(qū)技能樹打卡打卡貼函數(shù)式接口簡介領域優(yōu)質創(chuàng)作者哪吒公眾號作者架構師奮斗者掃描主頁左側二維碼,加入群聊,一起學習一起進步歡迎點贊收藏留言前情提要無意間聽到領導們的談話,現(xiàn)在公司的現(xiàn)狀是碼農(nóng)太多,但能獨立帶隊的人太少,簡而言之,不缺干 ? 哪吒社區(qū)Java技能樹打卡?【打卡貼 day2...
摘要:前提好幾周沒更新博客了,對不斷支持我博客的童鞋們說聲抱歉了。熟悉我的人都知道我寫博客的時間比較早,而且堅持的時間也比較久,一直到現(xiàn)在也是一直保持著更新狀態(tài)。 showImg(https://segmentfault.com/img/remote/1460000014076586?w=1920&h=1080); 前提 好幾周沒更新博客了,對不斷支持我博客的童鞋們說聲:抱歉了!。自己這段時...
摘要:上一篇學習了服務提供者,但是并不是單單就學習了服務提供者。中間還穿插使用了數(shù)據(jù)源和整合。但是上篇使用時還是沿用了老的方式,需要配置對應的文件。 1、上一篇學習了服務提供者provider,但是并不是單單就學習了服務提供者。中間還穿插使用了Hikari數(shù)據(jù)源和spring cloud整合mybatis。但是上篇使用mybatis時還是沿用了老的方式,需要配置mapper對應的xml文件。...
摘要:的作用可以看到,它給我們提供了一些核心的功能代碼生成器和現(xiàn)成的接口以及可以結合的條件構造器使我們的代碼變得足夠優(yōu)雅,分頁的使用也是相當?shù)姆奖?,以及提供了不同的主鍵生成策略。 簡介 Mybatis-Plus是在Mybatis的基礎上,國人開發(fā)的一款持久層框架。 showImg(https://segmentfault.com/img/bVbvFk4?w=2022&h=862); 并且榮獲...
閱讀 3049·2021-11-18 10:02
閱讀 3315·2021-11-02 14:48
閱讀 3384·2019-08-30 13:52
閱讀 527·2019-08-29 17:10
閱讀 2070·2019-08-29 12:53
閱讀 1392·2019-08-29 12:53
閱讀 1018·2019-08-29 12:25
閱讀 2155·2019-08-29 12:17