一:SpringBoot项目的搭建
搭建正常的SpringBoot项目就好了,项目创建的具体流程可转下面的链接
二:引入Mybatis
1. 首先添加Mybatis的jar包(注意版本)
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.2</version>
</dependency>
2.在配置文件在配置mybaits相关配置(.yaml格式)
# datasource数据源配置
datasource:
url: jdbc:mysql://localhost:3306/community?characterEncoding=utf-8&useSSL=false&serverTimezone=Hongkong&allowPublicKeyRetrieval=true
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: zyc12345
# HikariDataSource数据库连接池配置
type: com.zaxxer.hikari.HikariDataSource
hikari:
maximum-pool-size: 15
minimum-idle: 5
idle-timeout: 30000
# mybatis配置
mybatis:
# mybaits映射文件的位置
mapper-locations: classpath:com/zyc/zcommunity/mapper/xml/*.xml
type-aliases-package: com.zyc.zcommunity.mapper
3.创建具体的实体类
@Data
public class DiscussPost {
private Integer id;
private String userId;
private String title;
private String content;
private Integer type;
private Integer status;
private Date createTime;
private Integer commentCount;
private Double score;
}
4,创建mapper层
4.1 mapper包中一般为对应实体的mapper接口(比如User实体 为 UserMapper)
4.2 mapper包还有一个子包为xml存放的是mapper接口的映射文件(idea一般默认存放在resource文件夹当中)
4. DiscussPostMapper.java
重点:加入@Mapper注解
package com.zyc.zcommunity.mapper;
import com.zyc.zcommunity.entity.DiscussPost;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author: ZhongYC
* @create: 2023-09-08 10:58
* @className: com.zyc.zcommunity.mapper.DiscussPostMapper
* @description:
*/
@Mapper
public interface DiscussPostMapper {
List<DiscussPost> findDiscussPosts(int userId, int offset, int limit);
}
DiscussPostMapper.xml
注意:namespace中填的值要和mapper接口类的地址一一对应
<?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.zyc.zcommunity.mapper.DiscussPostMapper">
<sql id="discussPostColumns">
id,user_id,title,content,type,status,create_time,comment_count,score
</sql>
<select id="findDiscussPosts" resultType="com.zyc.zcommunity.entity.DiscussPost">
select <include refid="discussPostColumns"></include>
from discuss_post
<if test="userId != 0">
user_id = #{userId}
</if>
limit #{offset}, #{limit}
</select>
</mapper>
重点:如果sql的映射文件存放的位置在 src/main/java 的路径下需要在pom文件加入如下配置,开放src/main/java的权限
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.yaml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.yaml</include>
</includes>
</resource>
</resources>
后续可以看target文件夹下有没有对应的.xml文件 (idea默认是不会引入外部的xml文件)
在启动类中加上@MapperScan注解扫描@mapper的类
Controller层写一个测试的方法
package com.zyc.zcommunity.controller;
import com.zyc.zcommunity.entity.DiscussPost;
import com.zyc.zcommunity.service.DiscussPostService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
/**
* @author: ZhongYC
* @create: 2023-09-08 10:04
* @className: com.zyc.zcommunity.controller.HomeController
* @description:
*/
@Controller
@RequiredArgsConstructor
public class HomeController {
private final DiscussPostService discussPostService;
@GetMapping(value = "/index.do")
@ResponseBody
public List<DiscussPost> getIndexPage(){
return discussPostService.findDiscussPosts(0,1,10);
}
}
启动项目:
正常获取数据!!