SpringBoot+Mybatis增删改查实战

创建一个SpringBoot项目

https://start.spring.io/

点开这个网站,创建一个Springboot项目,如下图,这里用的是2.1.5,学技术嘛,就是要学新的。

选择依赖,点击左下角的Dependencies

  • Web 我们这次开发的是web应用所以选择web
  • Thymeleaf 一款模板引擎,能够比较方便的展现后台传来的数据
  • MySQL 我们这次使用Mysql数据库
  • JDBC Java 数据库连接 Java Database Connectivity,简称JDBC
  • MyBatis 请看第一段


最后点击左下角的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 -&gt; Setter and Getter -&gt; Shift全选 -&gt; 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 -&gt; toString() -&gt; 全选 -&gt; 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;

@Mapper
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">&lt;!-- id属性填写Dao文件里的函数名称 xxType是参数或是结果的类型根据情况填写 --&gt;</span>
<span class="hljs-comment">&lt;!-- 查询所有   --&gt;</span>
<span class="hljs-tag">&lt;<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>&gt;</span>
    SELECT
    *
    FROM
    <span class="hljs-tag">&lt;<span class="hljs-name">include</span> <span class="hljs-attr">refid</span>=<span class="hljs-string">"table"</span> /&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">select</span>&gt;</span>


<span class="hljs-comment">&lt;!-- 根据id查询 --&gt;</span>
<span class="hljs-tag">&lt;<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>&gt;</span>
    SELECT
    *
    FROM
    <span class="hljs-tag">&lt;<span class="hljs-name">include</span> <span class="hljs-attr">refid</span>=<span class="hljs-string">"table"</span>/&gt;</span>
    WHERE
    id = #{id}
<span class="hljs-tag">&lt;/<span class="hljs-name">select</span>&gt;</span>

<span class="hljs-comment">&lt;!-- 增 --&gt;</span>
<span class="hljs-tag">&lt;<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>&gt;</span>
    INSERT INTO
    <span class="hljs-tag">&lt;<span class="hljs-name">include</span> <span class="hljs-attr">refid</span>=<span class="hljs-string">"table"</span>/&gt;</span>
    (name,phone)
    VALUES
    (#{name},#{phone})
<span class="hljs-tag">&lt;/<span class="hljs-name">insert</span>&gt;</span>

<span class="hljs-comment">&lt;!-- 改 --&gt;</span>
<span class="hljs-tag">&lt;<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>&gt;</span>
    UPDATE
    <span class="hljs-tag">&lt;<span class="hljs-name">include</span> <span class="hljs-attr">refid</span>=<span class="hljs-string">"table"</span>/&gt;</span>
    SET
    <span class="hljs-comment">&lt;!--&lt;if test="name != null"&gt;name = #{name}&lt;/if&gt;--&gt;</span>
    name  = #{name},phone = #{phone},status = #{status}
    WHERE
    id = #{id}
<span class="hljs-tag">&lt;/<span class="hljs-name">update</span>&gt;</span>

<span class="hljs-comment">&lt;!-- 删 --&gt;</span>
<span class="hljs-tag">&lt;<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>&gt;</span>
    DELETE FROM
    <span class="hljs-tag">&lt;<span class="hljs-name">include</span> <span class="hljs-attr">refid</span>=<span class="hljs-string">"table"</span>/&gt;</span>
    WHERE
    id = #{id}
<span class="hljs-tag">&lt;/<span class="hljs-name">delete</span>&gt;</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;

@Service
public class PersonService {
@Autowired
PersonDao personDao;

<span class="hljs-comment">/*
    Service层介于controller和dao之间作为服务层进行一些逻辑处理,
    这里逻辑太简单所以知识单纯调用dao所以不做注释
 */</span>
<span class="hljs-function"><span class="hljs-keyword">public</span> List&lt;Person&gt; <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;

@Controller
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&lt;Person&gt; 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,结果图如下

发布了32 篇原创文章 · 获赞 13 · 访问量 1533

猜你喜欢

转载自blog.csdn.net/weixin_38068605/article/details/103411384