簡介
SpringBoot和Mybatis是啥請自行百度,作者這裡也是花了幾天時間入門了這個框架用來完成任務,並且也算符合要求的完成了任務,期間也各種百度但是沒找到自己想要的那種簡單易懂的教程,所以踩了很多坑,寫這個部落格的目的就是為了讓大家少踩一點坑,開始。
建立一個SpringBoot專案
https://start.spring.io/
點開這個網站,建立一個Springboot專案,如下圖,這裡用的是2.1.5,學技術嘛,就是要學新的。
選擇依賴,點選左下角的Dependencies
Web
我們這次開發的是web應用所以選擇webThymeleaf
一款模板引擎,能夠比較方便的展現後臺傳來的資料MySQL
我們這次使用Mysql資料庫JDBC
Java 資料庫連線 Java Database Connectivity,簡稱JDBCMyBatis
請看第一段
最後點選左下角的Generate Project,將會開始下載一個以你專案名稱開頭的zip檔案,下載完成後解壓到你的工作目錄。
開啟這個專案
這裡使用的是IDEA,別的啥也行比如eclipse,這裡只講解IDEA的操作,安裝破解IDEA百度一大堆,安裝好之後開啟IDEA(發現IDEA有個問題,有的時候自動import包好用,有的時候不好用,坑!),然後選擇左上角的File->Open,找到你剛剛解壓的專案檔案裡的pom.xml點選ok如下圖
目錄結構
增加修改目錄結構為下圖
開始編寫
這裡我們就編寫一個人員資訊的增刪改查
配置資料庫
資料庫建立
開啟mysql資料庫建立一個叫test的資料庫之後建立person表,這裡使用的是Navicat百度有破解版,會命令用命令列也行,如下圖,記得設定主鍵自增,然後隨便加幾個資料以便之後查詢。
application.yml
路徑:/resources/application.yml
server:
port: 8080
spring:
datasource:
name:
url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=UTC
username: root
password: root
mybatis:
mapper-locations: classpath:mapper/*.xml
Person類
路徑/model/Person.java
package com.ljsh.test.model;
public class Person {
/*
{id} 自增主鍵
{name} 人員姓名
{mobile} 人員電話
*/
private int id;
private String name;
private String mobile;
// 右鍵 Generate -> Setter and Getter -> Shift全選 -> ok 生成如下程式碼
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
// 右鍵 Generate -> toString() -> 全選 -> ok 生成如下程式碼
@Override
public String toString() {
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
", mobile='" + mobile + '\'' +
'}';
}
}
PersonDao
路徑:/dao/PersonDao.java
package com.ljsh.test.dao;
import com.ljsh.test.model.Person;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface PersonDao {
/*
查所有
return List<Person>
*/
List<Person> getAll();
/*
根據ID查詢
{id} 要查詢人員的 id
*/
Person getPersonByID(int id);
/*
刪除
{id} 要刪除人員的 id
*/
void delete(int id);
/*
更新
{p} 要更新的Person例項
*/
void update(Person p);
/*
增加
{p} 要新增的Person例項
*/
void newp(Person p);
}
PersonDao.xml
路徑:/mapper/PersonDao.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" >
<!-- 這裡填寫對應的Dao檔案所在的路徑 -->
<mapper namespace="com.ljsh.test.dao.PersonDao" >
<!-- 填寫資料庫裡例項Person對應的表的表名 -->
<!-- 這裡是作為一個變數使用 -->
<sql id="table">person</sql>
<!-- id屬性填寫Dao檔案裡的函式名稱 xxType是引數或是結果的型別根據情況填寫 -->
<!-- 查詢所有 -->
<select id="getAll" resultType="com.ljsh.test.model.Person">
SELECT
*
FROM
<include refid="table" />
</select>
<!-- 根據id查詢 -->
<select id="getPersonById" resultType="com.ljsh.test.model.Person">
SELECT
*
FROM
<include refid="table"/>
WHERE
id = #{id}
</select>
<!-- 增 -->
<insert id="newp" parameterType="com.ljsh.test.model.Person">
INSERT INTO
<include refid="table"/>
(name,phone)
VALUES
(#{name},#{phone})
</insert>
<!-- 改 -->
<update id="update" parameterType="com.ljsh.test.model.Person">
UPDATE
<include refid="table"/>
SET
<!--<if test="name != null">name = #{name}</if>-->
name = #{name},phone = #{phone},status = #{status}
WHERE
id = #{id}
</update>
<!-- 刪 -->
<delete id="delete" parameterType="com.ljsh.test.model.Person">
DELETE FROM
<include refid="table"/>
WHERE
id = #{id}
</delete>
</mapper>
PersonService
路徑:/service/PersonService.java
package com.ljsh.test.service;
import com.ljsh.test.dao.PersonDao;
import com.ljsh.test.model.Person;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class PersonService {
@Autowired
PersonDao personDao;
/*
Service層介於controller和dao之間作為服務層進行一些邏輯處理,
這裡邏輯太簡單所以知識單純呼叫dao所以不做註釋
*/
public List<Person> getAll(){
return personDao.getAll();
}
public Person getPersonByID(int id){
return personDao.getPersonByID(id);
}
public void delete(int id){
personDao.delete(id);
}
public void update(Person p){
personDao.update(p);
}
public void newp(Person p){
personDao.newp(p);
}
}
PersonController
路徑:/controller/PersonController.java
package com.ljsh.test.controller;
import com.ljsh.test.model.Person;
import com.ljsh.test.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import java.util.List;
@Controller
public class PersonController {
@Autowired
PersonService personService;
// 設定訪問路由值為路徑
@RequestMapping("/")
public ModelAndView index(){
// 顧名思義 實體和資料 同時返回頁面模板和資料
ModelAndView mav = new ModelAndView("index");
List<Person> list = personService.getAll();
mav.addObject("list",list);
return mav;
}
}
前端頁面
路徑:/templates/index.html
<!DOCTYPE html>
<html lang="en">
<!-- -->
<!-- 使用thymeleaf需引入 -->
<html xmlns:th="http://www.thymeleaf.org">
<head>
</head>
<body>
<div id="tableP">
<table>
<caption>人員資訊</caption>
<tr>
<th>Name</th>
<th>Phone</th>
</tr>
<!-- 通過th命令使用一些操作 -->
<!-- 通過${} 使用變數 -->
<tr th:each="item: ${list}">
<td th:text="${{item.name}}">還沒有任何人員資訊哦</td>
<td th:text="${{item.mobile}}">你是不是想獨吞獎品</td>
</tr>
</table>
</div>
</div>
</body>
</html>
右上角執行
要是沒有這個可以右側選擇TestApplication右鍵Run,結果圖如下
未完待續
熄燈睡覺了,寫的有點慢,刪改查還沒來及寫,如果需求留言,我會繼續更新。