ibatis

SpringBoot中mybatis配置自动转换驼峰标识没有生效

ぐ巨炮叔叔 提交于 2020-04-19 10:19:34
mybatis提供了一个配置: # 开启驼峰命名转换 mybatis .configuration.map-underscore-to-camel-case =true 使用该配置可以让mybatis自动将SQL中查出来的带下划线的字段,转换为驼峰标志,再去匹配类中的属性。 即: @Select("select phone_num,card_num from xxx where id=#{id}" ) public User getUserInfo(String id); 查出来的结果,会被自动转换成 phonenum 和 cardnum, 再和结果类(这里就是 User )中的属性进行匹配。 更多和自动转换驼峰标志相关的详细源码分析可以参考: 传送门 ————————————————————分割线————————————————— 下面我们说说我这次碰到的奇怪问题: 在我的项目中,明明在application.properties中将这个属性设为了true,结果运行到上文截图57行代码时始终为false,导致后边无法找到匹配的属性。 经过一番DEBUG分析,发现项目为了做多数据源,将生成 org.apache.ibatis.session.SqlSessionFactory 的配置抽出到使用 @Configuration 修饰的配置类中。 application

MyEclipse10 使用JRebel实现热部署

£可爱£侵袭症+ 提交于 2020-04-18 07:51:30
MyEclipse10 使用JRebel实现热部署 Window --Preferences-Tomcat 6.x-JDK-JVM -noverify - javaagent:D:\JRebel\jrebel.jar //jrebel.jar所在路径 -Drebel.dirs=${project_loc}\WEB- INF\classes -Drebel.spring_plugin= true //热部署hibernate相关jar -Xms512m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256M 我所用的项目没有mybatis,可以试试下面这个。不行的话自行百度。 -Drebel.ibatis-plugin--------热部署ibatis相关的jar 配置图片 JRebel版本我用的7; JRebel版本太低的话,项目部署时Spring会报错。 JRebel下载地址: https://pan.baidu.com/s/1BiESnWsGQaUt6NOVGHlRxQ&shfl=sharepset ;密码: ri8r 原文出处:https://www.cnblogs.com/wuyifeng/p/11720886.html 来源: oschina 链接: https://my.oschina.net/u/4365260/blog

互联网轻量级框架SSM-查缺补漏第八天(MyBatis插件plugin使用及原理)

微笑、不失礼 提交于 2020-04-18 03:59:02
  简言:今天进行第八天的记录(只是写了八天)。有的时候看的多,有的时候看的少,看的少的时候就攒几天一起写了。而今天这个插件我昨天写了一下午,下班没写完就回去了,今天把尾收了,再加上一个过程图方便下面原理的理解。我这个特别不爱看书的人都看半个多月了,希望我一个月真能养成个戒不掉的习惯~ 第八章 插件   在前一篇介绍了四个对象,是SqlSession执行过程中通过他们来完成数据库操作和结果返回的。( Executor 、 StatementHandler 、 ParameterHandler 、 ResultSetHandler )。我昨天的查缺补漏有记载,要是想深入了解就可以去查资料了,或者看我这本书的第七章(书名《JavaEE 互联网轻量级框架整合开发》)    插件的原理 就是 在四大对象调度时插入我们的代码去执行一些特殊的要求以满足特殊的场景需求 。   斜体字是部分 原理 。我先在这插入一张流程图,如果有疑问可以看到最后再返回来琢磨一下这个图。    使用方法 :(举例:要想在预编译之前在控制台上打印一些东西,就需要拦截执行SQL的StatementHandler对象的预编译方法,也就是prepare方法)   在MyBatis中使用插件,就必须实现 interceptor 接口,实现它的三个方法(代码中有注释,应该能知道啥意思): package com.ssm

互联网轻量级框架SSM-查缺补漏第七天(MyBatis的解析和运行原理)

守給你的承諾、 提交于 2020-04-18 02:27:31
第七章MyBatis的解析和运行原理   SqlSessionFactory是MyBatis的核心类之一,其最重要的功能就是提供创建MyBatis的核心借口SqlSession,所以要先创建SqlSessionFactory,为此要提供配置文件和相关的参数。MyBatis是一个复杂的系统,它采用了Builder模式去创建SqlSessionFactory,在实际上可以通过SqlSessionFactoryBuilder去创建,分为两步:    SqlSessionFactory = new SqlSessionFactoryBuider().build(inputStream); 第一步 通过org.apache.ibatis.builder.xml.XMLConfigBuilder解析配置XML文件,读取所有配置参数,并将读取的内容装入org.apache.ibatis.session.Configuration类对象中。而Configuration采用的事单例模式, 几乎所有的MyBatis配置内容都会存放在这个单例对象中 ,以便后续将这些内容读出。 第二步 使用Configuration对象创建SqlSessionFactory,MyBatis中SqlSessionFactory是一个接口,而不是一个实现类,为此MyBatis提供一个默认的实现类org.apache

MyBatis持久层框架学习之01 MyBatis的起源和发展

本小妞迷上赌 提交于 2020-04-18 00:22:19
一、MyBatis的简介    MyBatis 是支持定制化 SQL、存储过程以及 高级映射 的优秀的持久层框架。   MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。 MyBatis可以使用简单的XML或注解用于配置和原始映射, 将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录 . 二、MyBatis的历史    原是apache的一个开源项目iBatis, 2010年6月这个项目由apache software foundation 迁移到了google code,随着开发团队转投Google Code旗下,ibatis3.x正式更名为Mybatis ,代码于2013年11月迁移到Github。   iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)    三、MyBatis的基本说明   (1)、MyBatis是一个工作在持久层的框架,它 不再是一个标准的ORM框架      我们先看看Hibernate是如何对数据库进行操作    我们再来看看Mybatis如何对数据库进行操作    因为它只管理了SQL语句和Java之间的关联和映射

mybatis源码分析:启动过程

若如初见. 提交于 2020-04-15 13:18:46
【推荐阅读】微服务还能火多久?>>> mybatis在开发中作为一个ORM框架使用的比较多,所谓ORM指的是Object Relation Mapping,直译过来就是对象关系映射,这个映射指的是java中的对象和数据库中的记录的映射,也就是一个java对象映射数据库中的一条记录。了解了mybatis的背景及作用下面看mybatis的使用及从源码分析启动过程。 一、概述 要使用mybatis必须要引入mybatis的jar包,由于我这里需要查看源码,使用的mybatis源码作为依赖。首先需要下载源码,可执行从github上下载,mybatis下载下来是maven工程,按照maven导入的方式进行导入即可,详细的步骤在这里不在赘述。 引入了mybatis的依赖便可以开发mybatis的程序,我这里使用的源码版本为:3-3.4.x版本。 1、核心配置文件 mybatis核心配置文件,一般命名为mybatis-config.xml,说是核心配置文件一点也不错,这个文件包含了使用mybatis的时候的所有配置,只有正确加载了此文件,mybatis才可正常工作。下面是mybatis-config.xml文件, <? xml version="1.0" encoding="UTF-8" ?> <! DOCTYPE configuration PUBLIC "-//mybatis.org/

ibatis自动生成键selectkey(Oracle、MYSQL、MSSQL、SQLITE)

流过昼夜 提交于 2020-04-09 20:12:38
我们在数据库插入一条数据的时候,经常是需要返回插入这条数据的主键。但是数据库供应商之间生成主键的方式都不一样。 有些是预先生成(pre-generate)主键的,如Oracle和PostgreSQL;有些是事后生成(post-generate)主键的,如MySQL和SQL Server。但不管是哪种方式,我们都可以用ibatis的节点来获取语句所产生的主键。 oracle例子: <insert id = "insertProduct-ORACLE" parameterClass = "product"> <selectKey resultClass = "int" type = "pre" keyProperty = "id" > SELECT STOCKIDSEQUENCE.NEXTVAL AS VALUE FROM DUAL </selectKey> insert into PRODUCT (PRD_ID,PRD_DESCRIPTION) values (#id#,#description#) </insert> sql-server例子: <insert id = "insertProduct-MS-SQL" parameterClass = "product"> insert into PRODUCT (PRD_DESCRIPTION) values (

Mybatis与Ibatis比较

心不动则不痛 提交于 2020-04-07 07:56:50
随着开发团队转投Google Code旗下,ibatis3.x正式更名为Mybatis 虽然从正式版发布至今也有近一年时间,官方也非常友好的提供了 中文版的使用手册 ,不过相信很多人还在项目中使用ibatis2.x版本。 究竟Mybatis有哪些新特性,能给我们带来哪些好处呢?以下是我看一位大侠研究后 1、Mybatis实现了接口绑定,使用更加方便。 在ibatis2.x中我们需要在DAO的实现类中指定具体对应哪个xml映射文件, 而Mybatis实现了DAO接口与xml映射文件的绑定,自动为我们生成接口的具体实现,使用起来变得更加省事和方便。 这可以说是Mybatis最重要的改进。 注意: 虽然Mybatis支持在接口中直接使用annotation的配置方式来简化配置, 不过强烈建议仍然使用xml配置的方式。毕竟annotation的配置方式功能有限且代码入侵性太强。使用xml配置方式才能体现出Mybatis的优势所在 2、对象关系映射的改进,效率更高 相信很多在使用ibatis2.x的朋友并没有通过ibatis的xml映射文件来实现对象间的关系映射。其实也确实没有必要那么做,因为ibatis2.x采用的是“嵌套查询”的方式将对象之间的关系通过查询语句的直接拼装来实现,其效果和在DAO或Service中自行封装是一样的。 不过这种方式存在“N+1查询问题”。 概括地讲,N

数据库优化方法整理(开发人员实用)

怎甘沉沦 提交于 2020-04-06 17:24:21
特别说明: 本文只是面对数据库应用开发的程序员,不适合专业 DBA ,DBA 在数据库性能优化方面需要了解更多的知识; 本文许多示例及概念是基于 Oracle 数据库描述,对于其它关系型数据库也可以参考,但许多观点不适合于 KV 数据库或内存数据库或者是基于 SSD 技术的数据库; 本文未深入数据库优化中最核心的执行计划分析技术。 读者定位: 开发人员:如果你是做数据库开发,那本文的内容非常适合,因为本文是从程序员的角度来谈数据库性能优化。 架构师:如果你已经是数据库应用的架构师,那本文的知识你应该清楚 90% ,否则你可能不是一个喜欢折腾的架构师。 DBA(数据库管理员):大型数据库优化的知识非常复杂,本文只是从程序员的角度来谈性能优化,DBA除了需要了解这些知识外,还需要深入数据库的内部体系架构来解决问题。 前言 在网上有很多文章介绍数据库优化知识,但是大部份文章只是对某个一个方面进行说明,而对于我们程序员来说这种介绍并不能很好的掌握优化知识,因为很多介绍只是对一些特定的场景优化的,所以反而有时会产生误导或让程序员感觉不明白其中的奥妙而对数据库优化感觉很神秘。 很多程序员总是问如何学习数据库优化,有没有好的教材之类的问题。在书店也看到了许多数据库优化的专业书籍,但是感觉更多是面向 DBA 或者是 PL/SQL 开发方面的知识,个人感觉不太适合普通程序员