202106-19 mybatis调用sqlserver存储过程返回结果集的方法 第一种:返回值通过out输出sqlserver存储testMapper.xml两种都能接收到数据的,因为我的实体类字段与数据库的不一致,上面图片是按照数据库字段定义的,下图是按照实体类定义的,接收输出参数是按照你定义的名称返回serviceImplMap<String,String>objectsMap=newHashMap<>();objectsMap.put("sno","123");objectsMap.put("sname","123");testMapper.test(objectsMap);Syste... 继续阅读 >
202106-09 MyBatis如何实现多表查询(多对一、一对多) MyBatis实现多表查询 一、多对一查询数据库的准备创建两张表,一张老师表,一张学生表将老师主键id关联学生外键tid创建sql的语句createtableteacher(idintprimarykey,teacher_namevarchar(30)notnull)insertintoteacher(id,teacher_name)values(1,'毛老师')createtablestudent(idintprimarykey,student_namevarchar(30)notnull,tidintdefaultnull)//建立主外键关联altertablestudentadd... 继续阅读 >
202106-05 mybatis 为什么千万不要使用 where 1=1 1.解决方案下面是mybatis查询语句,如果我们这次我们将“state=‘ACTIVE'”设置成动态条件,看看会发生什么。<selectid="findActiveBlogLike"resultType="Blog">SELECT*FROMBLOGWHERE<iftest="state!=null">state=#{state}</if><iftest="title!=null">ANDtitlelike#{title}</if><iftest="author!=nullandauthor.name!=null">ANDauthor_namelike#{author.name}</if... 继续阅读 >
202106-05 解析Mybatis Porxy动态代理和sql解析替换问题 JDK常用核心原理概述在Mybatis中,常用的作用就是讲数据库中的表的字段映射为对象的属性,在进入Mybatis之前,原生的JDBC有几个步骤:导入JDBC驱动包,通过DriverManager注册驱动,创建连接,创建Statement,增删改查,操作结果集,关闭连接过程详解首先进行类的加载,通过DriverManager注册驱动Class.forName("com.mysql.jdbc.Driver");Connectionconnection=DriverManager.getConnection("");为什么在这里可以直接... 继续阅读 >
202106-05 解析Mybatis Porxy动态代理和sql解析替换问题 JDK常用核心原理概述在Mybatis中,常用的作用就是讲数据库中的表的字段映射为对象的属性,在进入Mybatis之前,原生的JDBC有几个步骤:导入JDBC驱动包,通过DriverManager注册驱动,创建连接,创建Statement,增删改查,操作结果集,关闭连接过程详解首先进行类的加载,通过DriverManager注册驱动Class.forName("com.mysql.jdbc.Driver");Connectionconnection=DriverManager.getConnection("");为什么在这里可以直接... 继续阅读 >
202105-28 mybatis使用oracle进行添加数据的方法 本次博主主要进行oralce数据库开发,好久不用oracle,有很多知识点也忘的差不多了,本次主要是复习一下工作中主要使用的一些sql语句编写;查询查询语句都是正常的,但是需要注意的是oracle数据库在查询的时候,表名使用别名的时候,请不要使用as关键字,只有mysql数据库才可以使用,oracle只支持字段名别名可以使用as关键字。增加添加数据的时候,我们后台很可能使用到添加后的主键id,此时也跟mysql不一样,mybatis只... 继续阅读 >
202105-26 mybatis简单resultMap使用详解 Mybatis的介绍以及使用:http://www.mybatis.org/mybatis-3/zh/index.htmlmybatis是一个半自动的ORM(ObjectRelationalMapping)框架,需要手动配置一些SQL语句或者注解,相对来说Mybatis留给程序员操作的空间灵活度更高,通常需要手动配置一些东西完成OR映射。当数据库表中的字段和POJO实体类不匹配时,这是就需要程序员手动完成字段的映射。mybatis-config.xml配置文件<?xmlversion="1.0"encoding="UTF-8"?><!DOC... 继续阅读 >
202105-19 Mybatis三种批量插入数据的方式 1.循环插入mapper.xml:<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="com.buhe.demo.mapper.StudentMapper"><insertid="insert"parameterType="Student">INSERTINTOtb_student(name,age,phone,address,class_id)VALUES(#{name},#{age},#{phone},#{address},#{classId})</... 继续阅读 >
202105-15 springboot项目整合mybatis并配置mybatis中间件的实现 记录创建springboot项目并配置mybatis中间件:资源准备及版本说明编程工具:IDEAJDK版本:1.8Maven版本:ApacheMaven3.6.3springboot版本:2.4.4mybatis版本:1.3.2mysql版本:5.1.48创建mavem项目通过IDEA创建很便捷,参考《IDEA创建SpirngBoot项目》。配置pom.xml使用mybatis需要添加依赖<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.... 继续阅读 >
202105-02 mybatis plus代码生成工具的实现代码 前言:原本想使用AutoGenerator是MyBatis-Plus的官方代码生成器 ,尝试了一下,竟然报错,原因可能是MyBatis-Plus和mybatis-plus-generator的版本不一致,因为我用的MyBatis-Plus的版本是3.42,但是mybatis-plus-generator的3.4.2不知道怎么了,下载不下来,只能下载3.4.1,发现运行起来老是报错,还有一堆配置说明要看,于是自己手写生成代码的工具类,觉得更简单些。分享给大家,请多多指教。pom文件引入java-mysql... 继续阅读 >
202105-02 详解mybatis批量插入10万条数据的优化过程 数据库在使用mybatis插入大量数据的时候,为了提高效率,放弃循环插入,改为批量插入,mapper如下:packagecom.lcy.service.mapper;importcom.lcy.service.pojo.TestVO;importorg.apache.ibatis.annotations.Insert;importjava.util.List;publicinterfaceTestMapper{@Insert("")IntegertestBatchInsert(Listlist);}实体类:packagecom.lcy.service.pojo;importlombok.AllArgsConstructor;importlombok.Data;import... 继续阅读 >
202104-27 Mybatis Limit实现分页功能 1.Limit实现分页1.1为什么需要分页减少数据的处理量1.2使用Limit实现分页select*fromuserlimitstartIndex,pageSize;#注意是从startIndex+1开始查询pageSize个select*fromuserlimit3;#[0,3]1.3使用mybatis实现分页(核心:SQL)1.3.1接口UserMapper.java//limit实现分页Map后面只能是Integer包装类不可以intList<User>getUserByLimit(Map<String,Integer>map);1.3.2UserMapper.xml<select... 继续阅读 >
202104-27 mybatis中使用大于小于等于的正确方法 在mybatis中sql是写在xml映射文件中的,如果sql中有一些特殊字符的话,在解析xml文件的时候就会被转义,如若不希望被转义,那该怎么办呢?方法一:使用特殊转义字符例如,>=开始日期并且<=结束日期> > 大于号 < < 小于号 <iftest="searchTimeBegin!=nullandsearchTimeBegin!=''">ANDtcci.consume_time>=CONCAT(#{searchTimeBegin},'00:00:00')</if><ifte... 继续阅读 >
202104-27 解决Mybatis的@Param()注解导致分页失效的问题 @Param注解导致分页失效—分页拦截器问题描述在使用mybatis分页时,使用@Param注解传入了两个对象,分页失效,查询出的总是全部的数据。出现问题时,分页策略为:分页拦截器实现的分页【错误写法】service写法:publicPage<Entity>getByNidAndEntity(Page<Entity>page,Stringnid,Entityentity){entity.setPage(page);page.setList(dao.getByNidAndEntity(nid,entity));returnpage;}dao方法声明:List... 继续阅读 >
202104-07 MyBatis limit分页设置的实现 错误的写法:<selectid="queryMyApplicationRecord"parameterType="MyApplicationRequest"resultMap="myApplicationMap">SELECTa.*,FROMtb_useraWHERE1=1<iftest="ids!=nullandids.size()!=0">ANDa.idIN<foreachcollection="ids"item="id"index="index"open="("close=")"separator=",">#{id}</foreach></if><iftest="statusList!=nullandstatusList.size()!=0">ANDa.statusIN<f... 继续阅读 >
202104-07 解析Mybatis的insert方法返回数字-2147482646的解决 前言:前几天在做项目demo的时候,发现有一个很奇怪的现象,就是MyBatis发现更新和插入返回值一直为"-2147482646".无论怎么改,这个值一直不变...是在摸不着头脑,百度和谷歌了一下,有这样的说法原来是由defaultExecutorType设置引起的,如果设置为BATCH,更新返回值就会丢失。IftheBATCHexecutorisinuse,theupdatecountsarebeinglost.操作:也就是说在spring的配置文件中,只要把constructor-arg中的executorType改... 继续阅读 >