1. 建立資料庫
這裡用SQLyog進行操作sql語句比較友善
CREATE DATABASE /*!32312 IF NOT EXISTS*/`myblog` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `myblog`;
/*Table structure for table `articles` */
DROP TABLE IF EXISTS `articles`;
CREATE TABLE `articles` (
`article_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主鍵ID',
`user_id` bigint(20) NOT NULL COMMENT '使用者ID',
`title` varchar(255) DEFAULT NULL COMMENT '文章标題',
`name` varchar(255) DEFAULT NULL,
`view_num` int(11) DEFAULT NULL COMMENT '浏覽數',
`comment_num` int(11) DEFAULT NULL COMMENT '評論數',
`category_id` bigint(20) DEFAULT NULL COMMENT '文章分類ID',
`create_time` datetime DEFAULT NULL COMMENT '建立日期',
PRIMARY KEY (`article_id`),
KEY `key_category_id` (`category_id`),
KEY `key_userId` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=80 DEFAULT CHARSET=utf8 COMMENT='文章表';
/*Data for the table `articles` */
insert into `articles`(`article_id`,`user_id`,`title`,`name`,`view_num`,`comment_num`,`category_id`,`create_time`) values (1,0,'555','555.md',0,0,1,'2020-09-22 00:00:00'),(67,1,'123','123.md',0,0,1,'2020-09-29 09:07:20'),(68,1,'555','555.md',0,0,1,'2020-09-29 09:07:20'),(69,1,'ddd','ddd.md',0,0,1,'2020-09-29 09:07:20'),(70,1,'new','new.md',0,0,1,'2020-09-29 09:07:20'),(71,1,'redis安裝','redis安裝.md',0,0,1,'2020-09-29 09:07:20'),(72,1,'SecureCRT連接配接虛拟機中的Linux系統(ssh方式)','SecureCRT連接配接虛拟機中的Linux系統(ssh方式).md',0,0,1,'2020-09-29 09:07:20'),(73,1,'SpringCloud學習','SpringCloud學習.md',0,0,1,'2020-09-29 09:07:20'),(74,1,'springcloud工程執行個體','springcloud工程執行個體.md',0,0,1,'2020-09-29 09:07:20'),(75,1,'開源架構EL-ADMIN開發自己的 web應用(1)-初始化并啟動EL-ADMIN','開源架構EL-ADMIN開發自己的 web應用(1)-初始化并啟動EL-ADMIN.md',0,0,1,'2020-09-29 09:07:20'),(76,1,'挑戰世界的“自由主義宅男”——linux之父林納斯·托瓦茲 - 副本','挑戰世界的“自由主義宅男”——linux之父林納斯·托瓦茲 - 副本.md',0,0,1,'2020-09-29 09:07:20'),(77,1,'測試','測試.md',0,0,1,'2020-09-29 09:07:20'),(78,1,'淘寶革命的啟示錄','淘寶革命的啟示錄.md',0,0,1,'2020-09-29 09:07:20'),(79,1,'黑客帝國影評','黑客帝國影評.md',0,0,1,'2020-09-29 09:07:20');
插入記錄後
2. pom檔案引入相應依賴
主要引入了mysql連接配接、druid、mybatis三個相應依賴,其他springboot相關依賴請自行引入
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--druid-->
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.24</version>
</dependency>
<!--springboot-start-->
<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
3. application.yml配置
這裡主要注意datasource中的url配置(注意時區),mybatis相關檔案位置配置
#端口号設定
server:
port: 4000
#spring配置
spring:
datasource:
#注意指定時區
url: jdbc:mysql://localhost:3306/myblog?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root
password: root
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
#mybatis配置
#mybatis配置
mybatis:
#config-location與configuration不能共存,隻能保留一個,不然會報錯
#config-location: classpath:mybatis/mybatis-config.xml
mapper-locations: classpath:mybatis/mapper/*.xml
type-aliases-package: com.xinxin.pojo
#開啟駝峰命名,不然article_id與articleId對不上
configuration:
map-underscore-to-camel-case: true
4. 建立目錄結構
注意mybatis檔案夾與相應檔案的位置與application.yml中配置一緻,一般也這麼配
4.1 pojo建立
對應資料庫進行建立,沒什麼說的
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Article implements Serializable {
private Long articleId;
private Long userId=1l ;
private String title;
private String name;
private Integer viewNum=0 ;
private Integer commentNum=0 ;
private long categoryId ;
private Timestamp createTime;
}
4.2 dao層建立
@Mapper
@Repository
public interface ArticleDao {
//查詢所有文章
public List<Article> queryAll();
//根據id查詢文章
public Article queryById(long id);
//添加文章
public Boolean addArticle(Article article);
}
4.3 servcie層建立
ArticleService
public interface ArticleService {
//查詢所有文章
public List<Article> queryAll();
//根據id查詢文章
public Article queryById(long id);
//添加文章
public Boolean addArticle(Article article);
}
ArticleServiceImpl
@Service
@Transactional
public class ArticleServiceImpl implements ArticleService {
@Autowired
private ArticleDao articleDao;
@Override
public List<Article> queryAll() {
return articleDao.queryAll();
}
@Override
public Article queryById(long id) {
return articleDao.queryById(id);
}
@Override
public Boolean addArticle(Article article) {
return articleDao.addArticle(article);
}
}
注意加上@Transactional注解
4.4 ArticleMapper.xml
這裡主要寫sql語句,建議先在SQLyog中自己測一遍,做大項目,一般都要自己寫sql語句。
<?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">
<!--查官網https://mybatis.org/mybatis-3/zh/getting-started.html-->
<mapper namespace="com.xinxin.dao.ArticleDao">
<select id="queryAll" resultType="Article">
select * from articles
</select>
<select id="queryById" parameterType="Long" resultType="Article">
select * from articles where article_id = #{articleId}
</select>
<insert id="addArticle" parameterType="Article">
insert into articles
(user_id,title,name,view_num,comment_num,category_id,create_time)
-- 注意這裡與pojo中的參數名相對應,不要搞錯了
VALUES(#{userId},#{title},#{name},#{viewNum},#{commentNum},#{categoryId},#{createTime})
</insert>
</mapper>
4.5 controller層
@RestController
public class ArticleController {
@Autowired
private ArticleService articleService;
//查詢所有
@GetMapping("/api/queryAll")
public Object queryAll(){
return articleService.queryAll();
}
//根據id查詢
@GetMapping("api/queryById/{id}")
public Object queryById(@PathVariable("id") long id){
return articleService.queryById(id);
}
//增加article
@PostMapping("api/addArticle")
public Boolean addAritcle(Article article){
return articleService.addArticle(article);
}
}
5 檢測
這裡隻做了增查的檢測,其他更新與删除操作按照上述流程同樣進行設定。
查詢1條記錄
查詢所有記錄
6. 總結
這裡是最基本的springboot使用mybatis操作資料庫的流程,當然現在流行用mybatis-plus一鍵生成所需代碼,但是真正做項目還是要對sql語句進行優化,仍要回到最基本的流程裡來。後續會做一些sql語句優化的筆記。