mybatis plus 入门
mybatis plus 是中国程序员对 mybatis 的做的改变,往 hibernate 的方向靠拢了一下,宗旨是只做增强,不做改变,确实蛮好用的,下面介绍使用方法
1、导入依赖
<!--mybatis plus的依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatisplus.version}</version><exclusions><exclusion><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId></exclusion></exclusions></dependency>
2、application.yml 配置,大家按照自己的环境配置,不配置也可以,有默认配置的
# 容器服务 server:port: 8002servlet:context-path: /xiongdi-api# spring 配置 spring:profiles:active: dev # 使用 application-dev.yml配置servlet:multipart: # 文件上传和下载enabled: truemax-file-size: 100MBmax-request-size: 100MB# 自定义配置 xiongdi:redis:open: false # 是否开启缓存 true 开启 false 关闭# mybatis plus的配置 mybatis-plus:# mybatis 的原生配置configuration:cache-enabled: false # 是否开启缓存map-underscore-to-camel-case: true # 是否开启自动驼峰命名规则(camel case)映射call-setters-on-nulls: true # MyBatis 在使用 resultMap 来映射查询结果中的列,如果查询结果中包含空值的列jdbc-type-for-null: 'null' # 如果type为空# MyBatis-Plus 全局策略配置global-config:# MyBatis-Plus 全局策略中的 DB 策略配置db-config:id-type: auto # 全局默认主键类型,AUTO:"数据库ID自增", INPUT:"用户输入ID", ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";field-strategy: not_null # 字段策略 IGNORED:"忽略判断",NOT_NULL:"非 NULL 判断"),NOT_EMPTY:"非空判断"logic-delete-value: -1 # 逻辑已删除值,(逻辑删除下有)logic-not-delete-value: 0 # 逻辑未删除值,(逻辑删除下有效)banner: false # 是否显示mybatis-plus的图标
3、定义 Mapper 接口 继承 BaseMapper,继承该接口后无需编写 mapper.xml 文件,即可获得CRUD功能,泛型 T 代表实体,也就是我们从数据库查出来的数据用哪个类封装
package io.xiongdi.dao;import com.baomidou.mybatisplus.core.mapper.BaseMapper; import io.xiongdi.entity.TokenEntity; import org.apache.ibatis.annotations.Mapper;/*** TokenEntity 的操作DAO层【继承Base Mapper就具有了对TokenEntity的基本操作方法】* @author wujiaxing* @date 2019-06-30*/ @Mapper public interface TokenDao extends BaseMapper<TokenEntity> { }
4、如果有需要自行编写的方法,也可以继续定义 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="io.xiongdi.dao.TokenDao"></mapper>
5、编写 Service 接口,继承 IService,这个接口定义了很多默认抽象方法,如果方法没有自己想要的,可以自定义,泛型 T 也是实体
package io.xiongdi.service;import com.baomidou.mybatisplus.extension.service.IService; import io.xiongdi.entity.TokenEntity;/*** token* @author wujiaxing* @date 2019-06-30*/ public interface TokenService extends IService<TokenEntity> {/*** <p>* 根据请求token查询token信息* </p>* @param token* @return*/TokenEntity queryByToken(String token);/*** 创建token* @param userId 用户ID* @return 返回token信息*/TokenEntity createToken(long userId);/*** 设置token过期* @param userId 用户ID*/void expireToken(long userId); }
6、编写 service 的实现类,除了实现我们定义的接口,还要继承 ServiceImpl 类,该类泛型 M 表示你要告诉 mybatis plus 你的 Mapper 接口是哪个,一定要继承 BaseMapper 接口,泛型 T 是实体
package io.xiongdi.service.impl;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import io.xiongdi.dao.TokenDao; import io.xiongdi.entity.TokenEntity; import io.xiongdi.service.TokenService; import org.springframework.stereotype.Service;import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZoneOffset; import java.util.Date; import java.util.UUID;/*** @author wujiaxing* @date 2019-07-08*/ @Service("tokenService") public class TokenServiceImpl extends ServiceImpl<TokenDao, TokenEntity> implements TokenService {/*** 12 小时过期 单位:毫秒*/private final static int EXPIRE = 3600 * 12 * 1000;/*** 根据请求头的token查询数据库对应的token信息* @param token* @return*/@Overridepublic TokenEntity queryByToken(String token) {return this.getOne(new QueryWrapper<TokenEntity>().eq("token", token));}@Overridepublic TokenEntity createToken(long userId) {// 得到当前时间LocalDateTime now = LocalDateTime.now();// 根据过期时间加上当前时间,得到token的有效期long indate = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli() + EXPIRE;LocalDateTime tokenExpireDateTime = LocalDateTime.ofInstant(new Date(indate).toInstant(), ZoneId.systemDefault());// 生成tokenString token = generateToken();// 创建实体对象TokenEntity tokenEntity = TokenEntity.builder().expireTime(tokenExpireDateTime).userId(userId).token(token).updateTime(now).build();// 放入数据库保存this.saveOrUpdate(tokenEntity);return tokenEntity;}/*** 生成token* @return*/private String generateToken() {return UUID.randomUUID().toString().replace("-", "");}@Overridepublic void expireToken(long userId) {// 获取当前时间LocalDateTime now = LocalDateTime.now();TokenEntity tokenEntity = TokenEntity.builder().userId(userId).expireTime(now).updateTime(now).build();this.saveOrUpdate(tokenEntity);} }
QueryWrapper 类定义了很多条件方法,例如:like、lt、gt、eq 等等
转载于:https://www.cnblogs.com/wujiaxing/p/11182478.html
mybatis plus 入门相关推荐
- c++框架有哪些_Java Mybatis框架入门教程_v20200726
MyBatis 的前身是 Apache 的开源项目 iBatis.MyBatis 几乎可以代替 JDBC,是一个支持普通 SQL 查询,存储过程和高级映射的基于 Java 的优秀持久层框架.MyBat ...
- MyBatis学习总结(1)——MyBatis快速入门
2019独角兽企业重金招聘Python工程师标准>>> 一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所 ...
- MyBatis基础入门《九》ResultMap自动匹配
MyBatis基础入门<九>ResultMap自动匹配 描述: Mybatis执行select查询后,使用ResultMap接收查询的数据结果. 实体类:TblClient.java 接口 ...
- mybatis的入门
mybatis的环境搭建 第一步:创建maven工程并导入坐标 第二步:创建实体类和dao的接口 第三步:创建Mybatis的主配置文件 ...
- Mybatis最入门---代码自动生成(generatorConfig.xml配置)
[一步是咫尺,一步即天涯] 经过前文的叙述,各位看官是不是已经被Mybatis的强大功能给折服了呢?本文我们将介绍一个能够极大提升我们开发效率的插件:即代码自动生成.这里的代码自动生成包括,与数据库一 ...
- mybatis select count(*) 一直返回0 mysql_Mybatis教程1:MyBatis快速入门
点击上方"Java技术前线",选择"置顶或者星标" 与你一起成长 一.Mybatis介绍 MyBatis是一个支持普通*SQL*查询,存储过程和高级映射的优秀持 ...
- MyBatis学习笔记(一)——MyBatis快速入门
转自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/4261895.html 一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优 ...
- Mybatis从入门到精通下篇
Mybatis从入门到精通下篇: 输入类型: 输出类型: ResultMap: 动态sql: if标签: where标签: sql片段: foreach标签: 关联查询: 以订单作为主体: 一对一查询 ...
- Java基础-SSM之mybatis快速入门篇
Java基础-SSM之mybatis快速入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 其实你可能会问什么是SSM,简单的说就是spring mvc + Spring + m ...
- Mybatis的入门到精通这一篇文章就够了
Mybatis的产生 idea 的配置 idea当中配置好maven工具 1Idea当中配置自动编译 Mybatis是什么? Mybatis的执行原理图 Mybatis的入门Demo 对象的详解 Re ...
最新文章
- 编写优质代码的 6 大关键方法
- 用神经网络构造一个基于分类的多体系统
- 数据挖掘十大算法--K-均值聚类算法
- matlab 小波变换_matlab小波工具箱实例(二):时频分析和连续小波变换
- Harmonious Graph CodeForces - 1253D(思维+并查集)
- POI导入导出Excel(HSSF格式,User Model方式)
- 让 API 端点的响应速度提高 50 倍!
- dojo的TabContainer竖排摆放tab标签
- spark to mysql date_[Spark][Python]Spark 访问 mysql , 生成 dataframe 的例子:
- C#Winform使用火狐firefox内核GeckoWebBrowser
- Fortran 中的common,include和module
- 再见SNDA,在离职之后
- CAD-CASS免费增强测绘工具CASS++
- Centos使用chrony做时间同步
- 京东秋招java面试_最新秋招,京东技术中台Java开发面经,有想去面试的可以来看下...
- 在 Windows10 系统下重新安装 Ubuntu22.04 系统
- 做新时代的忠诚爱国者写一篇议论文800字
- 国产鸿蒙2.0尝鲜试用
- STM32F103的AD采样非线性问题
- 数学柏拉图多面体---定积分(一)