1.使用maven构建springBoot项目
这里使用的IDEA版本为2021.1
点击next
点击完成! 创建好的项目目录结构是这样的
2.在pom.xml中添加mybatis和连接mysql数据库的相关依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
3.配置在resources目录下提供好的application.properties配置文件
#端口号,可以直接在这里进行修改
server.port=8081
#配置连接数据库的相关参数
spring.datasource.url=jdbc:mysql://localhost:3306/news?characterEncoding=UTF-8&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=1234
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#配置mybatis的映射文件的位置
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
#mybatis要扫描的实体类包路径,在mybatis的映射文件中可以直接使用类名
mybatis.type-aliases-package=com.ck.pojo
#开启驼峰命名
mybatis.configuration.mapUnderscoreToCamelCase=true
#第一个设置就是使用24小时的时间格式;第二个设置就是设置时区为东八区
spring.jackson.default-property-inclusion=NON_NULL
spring.jackson.time-zone=GMT+8
#设置日期格式
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
#Redis配置
#数据库索引 0-15
spring.redis.database=15
spring.redis.host=127.0.0.1
spring.redis.port=6379
# 连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle=8
# 连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle=0
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.jedis.pool.max-active=8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.jedis.pool.max-wait=-1
也可以创建yaml/yml配置文件格式:application.yml,文件名也必须为application
#端口号,可以直接在这里进行修改
server:
port: 8081
spring:
#配置连接数据库的相关参数
datasource:
url: jdbc:mysql://localhost:3306/est?characterEncoding=UTF-8&serverTimezone=GMT%2B8
username: root
password: 1234
driver-class-name: com.mysql.cj.jdbc.Driver
#第一个设置就是使用24小时的时间格式;第二个设置就是设置时区为东八区;第三个设置日期格式
jackson:
default-property-inclusion: NON_NULL
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
#redis配置
redis:
database: 1
host: 127.0.0.1
port: 6379
jedis:
pool:
max-active: 8
max-wait: -1
min-idle: 0
max-idle: 8
#配置mybatis的映射文件的位置
mybatis:
mapper-locations: classpath:mapper/*Mapper.xml
#mybatis要扫描的实体类包路径,在mybatis的映射文件中可以直接使用类名
type-aliases-package: cn.ck.pojo
#开启驼峰命名
configuration:
mapUnderscoreToCamelCase: true
如何配置数据库带有下划线字段对应Java实体类属性(驼峰命名)
4.创建日志框架logback配置文件logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--输出日志到控制台-->
<appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
<layout>
<pattern>
<!--
%p:输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r:输出自应用启动到输出该日志讯息所耗费的毫秒数
%t:输出产生该日志事件的线程名
%f:输出日志讯息所属的类别的类别名
%c:输出日志讯息所属的类的全名
%d:输出日志时间点的日期或时间,指定格式的方式: %d{yyyy-MM-dd HH:mm:ss}
%l:输出日志事件的发生位置,即输出日志讯息的语句在他所在类别的第几行。
%msg:输出日志消息,
%n:输出一个换行符号
-->
[%p]%d - %msg%n
</pattern>
</layout>
</appender>
<!--输出日志到文件-->
<!--<appender name="fileLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>debug</level>
<onMatch>DENY</onMatch>
</filter>
<encoder>
<pattern>
[%p]%d - %msg%n
</pattern>
</encoder>
<!–指定文件的输出位置–>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>
C:/logs2020/%d.log
</fileNamePattern>
</rollingPolicy>
</appender>-->
<root level="info">
<appender-ref ref="consoleLog"></appender-ref>
<!--<appender-ref ref="fileLog"></appender-ref>-->
</root>
</configuration>
5.创建好各层的包
6.创建实体类,编写mapper接口
注意: 这里的mapper接口需要添加@Mapper注解
package com.ck.mapper;
import com.ck.pojo.NewsDetail;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper //告诉springBoot这里是mapper接口
public interface NewsDetailMapper {
/**
* 查询新闻所有新闻信息分页显示
*/
List<NewsDetail> findAllDetail(@Param("pageNo") int pageNo, @Param("pageSize") int pageSize);
}
7.编写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.ck.mapper.NewsDetailMapper">
<!--查询所有的新闻列表并分页显示-->
<select id="findAllDetail" resultType="com.ck.pojo.NewsDetail">
select *
from news_detail
ORDER BY `createdate` DESC
limit #{pageNo},#{pageSize}
</select>
</mapper>
8.编写service层
service接口
package com.ck.service;
import com.ck.pojo.NewsDetail;
import java.util.List;
public interface NewsDetailService {
List<NewsDetail> findAllDetail(int pageNo, int pageSize);
}
service接口实现类
package com.ck.service.impl;
import com.ck.mapper.NewsDetailMapper;
import com.ck.pojo.NewsDetail;
import com.ck.service.NewsDetailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service //service层注解
public class NewsDetailServiceImpl implements NewsDetailService {
@Autowired //注入mapper层
private NewsDetailMapper ndm;
@Override
public List<NewsDetail> findAllDetail(int pageNo, int pageSize) {
return ndm.findAllDetail(pageNo,pageSize);
}
}
9.编写controller层
原来@Controlle注解替换成@RestController相当于@Controller+@ResponseBody的集合
package com.ck.controller;
import com.ck.pojo.NewsDetail;
import com.ck.service.NewsDetailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController //相当于@Controller+@ResponseBody的集合
public class NewsDetailController {
@Autowired
private NewsDetailService nds;
//查询所有新闻信息列表 分页显示
@RequestMapping("/findAllDetail")
public Map<String, Object> findAllDetail(int pageNo, int pageSize) {
Map<String, Object> map = new HashMap<>();
List<NewsDetail> detailList = nds.findAllDetail((pageNo - 1) * pageSize, pageSize);
map.put("list", detailList);
return map;
}
}
10.运行springBoot启动类SpringbootMybatisApplication
11.测试访问controller层方法的URL
显示能够返回json格式的数据,说明我们搭建的springBoot环境已经成功了