文章目录

  • SpringBoot入门操作笔记[+mybatis&mysql]
    • 1. 创建工程
      • 1.1. 新建SpringBoot项目
      • 1.2. 配置Maven
      • 1.3. 编码配置
    • 2. 项目结构
    • 3. 配置环境
    • 4. Controller层编写
      • 4.1 简单的测试
      • 4.2. Json的读写
    • 5. Dao层&Mapper的编写
    • 6. Service层的编写
    • 7. 测试代码

SpringBoot入门操作笔记[+mybatis&mysql]

@Author: hanhan
hanhan的设备:Mac M1
hanhan的开发工具:IDEA

本文就做了短短一篇,内容仅针对于新创建项目的入门级操作,有SSM的基础会阅读更加轻松

1. 创建工程

1.1. 新建SpringBoot项目

先在IDEA中新建一个项目,配置可以如下图所示:

解释一下配置:

  • Group:公司域名
  • Artifact:项目名称
  • SDK:选择自己用的jdk
  • Packaging:me采用Jar工程方式

选择下一步之后会有个选择依赖的界面,这里本人在项目里面手配pom,不选直接完成。

看一看配置完之后的界面:

1.2. 配置Maven

打开Preferences,在Windows里面是打开Settings,可以添加Maven的设置:

按照图片里面的位置配置好,Maven的路径选择自己安装的就好了。

1.3. 编码配置

还是在Preferences里面配置,全部配置成utf8(一共三个):

2. 项目结构

SpringBoot有三个主要模块:

  • src/main/java:编写业务程序
  • src/main/resources:存放静态文件和配置文件
  • src/test/java:编写测试程序

这个列表里面有些创建之后没有的东西就自己加上去就好了。

其中在src的java文件夹下有个自动创建的Application类,在这个类的上面会有一个@SpringBootApplication的注释,这个类是SpringBoot的启动类。含义就是启动这个main函数就可以运行项目了,不用担心Tomcat的问题,因为SpringBoot里面集成了Tomcat。

3. 配置环境

打开SpringBoot的配置文件pom.xml,在里面添加依赖就可以配置Maven了。

SpringBoot主要就两个依赖要配置,可以看这:

<!-- 测试 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope>
</dependency>
<!-- SpringMVC -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>

然后因为我还要用到MySQL和MyBatis,下面放上我的全配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!--父级项目--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.5</version><relativePath/> <!-- lookup parent from repository --></parent><!-- 项目信息 --><groupId>hanhan</groupId> <!-- 项目唯一标识 --><artifactId>demo</artifactId> <!-- 项目名 --><version>0.0.1-SNAPSHOT</version> <!-- 版本 --><packaging>jar</packaging> <!-- 打包方式 --><name>SpringBootDemo</name> <!-- 项目的名称 --><description>Demo project for Spring Boot</description> <!-- 项目的描述 --><!-- 属性设置 --><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- 编译字符编码为utf-8 --><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <!-- 输出字符编码为UTF-8  --><java.version>1.8</java.version> <!-- JDK版本 --></properties><!-- 依赖关系 --><dependencies><!-- 测试 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- SpringMVC --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- MyBatis --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.2</version></dependency><!-- MySQL --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency></dependencies><!-- 编译 --><build><!-- 插件 --><plugins><!-- Maven插件 --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><configuration><skip>true</skip></configuration></plugin></plugins></build></project>

然后是配置文件:我将application.properties改成了application.yml,都是配置文件,不过yml的逻辑结构清晰好看一些,所以改用yml。

其中上面说到的yml配置文件,里面就可以配置一些参数,比如可以将SpringBoot运行的端口好写进去,我比较喜欢3000,所以这里我改成3000(然后再加上我的mysql和mybatis的配置):

server:port: 3000 # Tomcat端口号spring: # springboot配置datasource: # 定义数据源name: hanhanurl: jdbc:mysql://localhost:3306/demo?characterEncoding=utf8username: rootpassword: passwordmybatis:mapper-locations: classpath:mapper/*.xml # 通配mapper文件type-aliases-package: hanhan.demo.Entity # 给所有的对象类取别名,简化在xml中写全名如hanhan.demo.Entity.User=Userconfiguration:map-underscore-to-camel-case: true # 开启驼峰命名法与下划线的自动匹配机制

4. Controller层编写

4.1 简单的测试

创建一个UserController,写一个简单的测试代码:

package hanhan.demo.Controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class UserController {@RequestMapping("/start")public String StartSpringBoot() {return "Start SpringBoot Success!";}
}

然后看一下运行成果:

运行成功没问题。

4.2. Json的读写

我们经常会用Json格式的数据在前后端进行交换与传输。所以这里讲一下怎么向前端发送Json数据与接受前端的Json数据。

一样还是在Controller中写几个函数用来做测试:

package hanhan.demo.Controller;import hanhan.demo.Dao.Impl.UserDaoImpl;
import hanhan.demo.Dao.UserDao;
import hanhan.demo.Entity.User;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;
import java.util.List;
import java.util.Map;@RestController
public class UserController {@RequestMapping("/start")public String StartSpringBoot() {return "Start SpringBoot Success!";}@RequestMapping("/getjson1")public List<User> GetJson1() {UserDao dao = new UserDaoImpl();return dao.FindAll();}@RequestMapping("/getjson2")public Map<String, Object> GetJson2() {UserDao dao = new UserDaoImpl();Map<String, Object> mp = new HashMap<>();List<User> ls = dao.FindAll();mp.put("data", ls);mp.put("cnt", ls.size());return mp;}@RequestMapping("/userlist.do")public Map<String, Object> GetUserlist(@RequestBody Map<String, Object> mp) {return mp;}
}

这样我们就有了三个函数,getjson1用于返回列表类的json数据,getjson2用于返回map类的json数据,getjson接收前端数据并返回。测试结果当然是成功的,这里唯一要讲的是为什么不像MVC一样在每个函数上面加一个@ResponseBody,因为在类上面我们加上的注释是@RestController而不是Controller,学过SSM的同志应该都知道这是给Controller层注解用的,而@RestController的意思是@ResponseBody+@Controller。所以可以省略掉了。

这里附带一下前端发送数据的代码:

<!--userlist.html-->
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>userlist</title><script type="text/javascript" src="/js/jquery-3.5.1.min.js"></script><script type="text/javascript" src="/js/user/userlist.js"></script>
</head>
<body>
<h1>data:</h1>
<div id="userlist"></div>
</body>
</html>
// userlist.js
$.ajax({url: '/userlist.do',type: 'POST',dataType: "json",contentType: 'application/json; charset=UTF-8',data: JSON.stringify({"data": [{"username": "hanhan1","password": "pwd"},{"username": "hanhan2","password": "pwd"},{"username": "hanhan3","password": "pwd"},{"username": "hanhan4","password": "pwd"},{"username": "hanhan5","password": "pwd"},{"username": "hanhan6","password": "pwd"}],"cnt": 6}),success: function (jdata) {console.log(jdata);var html = '';jdata.data.map(function (item, index) {html += '<' + index + '>:' + item.username + ',' + item.password + '<br>'});$("#userlist").html(html);}
})

5. Dao层&Mapper的编写

创建Dao层的文件夹,编写UserMapper接口类,类内容如下(在这里我写了注解方式,要用的话直接把UserMapper.xml删掉就好了)。这里唯一要注意的地方是包含两个注解,一个@Mapper是用来表示这是Mapper层文件的,还有一个@Repository就是Dao层的自动装配注解,用于注入对象,本文将其注入到Service层中调用:

package hanhan.demo.Dao;import hanhan.demo.Entity.User;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;import java.util.List;@Mapper
@Repository
public interface UserMapper {//    @Insert("INSERT user(u_username, u_password) VALUES (#{uUsername}, #{uPassword})")int AddUser(User usr);//    @Delete("DELETE FROM user WHERE u_id=#{id}")int DeleteUserById(@Param("id") int id);//    @Update("UPDATE user SET u_password=#{pwd} WHERE u_username=#{uname}")int UpdatePwdByUname(@Param("uname") String username, @Param("pwd") String password);//    @Select("SELECT * FROM user")List<User> FindAll();//    @Select("SELECT * FROM user WHERE u_username like '%${uname}%'")List<User> FindByUname(@Param("uname") String username);
}

然后在resource中配置一个mapper文件夹,里面包含UserMapper.xml文件。这里的一个关键点是我的resultType是直接用了User的,因为我前面写了一个取别名的配置如下。还有一个值得一提的是:

mybatis:mapper-locations: classpath:mapper/*.xml # 通配mapper文件type-aliases-package: hanhan.demo.Entity # 给所有的对象类取别名,简化在xml中写全名如hanhan.demo.Entity.User=Userconfiguration:map-underscore-to-camel-case: true # 开启驼峰命名法与下划线的自动匹配机制

然后展示一下整个UserMapper.xml文件,parameterType很多情况是可以不写的,在输入为一个类的时候也可以不写,会自动识别的:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="hanhan.demo.Dao.UserMapper"><insert id="AddUser">INSERT user(u_username, u_password) VALUES (#{uUsername}, #{uPassword})</insert><delete id="DeleteUserById">DELETE FROM user WHERE u_id=#{id}</delete><update id="UpdatePwdByUname">UPDATE user SET u_password=#{pwd} WHERE u_username=#{uname}</update><select id="FindAll" resultType="User">SELECT * FROM user</select><select id="FindByUname" resultType="User">SELECT * FROM user WHERE u_username like '%${uname}%'</select>
</mapper>

整体构建框架是这样子的:

6. Service层的编写

Service层其实也很好编写,基本是直接调用,写一个接口函数,再写一个实现类就好了:

先看接口:

package hanhan.demo.Service;import hanhan.demo.Entity.User;import java.util.List;public interface UserService {int AddUser(User usr);int DeleteUserById(int id);int UpdatePwdByUname(String username, String password);List<User> FindAll();List<User> FindByUname(String username);
}

然后是实现类,唯一可以讲的就是注入了UserMapper和自动装配了UserService:

package hanhan.demo.Service.Impl;import hanhan.demo.Dao.UserMapper;
import hanhan.demo.Entity.User;
import hanhan.demo.Service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UserMapper mapper;@Overridepublic int AddUser(User usr) {return mapper.AddUser(usr);}@Overridepublic int DeleteUserById(int id) {return mapper.DeleteUserById(id);}@Overridepublic int UpdatePwdByUname(String username, String password) {return mapper.UpdatePwdByUname(username, password);}@Overridepublic List<User> FindAll() {return mapper.FindAll();}@Overridepublic List<User> FindByUname(String username) {return mapper.FindByUname(username);}
}

7. 测试代码

测试代码的时候有几个要注意的点:

  • 添加注释:SpringBoot进行测试需要运行项目,所以要加一个@SpringBootTest的注解,然后函数上面加@test是毋庸置疑的。

  • pom配置:单纯加入了测试还不够,有可能会报要“跳过”的错,可以在pom中添加一个可以让bug正常化的代码:添加一个配置

    <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><configuration><skip>true</skip></configuration>
    </plugin>
    

    然后就可以正常测试了。

这里我写了一段测试代码表示确实可以运行了:

SpringBoot入门操作笔记[+mybatismysql]相关推荐

  1. Cit 入门操作笔记

    Git操作入门 Git  是一个快速.可扩展的 分布式版本控制系统 ,它具有极为丰富的命令集,对内部系统提供了高级操作和完全访问.Git与你熟悉的大部分版本控制系统的差别是很大的.相似的还有Subve ...

  2. Elastic search入门到集群实战操作详解(原生API操作、springboot整合操作)-step1

    Elastic search入门到集群实战操作详解(原生API操作.springboot整合操作)-step2 https://blog.csdn.net/qq_45441466/article/de ...

  3. 《Web安全之机器学习入门》笔记:第十六章 16.7 识别异常操作

    本小节通过RNN识别异常操作. 1.数据集 def load_user_cmd_new(filename):cmd_list=[]dist=[]with open(filename) as f:i=0 ...

  4. MongoDB入门学习(一)简介与基本操作、整合SpringBoot集合操作、整合SpringBoot文档操作

    文章目录 1. 简介 1.1 NoSQL和MongoDB 1.2 MongoDB特点 1.2.1 MongoDB 技术优势 1.2.2 Json 模型快速特性 1.3 MongoDB 应用场景 1.4 ...

  5. dubbo入门学习笔记之入门demo(基于普通maven项目)

    注:本笔记接dubbo入门学习笔记之环境准备继续记录; (四)开发服务提供者和消费者并让他们在启动时分别向注册中心注册和订阅服务 需求:订单服务中初始化订单功能需要调用用户服务的获取用户信息的接口(订 ...

  6. 8. SpringBoot基础学习笔记

    SpringBoot基础学习笔记 课程前置知识说明 1 SpringBoot基础篇 1.1 快速上手SpringBoot SpringBoot入门程序制作 1.2 SpringBoot简介 1.2.1 ...

  7. 尚硅谷springboot学习课程笔记

    **一.**Spring Boot 入门 !!!此文并非原创,只是转载分享尚硅谷的springboot原学习笔记 1.Spring Boot 简介 简化Spring应用开发的一个框架: 整个Sprin ...

  8. SpringBoot 入门04

    SpringBoot笔记 一.SpringBoot入门 1.SpringBoot简介 简化spring应用的框架 整个Spring技术栈的大整合 j2ee开发的一站式解决方案 2.微服务 2014 马 ...

  9. SpringBoot入门(二)——起步依赖

    本文来自网易云社区 在前一篇我们通过简单几步操作就生成了一个可以直接运行的Web程序,这是因为SpringBoot代替我们做了许多工作,概括来讲可以分为起步依赖和自动配置.这一篇先来看看起步依赖. 项 ...

最新文章

  1. 网络推广恶意点击js_昆明百度推广电话方法(百度推广)按效果付费_有效商机咨询...
  2. Unix环境高级编程(二十一)数据库函数库
  3. Kali Linux 2020.1快速修改root用户密码
  4. 浅谈SpringMVC执行过程
  5. .NET: 使用.NET Core CLI开发应用程序
  6. 打印SAP ABAP web service call完整的payload
  7. mysql中更新的命令是,mysql命令总结(陆续更新中)
  8. 【每天get 一点新知识】Python print 打印结果(字符串类型)前面添加 说明
  9. j2ee与mysql乱码过滤_J2EE中文乱码处理
  10. SQL注入实验,PHP连接数据库,Mysql查看binlog,PreparedStatement,mysqli, PDO
  11. html5网页设计大作业-dw企业网页设计带图片轮播留言 hbuilder大学生网页设计作业成品模板|百岁山矿泉水网页设计
  12. 关于神经网络的输出神经元个数的思考
  13. 【知识点总结】模拟电子技术(模电)
  14. cpu之RegDst_Ins
  15. tao.opengl + C#
  16. 黑镜成真!3分钟看懂马斯克直播脑机接口,芯片植入猪脑,活猪演示
  17. 涵盖多场景区块链与政务结合 应用前景广阔
  18. 2021年小红书KOL营销白皮书
  19. ARCGIS与QGIS对比,WEBGIS所用到的软件
  20. ccc 邮箱_CCC的完整形式是什么?

热门文章

  1. 搭建Gitea和Drone环境
  2. Go语言中的次方表示
  3. batch_prob_classify
  4. Why Memory Barriers中文翻译(下)
  5. 浙江大学计算机科学与技术学院2014届本科生毕业典礼活动,北京邮电大学2014届本科生毕业典礼隆重举行...
  6. C++入门基础(万字总结)(建议收藏!!!)
  7. win2003 64 php,win2003 x64 apache php 开发环境配置日志
  8. 电商服务器性能测试,如何测试分析电商网站的性能瓶颈(一)
  9. 项目经理年终总结|一个高层项目管理者的年终反思
  10. deepin网速慢 自己摸索 已解决