
MyBatis
文章平均质量分 50
Be_insighted
强者自救,圣者渡人!
展开
-
Mybatis-Plus中updateById方法不能更新空值问题
如果只需要实体中的几个字段支持空值更新,则通过@TableField注解指定字段的更新策略为FieldStrategy.IGNORED,忽略空值判断,直接更新即可。在实体字段上,如果不通过@TableField注解指定字段的更新策略,字段默认的更新策略是FieldStrategy.DEFAULT,即跟随全局策略。而Mybatis-Plus的全局配置中,字段的默认更新策略是FieldStrategy.NOT_NULL,即进行空值判断,不对NULL值数据进行处理。该方式的控制级别是字段级别的控制。原创 2024-10-17 10:02:36 · 662 阅读 · 0 评论 -
数据库连接池配置&生成、读取二维码&集成多数据源&入参字段定义为Date类型,支持时间戳及年-月-日
常见问题及处理原创 2024-01-09 15:38:46 · 565 阅读 · 0 评论 -
查看进程对应的路径&查看端口号对应的进程&ubuntu 安装ssh&共享WiFi设置&MyBatis 使用map类型作为参数,复杂查询(导出数据)
常见的问题及处理原创 2024-01-05 17:51:19 · 637 阅读 · 0 评论 -
Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration ...
Mybatis插入数据,日期类型字段未指明,插入数据报错原创 2023-01-01 17:04:33 · 3490 阅读 · 0 评论 -
MyBatis批量保存(Oracle)MyBatis批量插入、批量更新时,组装SQL过长会有问题,一定要根据批量插入数据量进行切割,再批次提交保存!!!
Mybatis向Oracle中批量插入数据,MyBatis批量插入、更新时,组装SQL过长会有问题,一定要根据批量插入数据量进行切割,再批次提交保存!!!原创 2022-12-14 21:28:52 · 2261 阅读 · 0 评论 -
IllegalArgumentException: Mapped Statements collection already contains value
MyBatis中,SQL所在的xml文件存在id命名相同的ref(方法名)Caused by: java.lang.IllegalArgumentException: Mapped Statements collection already contains value for ****.dao.*****Mapper.方法名. please check URL [jar:file:/var/jar包全路径.jar!/BOOT-INF/classes!/mappers/****Mapper.xml] a原创 2022-03-30 14:06:03 · 1171 阅读 · 0 评论 -
MyBatis-Plus主键策略(雪花算法16位长度的整型id,解决默认雪花算法生成19位长度id导致JS精度丢失问题)
MyBatis-Plus主键策略(雪花算法16位长度的整型id,解决默认雪花算法生成19位长度id导致JS精度丢失问题)主键策略如果内置支持不满足你的需求,可实现 IKeyGenerator 接口来进行扩展.举个栗子@KeySequence(value = "SEQ_ORACLE_STRING_KEY", clazz = String.class)public class YourEntity { @TableId(value = "ID_STR", type = IdType原创 2022-01-07 00:03:07 · 8080 阅读 · 1 评论 -
MyBatis-Plus分页工具
MyBatis-Plus分页工具public class PageUtil { public static <T> PageResultDTO<T> convert2PageResult(IPage<T> page) { PageResultDTO<T> result = new PageResultDTO<>(); result.setPageNum(page.getCurrent());原创 2021-12-28 21:58:09 · 1521 阅读 · 0 评论 -
MyBatis-Plus方法之updateById,操作不当updateTime会更新吗?
mybatis-plus按id更新潜在问题:更新时间字段updateTime未随着更新而更新!《====原因:从数据库筛选出来数据再更新的话,会导致其他未修改的字段值与数据库保持一致,如果有相关页面展示数据(按时间倒序),会使得对应的数据不会更新为最新修改时间!解决方案:1、确实更新了该主键对应的数据,需要额外设置下更新时间,需要设置updateTime为new Date()2、新定义一个对象拷贝除时间外的字段、或者仅更新需要更新的字段,利用数据库的自维护即可--==> .原创 2021-12-18 12:17:13 · 2949 阅读 · 1 评论 -
MyBatis编写模糊查询时使用concat函数时需注意单个字符为‘%‘和‘_‘的模糊搜索情况,MySQL函数instr()
MyBatis编写模糊查询时使用concat函数时需注意单个字符为'%'和'_'的模糊搜索情况,MySQL函数值instr()concat函数模糊查询时需要注意单个字符为'%'和'_'的情况,否则会全匹配,控制层参数需要进行相关拦截!模糊查询示例xml语句https://blog.csdn.net/Be_insighted/article/details/120272866?ops_request_misc=%257B%2522request%255Fid%2522%253A%252216.原创 2021-11-24 22:13:42 · 1477 阅读 · 0 评论 -
Mybatis示例and含or拼接及Mybatis-Plus包装类QueryWrapper实现-->and ( ... or ... or...) 或or ( ... and ... and ...)
需求需要进行对数据逻辑返回,创建者和审核者对数据有查看逻辑,其他人则查询不到相关数据。第一种and ( ... or ... or...)queryWrapper.and(wrapper -> wrapper.like("nick_name", "张三") .or().like("user_name", "张三");//查询昵称等于张三的或者登录姓名等于张三的全部数据第二种:or ( ... and ... and ...)wrapper.or(wrapper -> ..原创 2021-11-13 22:29:29 · 4682 阅读 · 1 评论 -
mybatis复杂mapper之foreach、if、choose、when动态sql
foreach五大标签:item 表示集合中每一个元素进行迭代时的别名,随便起的变量名; index 也就是索引,用于表示在迭代过程中,每次迭代到的位置; open 表示该语句以什么开始,常用“(”; separator 表示在每次进行迭代之间以什么符号作为分隔符,常用“,”; close 表示以什么结束,常用“)”; collection 该属性是必须指定的,但是在不同情况下,该属性的值是不一样的,默认使用list对于collec.........原创 2021-11-12 08:29:09 · 6291 阅读 · 0 评论 -
MyBatis复杂mapper,根据条件数组中的数据进一步判断、从子查询中进一步筛选数据
MyBatis复杂mapper,根据数组中的数据进一步判断、从子查询中进一步筛选数据需要从子查询中进一步获取数据,数组中的数据进一步判断<select id="queryByPage" resultMap="ThingModelVO"> select * from t_object_model <where> creator_number = #{queryDTO.loginName原创 2021-11-10 08:28:28 · 1336 阅读 · 0 评论 -
MyBatis的mapper中一个字段代表多列进行模糊匹配时,and和or都存在时需要将or的范围括起来作为and后面的参数,select其他表信息作为关联数据结果展示
MyBatis的mapper中一个字段代表多列进行模糊匹配时,and和or都存在时需要将or的范围括起来作为and后面的参数SQL应在连接MySQL的工具中进行摸底,各种条件匹配情况下测试,看数据是否能够对得上! <!-- 注意and后面的条件,需要()括起来 因为它们整体作为一个搜索条件 --> AND (INSTR(os.name,#{req.keyword}) OR INSTR(os.identifier,#{re...原创 2021-10-29 08:25:29 · 781 阅读 · 0 评论 -
MyBatis-Plus分页查询where后面的参数拼接错误报### The error occurred while setting parameters
MyBatis-Plus分页查询条件参数拼接错误!### The error may exist in file [D:\SourcrGit\IOT_sxx\dahua-iot-parent\dahua-iot\target\classes\mapper\business\specification\ProductsSpecMapper.xml]### The error may involve defaultParameterMap### The error occurred while se原创 2021-10-22 08:17:36 · 2729 阅读 · 0 评论 -
MyBatis 单条纪录插入或者批量插入数据返回主键Id,SSM项目打印SQL日志配置,级联批量插入数据
级联插入数据Mapper示例<insert id="channelBatchInsert" parameterType="ChannelEntity"> INSERT INTO t_channel ( id, name, frameTimeSyn, mainStreamId, subStreamOneId, subStreamTwoId, chan原创 2021-09-24 07:31:22 · 423 阅读 · 0 评论 -
SpringBoot工程使用MyBatis、处理金钱的工具joda-money
MyBatis一个半自动化的持久化层框架。•MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。•MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。•MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录.Mapper的定义与扫描@MapperScan配置扫描位置@Mapper定义接口映...原创 2021-09-17 23:00:24 · 891 阅读 · 0 评论 -
当MyBatis-plus逻辑删除遇到唯一键时,你不得不考虑的坑
表中如果设计了多个唯一键,进行逻辑删除时你一定得好好设计代码的逻辑。删除了该唯一键,再次创建时,如果不是与逻辑删除字段的列组合唯一键,创建便失败。再者如果是该列和逻辑删除字段组合后,再删除该列时,这时候又会报重复key!MyBatis-plus逻辑删除的坑只有使用MaBatis-Plus预实现的接口才能让逻辑键有效,自己定义还需要手动进行显示指出!...原创 2021-09-16 21:38:28 · 783 阅读 · 0 评论 -
MyBatis模糊查询之like和INSTR,二者都可以进行模糊查询,当使用INSTR时代码更简洁
模糊查询之like和INSTR,二者都可以进行模糊查询,使用INSTR代码更简洁<if test="queryDTO.keyword != null and queryDTO.keyword != ''"> AND (name LIKE concat('%',#{keyword},'%') OR identifier LIKE concat('%',#{keyword},'%'))</if><if test="queryDTO.keyword !原创 2021-09-13 18:40:13 · 1008 阅读 · 0 评论 -
使用MyBatis-Plus的主键策略,先使用AUTO后再转换成默认使用的策略ASSGN_ID(雪花算法)后,再换成AUTO时,变成19位数值上自动递增
public class IdWorker { private static Sequence WORKER = new Sequence(); public static final DateTimeFormatter MILLISECOND = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"); public IdWorker() { } public static long getId() { .原创 2021-09-04 19:30:40 · 524 阅读 · 0 评论 -
使用MyBatis-Plus雪花算法生成的id传给前端时不能用Long类型,传数据时需转换成String类型,否则精度丢失,后三位变成0,JS最大值9007199254740992
前端精度问题,能够表示最大整数为9007199254740992,这个值是,如果你的id是雪花算法生成的,长度为19位。此时超过16位长度,数值丢失!请在序列化时用String对象来存储,而前端传参的时候会自动转换成整型。...原创 2021-09-03 22:02:44 · 1764 阅读 · 0 评论 -
SpringBoot项目自定义拦截器打印SQL语句或者进行SQL日志收集
拦截器的基本使用,本文不涉及,请看此篇文章介绍。定义SQL语句拦截器/** * [ mybaits sql 拦截器 ] * * @author be_insighted */@Intercepts({@Signature(type = org.apache.ibatis.executor.Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, Resul原创 2021-09-01 22:42:15 · 1135 阅读 · 2 评论 -
MyBatis-Plus配置项
来看下MyBatis-Plus可以支持哪些配置项(可配置的属性)#################### mybatis-plus配置 ###################mybatis-plus: #外部化xml配置 #config-location: classpath:mybatis-config.xml #指定外部化 MyBatis Properties 配置,通过该配置可以抽离配置,实现不同环境的配置部署 #configuration-properties: clas原创 2021-09-01 08:15:39 · 1830 阅读 · 0 评论 -
MyBatis-plusSQL语句包装器QueryWrapper,包装器查询倒序返回第一个
简单SQL不想写SQL语句或者复杂SQL不想在Mapper里写时可以Mybatis-plus的包装类,实现自己的业务。可读性差,建议使用xml统一管理,方便别处使用。 方法名 说明 使用 allEq(Map<R, V> params) 全部=(或个别isNull) allEq(params,true) eq = ...原创 2021-08-29 16:38:58 · 3749 阅读 · 0 评论 -
项目中MyBatis配置、MyBatisPlus的配置以及Mapper的扫描
项目中MyBatis配置@Slf4j@ConditionalOnResource(resources = {"classpath:mapper"})@ConditionalOnClass({SqlSessionFactory.class})public class MyBatisAutoConfiguration { @Autowired private Interceptor[] interceptors; @Bean(name = "sqlSessionFact.原创 2021-08-05 23:24:11 · 3069 阅读 · 0 评论 -
MyBatis缓存之一级缓存(SqlSession级别)二级缓存(Mapper级别)原理
MyBatis的缓存分为一级缓存和二级缓存(全局缓存),缓存示意图如下图所示。默认情况下,一级缓存是开启的,且不能被关闭。MyBatis的一级缓存(SqlSession级别)在同一个SqlSession中执行相同的SQL语句时,将查询结果集缓存,第二次查询时直接取缓存,不在操作数据库。注意:一级缓存最多缓存1024条SQL语句。原理: 当客户端第一次发出SQL查询语句时,MyBatis执行SQL的查询并将查询结果写入SqlSession的一级缓存中,当第二次相同的SQL...原创 2021-08-14 13:33:25 · 3336 阅读 · 0 评论 -
MyBatis-Plus常用注解
MyBatis-Plus特性MyBati-Plus官方无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错 支持主键自动生成:支持多达 4 种主原创 2021-08-22 13:08:39 · 1704 阅读 · 0 评论 -
SSM项目配置bean、整合MyBatis的xml文件(itheima),别诧异,架构怎么越来越倒退了...
applicationContext.xml别诧异,维护旧项目,新增需求需要了解SSM项目...<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://ww.原创 2021-08-18 08:28:58 · 330 阅读 · 0 评论 -
MyBatis不用mapper.xml实现CRUD、查询数据库中已有的记录作为参数插入或者更新数据库纪录示例@Select、@ResultType 注解版增删改查示例
MyBatis注解@Insert插入一条数据和批量插入,查询数据库中已有的记录作为参数数据库插入一条记录并返回主键查询数据库中已有的记录作为参数数据库,对应MyBatis SQL INSERT INTO t_product_inner_identifier ( product_id, identifier, ref ) SELECT 1, '22', ref + 1 FROM t_product_inner_identi.原创 2021-08-23 21:41:59 · 1235 阅读 · 0 评论