SpringBoot3整合MyBatis实例项目:课程信息模糊查询
一、下载并安装JDK17
SpringBoot3要求的最低版本是JDK17,故我们使用JDK17即可
JDK17下载地址:Java Archive Downloads - Java SE 17 (oracle.com)
我们选择下载exe文件
下载好之后直接双击运行,选择好安装地址后,点击安装即可,安装成功后如图所示。
接下来配置环境
点击高级系统设置
点击高级选项中的环境变量
选择新建
我们新建JAVA_HOME环境,如果之前装有JDK其他版本的直接编辑,填好安装JDK17的路径之后点击确定。
接下来将JDK17的bin目录添加到PATH环境变量,双击即可进入PATH
再PATH里面新建并输入 %JAVA_HOME%\bin ,并移到最上方,避免与其他Java环境产生冲突。最后点击确定即可。
最后我们验证一下是否安装并配置成功,Win
+R
,输入cmd
,点击确定。
在命令行界面输入java -version
,如果出现如图所示的版本信息则说明安装成功。
二、创建SpringBoot3项目
我使用的IDEA版本是 2021版本的,如果是其他版本的界面可能有点出入。
New
一个新项目,填写好包名以及选择好JDK版本,点击Next。
选择我们要用到的模块,选好后我们点击Finish。第一次下载可能会很久。
我们刚刚选择的模块都是些什么呢?我们选择的模块如下:
Lombok
:简而言之,Lombok能以简单的注解形式来简化java代码,提高开发人员的开发效率。
Spring Boot DevTools
:这个是SpringBoot的热部署
Spring Configuration Processor
:配置文件-自定义类绑定的配置提示,因为自定义的类和配置文件绑定一般没有提示。若要提示,则需添加。
Spring Web
:这个是开发SpringWeb要用到的
MySQL Driver
:连接MySQL数据库用到的
三、整合MyBatis
如果要整合MyBatis到SpringBoot,我们需要导入相应的依赖。
①导入依赖
我们再pom.xml文件中加入下面的依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
点击Maven,并点击刷新,下载刚刚添加的依赖。
②创建配置文件application.yml
yml文件和xml文件一样,都是配置文件,非常适合用来做以数据为中心的配置文件。
在resource根目录中创建
我们需要连接数据库的话,需要配置相应的数据库信息,
我们在application.yml
这个配置文件中配置的 数据库连接信息 和 Mybatis 的相应信息如下:
spring:
datasource:
username: root
password: root
url: jdbc:mysql://localhost:3306/ssm?serverTimezone=UTC
driver-class-name: com.mysql.cj.jdbc.Driver
# 配置mybatis规则
mybatis:
mapper-locations: classpath:mybatis/mapper/*.xml #sql映射文件位置
configuration:
map-underscore-to-camel-case: true
③创建Mapper.xml文件
在resource
根目录中创建mybatis
文件夹来存放Mapper.xml文件
创建mapper文件夹,在mapper文件夹下创建CourseMapper.xml
文件
CourseMapper.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">
<mapper namespace="com.example.boot.mapper.CourseMapper">
<select id="getClazzByMoHu" resultType="com.example.boot.pojo.Clazz">
select * from course where c_name like concat('%',#{cname},'%')
</select>
</mapper>
在boot包下创建mapper包存放Mapper的接口文件
和在boot包下创建pojo存放课程信息的实体类
代码如下所示:
CourseMapper
:
package com.example.boot.mapper;
import com.example.boot.pojo.Clazz;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface CourseMapper {
List<Clazz> getClazzByMoHu(@Param("cname")String uname);
}
Clazz
: 大家可以看到这个类我并没有写无参构造、全参构造、toString()、以及setter和getter方法,因为我使用了 @Data ,AllArgsConstructor等注解,使用这几个注解就相当于帮我们写了这些方法。这几个注解就是我们创建项目时添加的lombok
模块带来的,极大地简化了我们的代码。
package com.example.boot.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Clazz {
private Integer cId; //课程id
private String cName; //课程名
private String teacher; //课程教师
private Integer cHour; //学时
private Integer credit; //学分
}
四、创建Service服务层
在boot包下创建service包,用来存放CourseService
服务层接口和CourseServiceImpl
实现类。
代码如下:
CourseService
接口:
package com.example.boot.service;
import com.example.boot.pojo.Clazz;
import java.util.List;
public interface CourseService {
List<Clazz> getClazzByMoHu(String cname);
}
CourseServiceImpl
实现类:
package com.example.boot.service.impl;
import com.example.boot.mapper.CourseMapper;
import com.example.boot.pojo.Clazz;
import com.example.boot.service.CourseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class CourseServiceImpl implements CourseService {
@Autowired
private CourseMapper courseMapper;
public List<Clazz> getClazzByMoHu(String cname) {
return courseMapper.getClazzByMoHu(cname);
}
}
五、创建Controller控制层
在boot包下创建controller包,用来存放CourseController
控制层类
代码如下:
package com.example.boot.controller;
import com.example.boot.pojo.Clazz;
import com.example.boot.service.CourseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class CourseController {
@Autowired
private CourseService courseService;
@PostMapping("/search/coursename")
public List<Clazz> searchUsername(@RequestParam("coursename") String coursename, Model model) {
return courseService.getClazzByMoHu(coursename);
}
}
六、在数据库创建数据
先在MySQL数据库创建一个表:
建表代码如下:
create table course(
c_id int(11) not null auto_increment,
c_name varchar(10),
teacher varchar(10),
c_hour int(4),
credit int(4),
primary key(c_id)
)DEFAULT CHARSET=utf8;
insert into course(c_name,teacher,c_hour,credit)
values("JavaEE实验","肖帮主",16,1);
insert into course(c_name,teacher,c_hour,credit)
values("刑法与法律","张三",48,5);
insert into course(c_name,teacher,c_hour,credit)
values("Java基础","肖老师",32,3);
insert into course(c_name,teacher,c_hour,credit)
values("JavaEE","郭标",32,2.5);
七、启动项目
点击启动类,加入@MapperScan("com.example.boot.mapper")
,加入这个以后,它就会扫描加有@Mapper
注解的mapper接口文件。然后启动。
八、使用接口软件进程测试
我们打开Apifox
,
创建一个新项目
项目名随便填,然后点击保存。
点击进入该项目
选择新建接口
然后输入相关信息以及参数,输入完毕后保存,点击运行。
固定值Java是这样子弄的
点击发送进行测试。
最后得到数据库中的值,这样子就成功了。
感谢大家得阅读,如有错误之处,请指正!