1.pom.xml添加依赖
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.1</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-extension</artifactId> <version>3.3.1</version> <exclusions> <exclusion> <artifactId>jsqlparser</artifactId> <groupId>com.github.jsqlparser</groupId> </exclusion> </exclusions> </dependency>
2.application.yml配置,部分配置根据自己项目而定
# MyBatis配置 mybatis: # 搜索指定包别名。mapper.xml中用到一些自定义POJO,你可以用完全限定名来指定这些POJO的引用 typeAliasesPackage: com.klx.**.pojo.po # 配置mapper的扫描,找到所有的mapper.xml映射文件 mapperLocations: classpath*:mapper/**/*Mapper.xml # 加载全局的配置文件 configLocation: classpath:mybatis/mybatis-config.xml
3.mybatis-config.xml配置
<?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="cacheEnabled" value="true" /> <!-- 全局映射器启用缓存 --> <setting name="useGeneratedKeys" value="true" /> <!-- 允许 JDBC 支持自动生成主键 --> <setting name="defaultExecutorType" value="REUSE" /> <!-- 配置默认的执行器 --> <!-- 指定 MyBatis 所用日志的具体实现 MyBatis的默认输出顺序是SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING --> <setting name="logImpl" value="SLF4J" /> <!-- <setting name="logImpl" value="org.apache.ibatis.logging.stdout.StdOutImpl" />--> <setting name="jdbcTypeForNull" value="NULL"/> <setting name="callSettersOnNulls" value="true"/> <setting name="lazyLoadingEnabled" value="true"/> <!-- 启用延迟加载功能 --> <setting name="aggressiveLazyLoading" value="false"/> <!-- 按需要延迟加载 --> <setting name="defaultFetchSize" value="3000"/> <setting name="mapUnderscoreToCamelCase" value="true"/> <!--驼峰式命名--> <!-- <setting name="show_sql" value="true"/>--> <!-- <setting name="format_sql" value="true"/>--> </settings> <typeAliases> <typeAlias alias="Integer" type="java.lang.Integer" /> <typeAlias alias="Long" type="java.lang.Long" /> <typeAlias alias="Map" type="java.util.Map" /> <typeAlias alias="HashMap" type="java.util.HashMap" /> <typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap" /> <typeAlias alias="ArrayList" type="java.util.ArrayList" /> <typeAlias alias="LinkedList" type="java.util.LinkedList" /> </typeAliases> </configuration>
4.测试
(1)controller
package com.klx.demo.controller.lesson; import com.klx.demo.pojo.dto.lesson.AppLessonDto; import com.klx.demo.pojo.vo.lesson.AppLessonVo; import com.klx.demo.service.AppLessonService; import com.klx.demo.utils.AjaxResult; import com.klx.demo.utils.PageBean; import com.klx.demo.utils.RedisUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; import java.util.Objects; import java.util.concurrent.TimeUnit; /** * 课程表(AppLesson)表控制层 * * @author klx * @since 2021-05-08 10:33:09 */ @RestController @RequestMapping("/api/lesson/appLesson") @Slf4j @Api(description = "课程表(AppLesson)表控制层", value = "AppLessonController") public class AppLessonController { @Autowired RedisUtil redisUtil; @Autowired private AppLessonService appLessonService; /** * 列表 */ @GetMapping("/list") @ApiOperation("列表") @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", paramType = "header", dataType = "String", value = "token令牌", required = true) }) public AjaxResult list(AppLessonDto appLessonDto) { Object keyObject = redisUtil.getCacheObject("key"); if (Objects.isNull(keyObject)) { redisUtil.setCacheObject("key", "nba", 2, TimeUnit.MINUTES); } else { log.warn(keyObject.toString()); } // 开始查询 PageBean<List<AppLessonVo>> listPageBean = appLessonService.selectAppLessonList(appLessonDto); return AjaxResult.success(listPageBean); } }
(2)service
package com.klx.demo.service; import com.baomidou.mybatisplus.extension.service.IService; import com.klx.demo.pojo.dto.lesson.AppLessonDto; import com.klx.demo.pojo.po.lesson.AppLessonPo; import com.klx.demo.pojo.vo.lesson.AppLessonVo; import com.klx.demo.utils.PageBean; import java.util.List; /** * 课程表(AppLesson)表服务接口 * * @author klx * @since 2021-05-08 10:33:08 */ public interface AppLessonService extends IService<AppLessonPo> { PageBean<List<AppLessonVo>> selectAppLessonList(AppLessonDto appLessonDto); }
(3)serviceImpl
package com.klx.demo.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.klx.demo.mapper.lesson.AppLessonMapper; import com.klx.demo.pojo.dto.lesson.AppLessonDto; import com.klx.demo.pojo.po.lesson.AppLessonPo; import com.klx.demo.pojo.vo.lesson.AppLessonVo; import com.klx.demo.service.AppLessonService; import com.klx.demo.utils.PageBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; /** * 课程表(AppLesson)表服务实现类 * * @author klx * @since 2021-05-08 10:33:09 */ @Service("appLessonService") public class AppLessonServiceImpl extends ServiceImpl<AppLessonMapper, AppLessonPo> implements AppLessonService { @Autowired private AppLessonMapper appLessonMapper; @Override public PageBean<List<AppLessonVo>> selectAppLessonList(AppLessonDto appLessonDto) { List<AppLessonVo> appLessonVos = appLessonMapper.selectAppLessonList(appLessonDto); PageBean<List<AppLessonVo>> listPageBean = new PageBean<>(appLessonVos); listPageBean.setTotal(appLessonVos.size()); return listPageBean; } }
(4)Mapper.java
package com.klx.demo.mapper.lesson; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.klx.demo.pojo.dto.lesson.AppLessonDto; import com.klx.demo.pojo.po.lesson.AppLessonPo; import com.klx.demo.pojo.vo.lesson.AppLessonVo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; import java.util.List; /** * 课程表(AppLesson)表数据库访问层 * * @author klx * @since 2021-05-08 10:33:08 */ @Mapper @Repository public interface AppLessonMapper extends BaseMapper<AppLessonPo> { List<AppLessonVo> selectAppLessonList(@Param("appLessonDto") AppLessonDto appLessonDto); }
(5)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"> <mapper namespace="com.klx.demo.mapper.lesson.AppLessonMapper"> <resultMap type="com.klx.demo.pojo.po.lesson.AppLessonPo" id="AppLessonMap"> <id property="lessonId" column="lesson_id" jdbcType="INTEGER"/> <result property="lessonTitle" column="lesson_title" jdbcType="VARCHAR"/> <result property="lessonSummary" column="lesson_summary" jdbcType="VARCHAR"/> <result property="imgUrl" column="img_url" jdbcType="VARCHAR"/> <result property="dictType" column="dict_type" jdbcType="VARCHAR"/> <result property="dictCode" column="dict_code" jdbcType="INTEGER"/> <result property="lessonScore" column="lesson_score" jdbcType="NUMERIC"/> <result property="viewTotal" column="view_total" jdbcType="INTEGER"/> <result property="favoriteTotal" column="favorite_total" jdbcType="INTEGER"/> <result property="orderNum" column="order_num" jdbcType="INTEGER"/> <result property="stateNum" column="state_num" jdbcType="INTEGER"/> <result property="createBy" column="create_by" jdbcType="VARCHAR"/> <result property="createTime" column="create_time" jdbcType="OTHER"/> <result property="updateBy" column="update_by" jdbcType="VARCHAR"/> <result property="updateTime" column="update_time" jdbcType="OTHER"/> <result property="deleteBy" column="delete_by" jdbcType="VARCHAR"/> <result property="deleteTime" column="delete_time" jdbcType="OTHER"/> <result property="password" column="password" jdbcType="VARCHAR"/> <result property="unlockUserIds" column="unlock_user_ids" jdbcType="OTHER"/> </resultMap> <select id="selectAppLessonList" resultType="com.klx.demo.pojo.vo.lesson.AppLessonVo"> select * from app_lesson where state_num=1 </select> </mapper>