MyBaties(基础篇)
在奋斗的大道
程序发烧友
展开
-
MyBatis-Plus 3 实现批量新增和批量修改
是因为spring boot配置文件中,关于数据库的连接配置,并没有允许进行批量更新的操作。这种方式就是通过SQL拼接,单条单条的进行更新,如果行数多的情况下给不建议使用。在数据库连接配置中必须添加 &allowMultiQueries=true,通过case when语句进行批量更新,只要一条SQL语句.mapper xml: 批量插入xml。mapper 接口:批量方法插入。mapper 接口:批量方法插入。mapper xml: 分页查询。mapper 接口:分页查询。- 页面显示条数 size。原创 2023-06-21 15:00:02 · 5606 阅读 · 2 评论 -
MyBatisPlus 使用LambdaQueryWrapper 构建查询条件提示:Didn‘t start with ‘is‘, ‘get‘ or ‘set‘
今天在研发功能时,进行单表查询条件编写时,产品经理在需求文档中写一句:提供等于备案时间的查询功能。现在 BizUserQueryBO 封装请求参数对象中的nowTime 字段在数据库表中没有对应的字段,那应该如何解决,可以使用LambadQueryWrapper.apply ()方法。而是只解析实际的方法名.如果解析的是Lambbda表达式,那么方法名跟数据库的列名匹配不上就会报错;规则就能找到相应的字段名然后在根据规则转换成数据库表的列名.SFunction这个函数式接口。注解来明确表明实际的列名.原创 2023-06-21 14:11:28 · 1163 阅读 · 0 评论 -
Oracle + MyBatis 3 实现批量新增/修改
拓展:Oracle + MyBatis 3另一种批量插入方法。批量新增Mapper 定义。原创 2023-04-25 10:22:21 · 163 阅读 · 0 评论 -
MyBatis-Plus 之LambdaQueryWrapper 实现And/Or 查询
今天收到房管项目经理的一个需要,在项目检测指标添加一个参数,查询符合项目名称或开发企业的所属项目信息。原创 2023-03-09 14:20:26 · 7281 阅读 · 0 评论 -
MyBatis 查询返回数据类型Map,空字段数据不返回
今天测试一个简单查询接口,指定返回数据类型为Map, 其中查询语句中某些字段值是null的,导致字段无法返回。产生的结果时,前端向我返回约定的字段没有在响应的结构体中找到。解决办法:在springboot下,在mybatis的配置文件里面增加以下配置即可:# mybatis map is nullmybatis.configuration.call-setters-on-nulls=true...原创 2021-12-22 10:29:40 · 1716 阅读 · 0 评论 -
SpringBoot 集成FluentMybatis 实现简单增删改查功能
本文基于上一篇:SpringBoot 集成FluentMybatis 框架完整pom.xml 文件<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0原创 2021-11-03 17:26:27 · 732 阅读 · 0 评论 -
SpringBoot 集成FluentMybatis 框架
FluentMybatis特性FluentMybatis原理项目搭建pom.xml 添加fluent-mybatis依赖 <properties> <java.version>1.8</java.version> <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version> <fluent-mybatis.version>1.8.7&l..原创 2021-11-03 17:05:34 · 943 阅读 · 0 评论 -
MyBatis-Plus 设置Oracle 自增长序列(Sequence)
一、Oracle的主键Sequence设置简介在Oracle数据库中不支持主键自增策略,它是通过Sequence序列来进行完成的,因此需要在MyBatis-Plus中进行相关配置二、MyBatis-Plus 在实体中映射Oracle 的主键Sequence注意重点@KeySequence(value="ERMS_S_BIZ_ARCH_INFO",clazz=Long.class) //value为数据库中生成的序列名,class指主键属性类型@TableId(type=IdTyp.原创 2021-08-02 15:25:23 · 4696 阅读 · 0 评论 -
java.sql.SQLException: 无效的列索引
项目中使用MyBatis-Plus 框架映射oracle数据库中报java.sql.SQLException: 无效的列索引 问题报错截图如下:造成上述问题产生原因:原创 2021-08-02 15:16:19 · 382 阅读 · 0 评论 -
MyBatis-plus 提示 Data truncation: Out of range value for column ‘id‘ at row 1
记录一下MyBatis-plus 提示的错误信息:### Error updating database. Cause: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Out of range value for column 'id' at row 1### The error may exist in com/zzg/mapper/ScheduleJobMapper.java (best guess)##原创 2021-07-27 10:23:09 · 9516 阅读 · 3 评论 -
【Mybatis】No enum constant org.apache.ibatis.type.JdbcType.LONG
问题描述:今天编写定时任务管理模块,提交定时任务实体信息时,提示如下错误nested exception is org.apache.ibatis.builder.BuilderException: Error resolving JdbcType. Cause: java.lang.IllegalArgumentException: No enum constant org.apache.ibatis.type.JdbcType.LONG大致含义是:MyBatis 框架不支持Long 数据.原创 2021-07-27 09:59:19 · 1881 阅读 · 0 评论 -
MyBatis Generator 重复生成Mapper.xml 解决方法
项目配置JDK版本: java8MySQL: MySQL8 版本mybatis.generator:原创 2021-06-07 16:02:25 · 590 阅读 · 0 评论 -
MyBatis 特殊字符转义之TypeHandler 处理器
针对上一篇文章MyBatis 特殊字符转义拦截器 针对(_、\、%), 经过自己简单的功能测试,发现所有请求参数为HashMap 的Select查询都进行了特性字符的过滤处理,会导致部分字典查询数据接口因为特殊字符的转换导致数据无法正常查询,进而影响系统的稳定性。对于上述出现的问题,我这里提出的解决办法是:通过自定义TypeHandler类型处理器,来实现特俗字符的转义处理。实现核心功能代码:1、自定义TypeHandler/** 针对String数据类型的转义器*/@Mapped.原创 2021-04-27 17:35:08 · 546 阅读 · 0 评论 -
MyBatis 特殊字符转义拦截器 针对(_、\、%)
一、问题反馈今天公司测试向我反馈,系统用户模糊查询功能在用户名称包含特殊字符时(_、\、%)无法正常查询结果。二、问题验证1、当like中包含_时,查询仍为全部,即 like '%_%'查询出来的结果与like '%%'一致,并不能查询出实际字段中包含有_特殊字符的结果条目2、like中包括%时,与1中相同3、like中包含\时,带入查询时,%\%无法查询到包含字段中有\的条目三、问题解决思路1、采用MyBatis 拦截器机制,处理模糊查询中包含特殊字符(_、\、%)四、核心原创 2021-04-27 16:38:27 · 5136 阅读 · 3 评论 -
MyBatis 解决模糊查询包含特殊字符
第一块:MyBatis 实现模糊查询方式1.1sql中字符串拼接SELECT * FROM 表名 WHERE 字段名 LIKE CONCAT(CONCAT('%', #{参数}), '%');12. 使用 ${...} 代替 #{...} SELECT * FROM 表名 WHERE 字段名 LIKE '%${参数}%'; 注意:($不能防止sql注入, #{}---> 可以防止sql注入的问题)1.3 程序中拼接Java 代码String searchTe...原创 2021-04-27 11:04:14 · 3165 阅读 · 1 评论 -
MyBatis3 映射boolean 类型注意事项
1、MySQL8 数据库关于boolean 存储结构定义:使用tinyint(1) 代表Boolean 类型2、实体定义关于属性字段为boolean 类型定义:3、 实体属性与数据库字段映射文件配置*Mapper.xml 文件4、控制层,如何传递请求参数及其后台查询接口*Mapper定义:*.Controller:Mapper.xml...原创 2021-03-17 19:45:14 · 5645 阅读 · 0 评论 -
MyBatis 3 提示 Column ‘******‘ specified twice
造成错误的原因是*Mapper.xml 配置文件,insert 语句写入重复字段错误配置文件展示:<insert id="insertSelective" parameterType="com.***.domain.SysSetting"> insert into sys_setting <trim prefix="(" suffix=")" suffixOverrides=","> <if test="sid != null">原创 2021-03-17 19:39:38 · 2040 阅读 · 1 评论 -
MyBatis-plus 动态条件构造器总结
MyBatis-plus 动态条件构造器类结构图:MyBatis Plus条件构造器QueryWrapper对应常用SQL语法说明:函数 说明 SQL语法 eq 等于 = ne 不等于 <> gt 大于 > lt 小于 < ge 大于等于 >= le 小于等于 <= or 或者 or and 并且 and li...原创 2021-03-11 19:19:33 · 479 阅读 · 0 评论 -
SpringBoot + MyBatisPlus + MySQL8 实现树形结构查询
场景:今天在实现权限功能模块时,需要将查询的权限数据,以树形结构的方式返回给前端。功能实现:第一步:权限表结构定义及其功能演示数据。DROP TABLE IF EXISTS `baoan_privilege`;CREATE TABLE `baoan_privilege` ( `id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主键', `privilege_name` var原创 2021-02-10 11:42:14 · 2914 阅读 · 4 评论 -
Mybatis数据库的类型与java类型对应
Mybatis与数据库的类型对应1:Java数据类型与MySql数据类型对照表类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) VARCHAR L+N VARCHAR java.lang.String 12 CHAR N CHAR java.lang.String 1 BLOB L+N BLOB java.lang.byte[] -4 TEXT 65535转载 2021-01-12 09:38:30 · 1720 阅读 · 0 评论 -
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
问题描述:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)问题,即在mybatis中dao接口与mapper配置文件在做映射绑定的时候出现问题,简单说,就是接口与xml要么是找不到,要么是找到了却匹配不到。问题参考解决办法:检查xml 文件的namespace(命名空间)是否和Mapper interface所在包名匹配。 Mapper interface 定义的方法但是在..原创 2020-11-26 18:00:22 · 363 阅读 · 0 评论 -
Oracle MyBatis 提示:java.sql.SQLSyntaxErrorException: ORA-01795: 列表中的最大表达式数为 1000
产生原因:oracle 使用 in 关键字查询且集合数量大小大于1000解决办法:第一种、将集合拆分,使用or 连接。select * from A where id in (1, 2, …, 1000) or id in (1001, …, 1999)第二种、将集合修改为查询语句select * from A where id in (select id from B)第三种、与 第二种类似,使用 with as 语法,把条件封装成一个表with temp as (select * ..原创 2020-11-24 18:24:54 · 1624 阅读 · 0 评论 -
oracle mybatis 提示:java.sql.SQLSyntaxErrorException: ORA-00913: 值过多
错误信息:### Error updating database. Cause: java.sql.SQLSyntaxErrorException: ORA-00913: 值过多### The error may involve com.zzg.mapper.in.DSingleProjectMapper.batchInsert-Inline### The error occurred while setting parameters### SQL: insert into D_SINGLE原创 2020-11-24 18:13:05 · 3058 阅读 · 0 评论 -
MyBatis + Oracle 实现批量新增和批量修改
MyBatis + Oracle 实现批量新增(基于序列化自增长主键)mapper 接口 void batchInsert(List<ASingleProject> list); mapper.xml<insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="false"> insert into A_SINGLE_PROJECT (KID, SINGLEPROJECT原创 2020-11-09 18:58:15 · 995 阅读 · 0 评论 -
MyBatis 批量插入之Oracle 与MySQL比较
MyBatis + MySQL 实现批量新增和修改批量新增Mapper 接口定义 void batchInsert(List<UcasUnitProj> list);Mapper.xml 文件配置<insert id="batchInsert" parameterType="java.util.List"> insert into ucas_unit_proj (sid, individual_proj_sid, eng_proj_sid, unit_原创 2020-11-06 19:30:18 · 223 阅读 · 0 评论 -
MyBatis Mapper 常用功能配置
1、MyBatis Mapper文件中的if 标签判断特定字符串是否相等: <!-- 仅仅查询普通用户 --> <if test="isCommon != null and isCommon !=''"> <if test="isCommon == '1'.toString()"> AND AUTH_USER.USER_C...原创 2020-03-31 18:54:22 · 687 阅读 · 0 评论 -
MyBaties 提示org.apache.ibatis.builder.BuilderException: The expression ‘’**' evaluated to a null val
MyBaties 提示的错误信息:org.apache.ibatis.builder.BuilderException: The expression '***' evaluated to a null value.错误的原因:SQL 参数为List 集合,传递的指定参数不是集合解决的办法:MyBatis mapper 配置文件添加一层针对错误属性的集合判断:<if test=...原创 2020-03-29 19:00:52 · 4485 阅读 · 0 评论 -
MySQL 转换函数cast 和convert,升序和降序
Cast 函数和Convert 函数简单功能描述:用来获取一个类型的值,并产生另一个类型的值。语法规则:CAST(valueastype) =CAST(xxx AS 类型)CONVERT(value,type) =CONVERT(xxx,类型)Cast 函数转换类型限制(可以转换类型表格如下):数据类型 备注说明 BINARY 二进制 CHAR...原创 2020-03-29 18:56:51 · 858 阅读 · 0 评论 -
MyBatis --关联查询--自关联(查询指定父节点的所有子节点)
Mapper.java 接口定义 List<***> selectAllWrapper(Map<String, Object> paramter);Mapper.xml 配置文件<resultMap id="BaseResultMap" type="SysDataArch"> <id column="sid" jdbcType="V...原创 2019-12-31 19:04:02 · 1353 阅读 · 0 评论 -
mybatis3 大于、小于、不等于等特殊字符转义
特殊字符 特殊字符转义一 特殊字符转义二 >= >= <![CDATA[>= ]]> <= <= <![CDATA[<= ]]> != <![CDATA[ <> ]]> <![CDATA[!= ]]> 代码实例: ...原创 2019-12-26 18:46:24 · 4674 阅读 · 0 评论 -
org.apache.ibatis.builder.BuilderException: The expression 'list' evaluated to a null value
今天使用MyBatis3 编写批量更新接口提示如下错误信息:org.apache.ibatis.builder.BuilderException: The expression 'array' evaluated to a null value.错误代码:<if test="archSids != null"> and arch_sid in <fore...原创 2019-12-24 19:11:19 · 6989 阅读 · 0 评论 -
Mybatis 提示java.math.BigDecimal cannot be cast to java.lang.Integer
今天在编写统计模块时,出现如下错误信息:java.math.BigDecimal cannot be cast to java.lang.Integer核心代码:<select id="getSum" parameterType="map" resultType="java.util.HashMap"> select sum(draw_num) as dr...原创 2019-12-24 19:03:26 · 4609 阅读 · 1 评论 -
SpringBoot: Mybatis配置事务管理
<!-- mysql 连接 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>${...原创 2019-11-13 18:45:59 · 1062 阅读 · 0 评论 -
SpringBoot 自定义SQL执行器
业务需求:自定义SQL执行器,获取当前连接MySQL8包含多少个数据库,指定数据库包含多少个表。先分析项目结构的构成:springboot +mybatis3 + mysql8 搭建的项目.我惊喜的发现了一个:根据上面的自动注入 编写自己的SQL 执行器,代码如下:import java.util.ArrayList;import java.util.List;imp...原创 2019-11-07 18:48:46 · 2749 阅读 · 0 评论 -
MyBatis3 传递参数种类
第一种:单个参数[基本类型]:# Mapper 接口定义T selectByPrimaryKey(String sid);# Mapper 映射文件 <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap"> select <...原创 2019-11-07 18:31:44 · 271 阅读 · 0 评论 -
MyBatis3 动态SQL 判断状态和集合
今天在做通知公共模块与用户关联通知公共模块的时候,遇到这样一个问题:判断指定用户是否阅读或未阅读通知功能,如果用户选择已经阅读公共通知,需要返回相关已经阅读相关通知数据,如果用户选择未阅读功能通知,需要返回未阅读公共通知数据。注意:用户关联通知公共:仅仅记录用户已经阅读的公共通知记录。核心mapp接口定义和mapp.xml文件:List<T> selectBySids(M...原创 2019-11-06 14:14:31 · 2444 阅读 · 0 评论 -
MyBatis 中if 标签 判断字符串不生效
今天遇到if 标签判断字符串不生效,导致查询结果错误:异常sql 的mapper 文件:<if test="isBound != null and isBound !='' and isBound == '1'"> and box_sid is not null </if><if test="isBound != null and isBound ...原创 2019-10-31 17:51:03 · 3356 阅读 · 1 评论 -
MySQL MyBatis Like 查询
Like查询方式一、 <sql id="condition"> <if test="userPin != null and userPin != ''"> AND UCAS_AUTH_USER.USER_PIN like '%${userPin}%' </if> <if test="userName != null and ...原创 2019-10-22 17:05:48 · 3299 阅读 · 0 评论 -
MyBatis 批量插入List<T> 和批量更新List<T>
Mapper 接口定义:// 批量新增 void batchInsert(List<T> list);Mapper.xml 文件 <!-- 批量新增 --> <insert id="batchInsert" parameterType="java.util.List"> insert into SYS_ROLE_PRI...原创 2019-10-21 19:10:14 · 1004 阅读 · 0 评论 -
mybatis基础教程之二:接口的方式编程
前面一节,已经搭建好了myeclipse,mybatis,mysql的环境,并且实现了一个简单的查询。请注意,这种方式是用SqlSession实例来直接执行已映射的SQL语句:session.selectOne("com.yihaomen.mybatis.models.UserMapper.selectUserByID原创 2014-03-26 17:24:24 · 750 阅读 · 0 评论