创建一个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;
<span class="hljs-comment">// 右键 Generate -> Setter and Getter -> Shift全选 -> ok 生成如下代码</span>
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">int</span> <span class="hljs-title">getId</span><span class="hljs-params">()</span> </span>{
<span class="hljs-keyword">return</span> id;
}
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">setId</span><span class="hljs-params">(<span class="hljs-keyword">int</span> id)</span> </span>{
<span class="hljs-keyword">this</span>.id = id;
}
<span class="hljs-function"><span class="hljs-keyword">public</span> String <span class="hljs-title">getName</span><span class="hljs-params">()</span> </span>{
<span class="hljs-keyword">return</span> name;
}
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">setName</span><span class="hljs-params">(String name)</span> </span>{
<span class="hljs-keyword">this</span>.name = name;
}
<span class="hljs-function"><span class="hljs-keyword">public</span> String <span class="hljs-title">getMobile</span><span class="hljs-params">()</span> </span>{
<span class="hljs-keyword">return</span> mobile;
}
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">setMobile</span><span class="hljs-params">(String mobile)</span> </span>{
<span class="hljs-keyword">this</span>.mobile = mobile;
}
<span class="hljs-comment">// 右键 Generate -> toString() -> 全选 -> ok 生成如下代码</span>
<span class="hljs-meta">@Override</span>
<span class="hljs-function"><span class="hljs-keyword">public</span> String <span class="hljs-title">toString</span><span class="hljs-params">()</span> </span>{
<span class="hljs-keyword">return</span> <span class="hljs-string">"Person{"</span> +
<span class="hljs-string">"id="</span> + id +
<span class="hljs-string">", name='"</span> + name + <span class="hljs-string">'\''</span> +
<span class="hljs-string">", mobile='"</span> + mobile + <span class="hljs-string">'\''</span> +
<span class="hljs-string">'}'</span>;
}
}
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;
public interface PersonDao {
/*
查所有
return List<Person>
*/
List<Person> getAll();
<span class="hljs-comment">/*
根据ID查询
{id} 要查询人员的 id
*/</span>
<span class="hljs-function">Person <span class="hljs-title">getPersonByID</span><span class="hljs-params">(<span class="hljs-keyword">int</span> id)</span></span>;
<span class="hljs-comment">/*
删除
{id} 要删除人员的 id
*/</span>
<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">delete</span><span class="hljs-params">(<span class="hljs-keyword">int</span> id)</span></span>;
<span class="hljs-comment">/*
更新
{p} 要更新的Person实例
*/</span>
<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">update</span><span class="hljs-params">(Person p)</span></span>;
<span class="hljs-comment">/*
增加
{p} 要新增的Person实例
*/</span>
<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">newp</span><span class="hljs-params">(Person p)</span></span>;
}
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>
<span class="hljs-comment"><!-- id属性填写Dao文件里的函数名称 xxType是参数或是结果的类型根据情况填写 --></span>
<span class="hljs-comment"><!-- 查询所有 --></span>
<span class="hljs-tag"><<span class="hljs-name">select</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"getAll"</span> <span class="hljs-attr">resultType</span>=<span class="hljs-string">"com.ljsh.test.model.Person"</span>></span>
SELECT
*
FROM
<span class="hljs-tag"><<span class="hljs-name">include</span> <span class="hljs-attr">refid</span>=<span class="hljs-string">"table"</span> /></span>
<span class="hljs-tag"></<span class="hljs-name">select</span>></span>
<span class="hljs-comment"><!-- 根据id查询 --></span>
<span class="hljs-tag"><<span class="hljs-name">select</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"getPersonById"</span> <span class="hljs-attr">resultType</span>=<span class="hljs-string">"com.ljsh.test.model.Person"</span>></span>
SELECT
*
FROM
<span class="hljs-tag"><<span class="hljs-name">include</span> <span class="hljs-attr">refid</span>=<span class="hljs-string">"table"</span>/></span>
WHERE
id = #{id}
<span class="hljs-tag"></<span class="hljs-name">select</span>></span>
<span class="hljs-comment"><!-- 增 --></span>
<span class="hljs-tag"><<span class="hljs-name">insert</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"newp"</span> <span class="hljs-attr">parameterType</span>=<span class="hljs-string">"com.ljsh.test.model.Person"</span>></span>
INSERT INTO
<span class="hljs-tag"><<span class="hljs-name">include</span> <span class="hljs-attr">refid</span>=<span class="hljs-string">"table"</span>/></span>
(name,phone)
VALUES
(#{name},#{phone})
<span class="hljs-tag"></<span class="hljs-name">insert</span>></span>
<span class="hljs-comment"><!-- 改 --></span>
<span class="hljs-tag"><<span class="hljs-name">update</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"update"</span> <span class="hljs-attr">parameterType</span>=<span class="hljs-string">"com.ljsh.test.model.Person"</span>></span>
UPDATE
<span class="hljs-tag"><<span class="hljs-name">include</span> <span class="hljs-attr">refid</span>=<span class="hljs-string">"table"</span>/></span>
SET
<span class="hljs-comment"><!--<if test="name != null">name = #{name}</if>--></span>
name = #{name},phone = #{phone},status = #{status}
WHERE
id = #{id}
<span class="hljs-tag"></<span class="hljs-name">update</span>></span>
<span class="hljs-comment"><!-- 删 --></span>
<span class="hljs-tag"><<span class="hljs-name">delete</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"delete"</span> <span class="hljs-attr">parameterType</span>=<span class="hljs-string">"com.ljsh.test.model.Person"</span>></span>
DELETE FROM
<span class="hljs-tag"><<span class="hljs-name">include</span> <span class="hljs-attr">refid</span>=<span class="hljs-string">"table"</span>/></span>
WHERE
id = #{id}
<span class="hljs-tag"></<span class="hljs-name">delete</span>></span>
</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;
public class PersonService {
PersonDao personDao;
<span class="hljs-comment">/*
Service层介于controller和dao之间作为服务层进行一些逻辑处理,
这里逻辑太简单所以知识单纯调用dao所以不做注释
*/</span>
<span class="hljs-function"><span class="hljs-keyword">public</span> List<Person> <span class="hljs-title">getAll</span><span class="hljs-params">()</span></span>{
<span class="hljs-keyword">return</span> personDao.getAll();
}
<span class="hljs-function"><span class="hljs-keyword">public</span> Person <span class="hljs-title">getPersonByID</span><span class="hljs-params">(<span class="hljs-keyword">int</span> id)</span></span>{
<span class="hljs-keyword">return</span> personDao.getPersonByID(id);
}
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">delete</span><span class="hljs-params">(<span class="hljs-keyword">int</span> id)</span></span>{
personDao.delete(id);
}
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">update</span><span class="hljs-params">(Person p)</span></span>{
personDao.update(p);
}
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">newp</span><span class="hljs-params">(Person p)</span></span>{
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;
public class PersonController {
<span class="hljs-meta">@Autowired</span>
PersonService personService;
<span class="hljs-comment">// 设置访问路由值为路径</span>
<span class="hljs-meta">@RequestMapping</span>(<span class="hljs-string">"/"</span>)
<span class="hljs-function"><span class="hljs-keyword">public</span> ModelAndView <span class="hljs-title">index</span><span class="hljs-params">()</span></span>{
<span class="hljs-comment">// 顾名思义 实体和数据 同时返回页面模板和数据</span>
ModelAndView mav = <span class="hljs-keyword">new</span> ModelAndView(<span class="hljs-string">"index"</span>);
List<Person> list = personService.getAll();
mav.addObject(<span class="hljs-string">"list"</span>,list);
<span class="hljs-keyword">return</span> 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,结果图如下