![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mybatis
文章平均质量分 59
码笼包
这个作者很懒,什么都没留下…
展开
-
Mybatis插件-责任链模式
责任链模式:将完整的、臃肿的接受者的实现逻辑拆分到多个只包含部分逻辑的、功能单一的Handler处理类中,开发人员可以根据业务需求将多个Handler对象组合成一条责任链,实现请求的处理。在一条责任链中,每个Handler对象都包含对下一个Handler对象的引用,一个Hanlder对象处理完请求消息(或不能处理该请求)时,会把请求传给下一个Handler对象继续处理,依次类推,直至整条责任链结束。场景:消息中有ABC三个字段,接受者HandlerA,HandlerB,HandlerC分别实现了处理三个原创 2021-01-21 23:30:23 · 452 阅读 · 0 评论 -
mybatis事务DefaultSqlSession-策略模式
背景:定义多种行为,根据不同的场景选择不同的行为;策略模式:定义了一些列算法,将每一个算法封装起来,由不同的类进行管理,并让他们之间相互替换。这样,每种算法都可以独立地变化。Context:行为的调用者Strategy:行为的统一抽象接口ConcreteStrategy:具体的算法实现(多个)行为增加时:增加ConcreteStrategy;策略方案变更时:新增Context;可以将反射技术和策略模式结合,这样应用程序就不需要了解所有Strategy接口实现类,而是在运行时通过反射的方式创建实原创 2021-01-21 22:01:37 · 713 阅读 · 0 评论 -
Mybatis缓存和事务管理-模板模式
**背景**:某个方法要实现的算法需要多个步骤,但其中有一些步骤是固定不变的,而另一些步骤则是不固定的。为了提高代码的可扩展性和可维护性,模板方法模式在这种场景下就派上了用场。在模板方法模式中,一个算法可以分为多个步骤,这些步骤的执行次序在一个被称为“模板方法”的方法中定义,而算法的每个步骤都对应着一个方法,这些方法被称为“基本方法”。模板方法按照它定义的顺序依次调用多个基本方法,从而实现整个算法流程。在模板方法模式中,会将模板方法的实现以及那些固定不变的基本方法的实现放在子类中,而那些不固定的基本方法在原创 2021-01-21 21:20:44 · 244 阅读 · 1 评论 -
Mybatis动态sql处理——组合模式
组合模式:将对象组合成树形结构,以表示“部分-整体”的层次结构(一般是树形结构)。用户可以像处理一个简单对象一样处理一个复杂对象,从而使得调用者无须了解复杂元素的内部结构。抽象组件 (Component):Component接口定义了树形结构中所有类的公共行为,例如这里的operation()方法。一般情况下,还会定义一些用于管理子组件的方法,例如add(),remove(),getChild();树叶(Leaf):Leaf在树形结构中表示叶节点对象,叶节点没有子节点。树枝(Composite):定义原创 2021-01-19 23:05:20 · 295 阅读 · 0 评论 -
Mybatis映射文件XML解析-建造者模式
建造者模式:将一个复杂对象的构建过程分成了一步步简单的步骤,用户只需要了解复杂对象的类型和内容,而无须关注复杂对象的具体构建过程,帮助用户屏蔽掉了复杂对象内部的具体构建细节。建造者Bilder接口:Builder接口用于定义建造者构建产品对象的各部分的行为。具体建造者ConcreteBilder:在建造者模式中,直接创建产品对象的是具体建造者。具体建造者必须实现建造者接口所要求的两类方法:一类是建造方法,例如buildPart()等方法;另一类是获取构建好的产品对象的方法buildProduct();原创 2021-01-19 22:06:26 · 428 阅读 · 0 评论 -
Mybatis缓存模块-装饰器模式
背景:在实践生产中,新需求在软件的整个生命过程中总是不断出现的。当有新需求出现时,就需要为某些组件添加新的功能来满足这些需求。添加需求的方式1、直接修改已有代码并添加新的功能。——破坏原有系统的稳定性,违反“开放-封闭”原则。2、使用继承,创建子类并在子类中添加新功能实现扩展。——已有组件被final修饰不可行,待添加的新功能存在多种组合,使用继承方式可能会导致大量子类的出现。3、装饰器模式——基于组合的方式实现该功能。装饰器包含的角色:Component(组件):组件接口定义了全部组件实现类以原创 2021-01-18 23:13:42 · 397 阅读 · 1 评论 -
工厂模式-数据源+事务
工厂方法模式工厂模式:定义一个创建对象的工厂类,根据工厂接口的具体实现类决定具体实例化哪一个具体产品类。工厂方法模式有四个角色构成工厂接口(Factory):工厂接口是工厂方法模式的核心接口,调用者会直接与工厂接口交互用于获取具体的产品实现类。具体工厂类(ConcreteFactory):具体工厂类是工厂接口的实现类,用于实例化产品对象,不同的具体工厂类会根据需要实例化不同的产品实现类。产品接口(Product):产品接口用于定义产品类的功能,具体工厂类产生的所有产品对象都必须实现该接口。调用者一原创 2021-01-17 23:55:16 · 280 阅读 · 0 评论 -
适配器模式-日志模块
Mybatis技术内幕-设计模式与应用场景总结1、适配器模式主要解决由于接口不能兼容而导致类无法使用的问题,适配器模式会将需要适配的类转换成调用者能够使用的目标接口。主要涉及以下几个角色:目标接口Target:调用者能够直接使用的接口;需要适配的类Adaptee:Adaptee中有真正的业务逻辑,但是不能被调用者直接使用;适配器:Adapter实现了Target接口,并包装一个Adaptee对象,Adapter在实现Target接口中的方法时,会将调用委托给Adaptee对象的相关对象,由Adap原创 2021-01-17 22:35:40 · 155 阅读 · 0 评论 -
Mybatis技术内幕-设计模式与应用场景总结
Mybatis技术内幕-设计模式与应用场景总结1、适配器模式主要解决由于接口不能兼容而导致类无法使用的问题,适配器模式会将需要适配的类转换成调用者能够使用的目标接口。主要涉及一下几个角色:目标接口Target:调用者能够直接使用的接口;需要适配的类Adaptee:Adaptee中有真正的业务逻辑,但是不能被调用者直接使用;适配器:Adapter实现了Target接口,并包装一个Adaptee对象,Adapter在实现Target接口中的方法时,会将调用委托给Adaptee对象的相关对象,由Adap原创 2021-01-17 13:43:52 · 272 阅读 · 0 评论 -
插入数据库某个字段之前判断是否重复
做insert操作时,可能在保存之前要判断用户输入的某个数据是否在数据库中唯一存在,是否与其他数据重复。这里重点记录sql语句以及service如何实现。1、错误示范service层: selMap =commDAO.selectOne(KFSGL + "KFSDM_Q", paramsMap);dao层: <!-- 查询是否存在相同的开发商代码--><selec...原创 2018-11-23 15:50:08 · 13894 阅读 · 0 评论 -
dao层和service层中对应操作
进行代码检查的时候,被同事发现了一个问题,dao层中不管是update,insert,delete还是select操作,统一用的是,但是我在使用的时候结果并没有错误,但为了规范,在此做一下总结,贴出代码留个教训。1、select操作service层中:selectOne—>查找一条记录;select—>查找多条记录;返回值—>hashmapMap<String, O...原创 2018-11-23 15:33:34 · 3978 阅读 · 0 评论 -
miniui,mybatis,oracle数据库中时间应该如何转换
1、从数据库中查找时间展示在前台1.1 oracle中的数据格式:date数据类型,插入oracle的table使用语句insert into table (SJ) values (to_date('2004-03-08 13:00:00', 'yyyy-MM-dd HH24:mi:ss'));`to_date:将字符串转换成时间样式;1.2 mybatis中配置select语句查询&...原创 2018-11-23 14:16:19 · 1454 阅读 · 0 评论 -
mybatis中能不能一个配置信息里面写多条sql语句
问题来源:在一个项目中,现需要删除开发商信息(仅仅进行逻辑删除,将其有效标志设为0),删除开发商信息之后,该开发商对应的接入系统信息,服务信息,发布者信息都需要进行删除。我在Service中写下public int deleteKfs(IDTO dto) throws Exception{ logger.info("根据ID更新有效标志为0"); Map<String, Objec...原创 2018-11-23 11:59:14 · 3820 阅读 · 0 评论 -
mybatis中if判断坑
第一次正式的做开发,记录一下在mybatis中踩过的坑。1.在Mapper.xml文件中,现需要判断操作员类型是不是为1,写成&amp;lt;if test=&quot;OPERTYPE != '1' and OPERTYPE != '2'&quot;&amp;gt; and id = #{OPERPOSITION} &amp;lt;/if&amp;gt;程序运行的结果一直为false,不会执行 i原创 2018-11-23 11:41:45 · 1521 阅读 · 1 评论