202202-11 解析 MyBatis 中 Mapper 生效的来龙去脉 目录一、MyBatis基本使用1.1编写配置文件1.2编写Mapper接口及测试方法1.3结果二、源码分析2.1通过配置文件构建出SqlSessionFactory2.2获取SqlSession对象2.3根据SqlSession获取Mapper代理2.4通过Mapper代理,执行方法操作数据库2.5整体流程图最近闲了快有半个多月了,一直提不起兴致再去看一些书籍(没有以前疯狂吸食知识的欲望了😓)。不过这一两天不知道是什么筋搭错了非常想写点什么,但又不知道写点啥... 继续阅读 >
202111-05 mybatis 运行时加载自定义mapper文件方式 mybatis运行时加载自定义mapper文件用mybatis一定要写mapper文件,这是使用mybatis的常识,但有时候应用需求,mapper文件中的节点需要动态生成,或者根据业务场景进行组装,那这个时候的SQL语句直接写在mapper文件显然不可取,又或者采用动态SQL完成,今天介绍一种方式,支行时加载自定义mapper配置文件。我首先介绍一种mapper文件存在的写法,也是大家常用的,至于spring-mybatis配置方法,我这里就不列了:dao接口:packagecom... 继续阅读 >
202110-20 Mybatis 中Mapper使用package方式配置报错的解决方案 踩了个坑,写出来Mybatis中Mapper使用package方式配置报错org.apache.ibatis.binding.BindingException:Invalidboundstatement(notfound)UserDaoTest中调用了UserDao的insert方法。1.项目结构如下2.UserDao接口packagecom.mybatis.dao;importorg.apache.ibatis.annotations.Mapper;importorg.apache.ibatis.annotations.Param;importjava.util.List;importcom.mybatis.pojo.User;@MapperpublicinterfaceUserDao{... 继续阅读 >
202109-14 mybatis实现mapper代理模式的方式 今晚继续复习mybtis以根据id值查询单条数据为例编写SqlMapConfig.xml文件<configuration><!--使用mybatis需要的数据源和事务配置,后续如果整合spring之后,将不再需要--><environmentsdefault="development"><!--配置数据源和事务--><environmentid="development"><!--配置事务管理,将事务管理交给mybatis管理--><transactionManagertype="JDBC"/><!--配置数据源--><dataSourcetype="POOLED"><propertynam... 继续阅读 >
202109-04 解决tk mapper 通用mapper的bug问题 如下所示:<beanclass="tk.mybatis.spring.mapper.MapperScannerConfigurer"><propertyname="basePackage"value="com.isea533.mybatis.mapper"/><propertyname="properties"><value>mappers=tk.mybatis.mapper.common.Mapper</value></property></bean>basePackage的属性值不能包含通用mapper所在的包ErrorstartingAppli... 继续阅读 >
202108-26 解决Mybatis中mapper的ID冲突问题 mapper的id冲突原因:原因一:在同一个mapper.xml中存在相同的ID原因二:同时使用了xml配置和注解配置解决方案:只保留xml或者注解即可!!!Mybatismapper文件下同一id查询结果列不同问题场景描述:订单数据按天分表,正常情况下每一天的表结构都是一样的,表名命名格式order_yyyyMMdd。定义一个查询如下:<selectid="orderSelect"parameterClass="java.util.HashMap"resultClass="com.xxx">select*fromorder_$table_suf... 继续阅读 >
202101-21 MyBatis 中使用 Mapper 简化代码的方法 前面文章所写的增删改查是存在问题的。每执行一次SQL,都要开启一次会话,并且需要提交并关闭,主要问题就是冗余代码过多,模板化代码过多。例如,我想开发一个UserDao,可能是下面这样:简化前的UserDaopublicclassUserDao{privateSqlSessionFactorysqlSessionFactory=SqlSessionFactoryUtils.getInstance();publicUsergetUserById(Integerid){SqlSessionsqlSession=sqlSessionFactory.openSession();... 继续阅读 >
202101-08 在mybatis中使用mapper进行if条件判断 目的:在使用mybatis框架中mapper文件有自动生成,但有时需要自己添加sql语句进行开发,当遇到需要使用if进行条件判断的时候该怎么写?查询sql语句如下:<selectid="queryData"parameterType="com.pojo.QueryDetailReq"resultType="com.pojo.MxDataInfo">select*fromdb_trd.tb_trd_secu_orderwhereorder_status=6<iftest="channelNo!=null">andchannel_no=#{channelNo,jdbcType=INTEGER}</if><iftest="r... 继续阅读 >
202012-04 Springboot通用mapper和mybatis-generator代码示例 实现功能:根据数据库中的表,自动生成model、dao和对应的xml文件。xml中实现通用mapper中CURD功能1、引入依赖<properties><mybatis.generator.version>1.3.7</mybatis.generator.version><tk.mybatis.version>4.1.5</tk.mybatis.version></properties><dependencies><!--mybatis--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactI... 继续阅读 >
202012-02 对Mapper 中几种update的区别说明 这两个update都是使用generator生成的mapper.xml文件中,对dao层的更新操作update更新传回数据的所有字段,没有传回的字段保持原样。updateByPrimaryKey对实体类的字段全部更新(不判断是否为Null),即如果字段为空就更新为空;updateByPrimaryKeySelective会对实体类字段进行判断再更新(如果为Null就忽略更新),如果字段为空,忽略不更新;补充知识:mapper中insert、update、delete、select、resultMap的用法这里介绍mapper映射... 继续阅读 >
202011-19 mybatis-plus mapper中foreach循环操作代码详解(新增或修改) .循环添加接口处:分别是void无返回类型;有的话是(resultType)返回类型,参数类型(parameterType)list, 如:在mapper文件中分别对应ID,参数类型和返回类型。循环处理,如下:<insertid="insertPack"parameterType="java.util.List">insertintot_ev_bu_pack(PACK_CODE,BIN,PACK_PROD_TIME,CREATED_DATE,CREATED_BY,BATTERY_CLASS,SUPPLIER_NAME,TERMINAL_USER)values<foreachc... 继续阅读 >
202011-10 IDEA 项目创建Mapper的xml文件的方法 为了方便创建mapper的xml文件,所以可以自定义一个模板文件,以后用起来很方便。1.打开设置2.搜索FileandCodeTemplates,进行如下操作模板代码附上<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace=""><!--namespace根据自己需要创建的的mapper的路径和名称填写--></mapper>3.模板添加完成,... 继续阅读 >
202011-10 Mapper sql语句字段和实体类属性名字有什么关系 背景:1.在数据库中有一个通知表可以看到其中的gmt_create、notifier_name、outer_title这三个字段是有下划线的2.这张表对应的实体类为publicclassNotification{privateLongid;privateLongnotifier;privateLongreceiver;privateLongouterId;privateIntegertype;privateLonggmtCreate;privateIntegerstatus;privateStringnotifierName;privateStringouterTitle;}在写实际java代码命... 继续阅读 >
202010-10 详解关于mybatis-plus中Service和Mapper的分析 在后端开发过程中,如果有用到mybatis-plus,肯定会发现在其内部存在着两种数据库操作接口,Iservice和BaseMapper,如果只是用增删改查会发现两者的功能是一致的,除了方法名称有所不同,其他的基本相似。对此,我颇为好奇,便打开两个接口的源码进行对比。先演示一下基本开发中的继承关系,手动创建的Service继承于ServiceImpl,并加载自己创建的Mapper@ServicepublicclassRestDeptServiceextendsServiceImpl<RestDeptMapper,... 继续阅读 >
202010-08 Mybatis中Mapper标签总结大全 一、标签分类定义SQL语句insertdeleteupdateselect配置关联关系collectionassociation配置java对象属性与查询结果集中列名的对应关系resultMap控制动态SQL拼接foreachifchoose格式化输出wheresettrim定义常量sql其他include二、标签总结1.基础SQL标签1.1查询select标签属性id唯一的名称,对应dao中mapper的接口名称paramterType定义传入的参数类型resultType 返回数据类型对应实体... 继续阅读 >
202009-27 解决SpringBoot整合Mybatis扫描不到Mapper的问题 闲来无事,想学学springboot,开始搭建一个项目,但是一直显示mapper扫描不到的错误:“Exceptionencounteredduringcontextinitialization-cancellingrefreshattempt:org.springframework.beans.factory.UnsatisfiedDependencyException:Errorcreatingbeanwithname‘userController':Unsatisfieddependencyexpressedthroughfield‘userMapper';nestedexceptionisorg.springframework.beans.factory.NoSuch... 继续阅读 >