创建第一个springboot并使用mybatis对mysql进行数据操作
1. 创建第一个spring boot项目
注:本人菜鸟一枚,接触springboot不到一周,搜集过许多资料,发现有些并不完善,在此记录自己的理解,并进行个人总结,以及帮助广大想入坑springboot的网友,如有不对,多多包涵,欢迎讨论。
1.1 创建项目
点击next
根据情况进行设置后点击下一步
点击下一步
1.2 配置阿里云镜像
新建文件settings.xml
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
</settings>
在此处选中刚刚新建的settings文件,点击应用即可
1.3 通过Maven下载依赖配置文件
在此点击install,下载相应依赖配置文件
1.4 创建Controller
在项目中新建Controller文件夹,在其目录下创建一个名为TestController的控制器![在这里插入图片描述](https://img-blog.csdnimg.cn/20200411230440684.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDMzMjk1Nw==,size_16,color_FFFFFF,t_70
注意Controller文件夹与Application平级
1.5 创建第一个API
在TestContoller中输入如下代码
package com.example.demo.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@CrossOrigin //跨域
public class TestController {
//hello spring测试
@GetMapping(value = "hello")
public String hello(){
return "Hello SpringBoot!";
}
}
1.6 API实现
访问localhost:8080/hello即可 (springboot默认端口为8080),也可以在resources文件夹里的application修改端口 (后面会讲到)
2. 使用Mybatis包对数据库进行操作
2.1 在Pom.xml里添加相应依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
2.2 配置数据库连接文件
在application.yml里输入
spring:
datasource:
url: jdbc:mysql://你的数据库的ip地址:3306/你的数据库名称?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
username: 数据库账号
password: 数据库密码
initialSize: 5
minIdle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
useGlobalDataSourceStat: true
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
mybatis:
config-location: classpath:Mybatis/mybatis-config
mapper-locations: classpath:Mybatis/mapper/mapper
//实体类
type-aliases-package: com.example.demo.MyClass.User
2.3 在resources文件夹下建立如下文件
在mapper.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">
//这里namespace是指你所建立的dao层接口
<mapper namespace="com.example.demo.dao.IMapper">
//这里是数据库的查询语句,resulttype是返回类型,这里直接返回User类,id是对应dao曾的接口里相应方法
<!--查询所有用户信息-->
<select id="findAll" resultType="com.example.demo.MyClass.User">
select *
from users
</select>
</mapper>
这里注意一下注解,个人理解是将这里的mapper文件通过反射,映射至dao层接口。
在mybatis-config里输入
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="useGeneratedKeys" value="true"/>
<setting name="useColumnLabel" value="true"/>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
</configuration>
这里根据自己需求进行配置就行,网上一搜一大把(狗头)
2.4 分别在启动项同级目录下建立dao层,service层,Controller层
这里引用别人总结的一句话,觉得解释的很透彻,
出自https://blog.csdn.net/LL142857/article/details/89242816
- Dao层:全称Data Access Object。Dao层比较底层,负责与数据库打交道具体到对某个表、某个实体的增删改查
- Service层:又叫服务层或业务层,封装Dao层的操作,使一个方法对外表现为实现一种功能,例如:网购生成订单时,不仅要插入订单信息记录,还要查询商品库存是否充足,购买是否超过限制等等。
- Controller层:业务控制层,负责接收数据和请求,并且调用Service层实现这个业务逻辑。
Controller层像是一个服务员,他把客人(前端)点的菜(数据、请求的类型等)进行汇总什么口味、咸淡、量的多少,交给厨师长(Service层),厨师长则告诉沾板厨师(Dao 1)、汤料房(Dao 2)、配菜厨师(Dao 3)等(统称Dao层)我需要什么样的半成品,副厨们(Dao层)就负责完成厨师长(Service)交代的任务。
Controller上面已经建好,同样的方法建立dao层和service层
同时在IMapper里输入
package com.example.demo.dao;
import com.example.demo.MyClass.User;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
//这里是上面mapper.xml的对应方法
public interface IMapper {
//查询所有user
List<User> findAll();
}
在service里输入
@Autowired
private IMapper mapper;
@Override
public List<User> findAll() {
return mapper.findAll();
}
2.5 API实现
在Controller类里面增加功能实现代码:
//获取所有users
@Autowired
Service sv;
@GetMapping(value = "list")
public List<User> getList(){
return sv.findAll();
}
进行测试
3. 总结
大概流程用个人的话表示就是先建立与数据库的连接,然后用dao层的IMapper对mapper文件里的数据库语句通过反射,在service层里进行调用,最后在controller层提供api进行前端调用获取数据。
在此只对数据进行了查找,对于增删改,和查是类似的,如果是刚入门的同学,可以进行思考。
后续会对前端登录通过token对api的调用进行个人记录。