Mybatis映射配置文件
总结springboot开启mybatis驼峰命名自动映射的三种方式

总结springboot开启mybatis驼峰命名⾃动映射的三种⽅式⽅式⼀:通过springboot的配置⽂件application.ymlmybatis:configuration:map-underscore-to-camel-case: true此⽅式是最简单的,但是要注意,通过springboot的配置⽂件配置mybatis的设置,则不能够再使⽤mybatis的配置⽂件,例如:下边代码中标红的两个设置不能同时存在,要么使⽤config-location指定mybatis的配置⽂件,在通过mybatis的配置⽂件配置相关设置,要么通过springboot配置⽂件的mybatis.configuration进⾏相关设置,⼆者只能选其⼀,否则会报错。
mybatis:config-location: classpath:mybatis/mybatis-config.xmlmapper-locations: classpath:mybatis/mapper/*.xmlconfiguration:map-underscore-to-camel-case: true⽅式⼆:通过mybatis的配置⽂件⾸先需要在springboot的配置⽂件application.yml中指定mybatis配置⽂件的位置。
mybatis:config-location: classpath:mybatis/mybatis-config.xmlmapper-locations: classpath:mybatis/mapper/*.xml然后在mybatis配置⽂件中进⾏设置<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-////DTD Config 3.0//EN""/dtd/mybatis-3-config.dtd"><configuration><settings><setting name="mapUnderscoreToCamelCase" value="true"/></settings></configuration>⽅式三:通过@Comfiguration注解和@Bean注解,向容器中添加ConfigurationCustomizer类型的组件,在ConfigurationCustomizer中进⾏设置@Configurationpublic class MybatisConfig {@Beanpublic ConfigurationCustomizer configurationCustomizer(){return new ConfigurationCustomizer() {@Overridepublic void customize(org.apache.ibatis.session.Configuration configuration) {configuration.setMapUnderscoreToCamelCase(true);}};}}。
mybaits工作原理

mybaits工作原理
MyBatis是一种Java持久层框架,其工作原理是通过XML或注解方式将SQL语句映射到Java对象中,从而实现数据库的访问和操作。
MyBatis的工作原理可以分为三个步骤:配置、映射和执行。
1. 配置:MyBatis的配置文件包括数据源、事务管理器、映射器等信息。
其中,数据源配置是必须的,它定义了数据库的连接信息,使得MyBatis能够连接到数据库。
事务管理器配置则是为了确保数据操作的一致性和完整性。
映射器配置则是为了将Java对象与SQL 语句进行映射。
2. 映射:映射是将Java对象与SQL语句进行绑定。
通过XML或注解方式,MyBatis可以将Java对象的属性与SQL语句的参数进行绑定,从而实现数据库的访问和操作。
同时,MyBatis还支持动态SQL,可以根据不同的条件生成不同的SQL语句。
3. 执行:执行是将映射好的SQL语句进行执行。
MyBatis将SQL 语句发送到数据库中执行,并将返回结果转换为Java对象。
在执行过程中,MyBatis还支持缓存机制,可以将执行结果进行缓存,提高查询效率。
除此之外,MyBatis还支持插件机制,可以通过插件来扩展
MyBatis的功能。
插件可以在执行SQL语句前或后进行拦截,从而实现自定义的功能。
总的来说,MyBatis的工作原理是通过配置、映射和执行三个步骤实现数据库的访问和操作。
通过XML或注解方式将SQL语句映射到Java对象中,从而实现数据库的操作。
同时,MyBatis还支持动态SQL、缓存机制和插件机制等功能,可以满足不同场景的需求。
Mybatis的配置文件和映射文件详解

Mybatis的配置⽂件和映射⽂件详解⼀、Mybatis的全局配置⽂件1、SqlMapConfig.xml(名称可变)是mybatis的全局配置⽂件,配置内容如下:properties(属性)settings(全局配置参数)typeAliases(类型别名)typeHandlers(类型处理器)objectFactory(对象⼯⼚)plugins(插件)environments(环境集合属性对象)environment(环境⼦属性对象)transactionManager(事务管理)dataSource(数据源)mappers(映射器)2、properties将数据库连接参数单独配置在db.properties(名称可变)中,放在类路径下。
这样只需要在SqlMapConfig.xml中加载db.properties的属性值。
这样在SqlMapConfig.xml中就不需要对数据库连接参数硬编码。
将数据库连接参数只配置在db.properties中,原因:⽅便对参数进⾏统⼀管理,其它xml可以引⽤该db.properties例如:db.propertiesjdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/mybatisername=rootjdbc.password=root相应的SqlMapConfig.xml<properties resource="db.properties"/><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${ername}"/><property name="password" value="${jdbc.password}"/></dataSource></environment></environments>注意: MyBatis 将按照下⾯的顺序来加载属性:⾸先、在properties标签中指定的属性⽂件⾸先被读取。
【MyBatis系列3】最全MyBatis中XML映射文件(Mapper)标签分析及示例

【MyBatis系列3】最全MyBatis中XML映射⽂件(Mapper)标签分析及⽰例前⾔MyBatis的强⼤之处就在于它的映射器⽂件,⽽这也正是MyBatis的魔⼒所在,对于任何MyBatis的使⽤者来说,MyBatis的映射⽂件是必须要掌握的。
Mapper⽂件标签Mapper中⼀个提供了9个顶层标签,除了1个已经过期的我们不需要去了解,另外8个都是必须要掌握的,只要熟练掌握了标签的使⽤,使⽤MyBatis才能如鱼得⽔。
接下来我们就⼀个个来分析⼀下这些标签的使⽤。
<cache> – 该命名空间的缓存配置。
<cache-ref> – 引⽤其它命名空间的缓存配置。
<resultMap> – 描述如何从数据库结果集中加载对象,是最复杂也是最强⼤的元素。
<parameterMap> – ⽼式风格的参数映射。
此元素已被废弃,并可能在将来被移除!请使⽤⾏内参数映射。
⽂档中不会介绍此元素。
<sql> – 可被其它语句引⽤的可重⽤语句块。
<insert> – 映射插⼊语句。
<update> – 映射更新语句。
<delete> – 映射删除语句。
<select> – 映射查询语句。
selectselect⽤来映射查询语句,是我们使⽤最多的⼀种标签,也是最复杂的⼀种标签。
⽐如下⾯就是⼀个简单的select标签的使⽤<select id="listUserByUserName" parameterType="String" resultType="lwUser">select user_id,user_name from lw_user where user_name=#{userName}</select>select标签内,提供了⼀些⼆级标签,下⾯就列举出了全部的⼆级标签:<selectid="selectPerson"parameterType="int"parameterMap="deprecated"resultType="hashmap"resultMap="personResultMap"flushCache="false"useCache="true"timeout="10000"fetchSize="256"statementType="PREPARED"resultSetType="FORWARD_ONLY"databaseId="mysql"resultOrdered="false"resultSets="xxx,xxx"lang=""></select>id必选标签。
mybatis的原理

mybatis的原理MyBatis是一款支持Java语言的持久层框架,它的原理是通过提供一种将Java对象与数据库表进行映射的方式,实现对数据库的操作和访问。
MyBatis的原理主要有以下几个方面:1. SQL映射文件:MyBatis使用XML文件来配置SQL语句和结果映射,这些XML文件被称为SQL映射文件。
在这些映射文件中,可以定义各种SQL语句,包括查询、更新、插入和删除等操作。
2. 数据源配置:MyBatis需要连接数据库来进行操作,所以需要配置数据源信息。
数据源可以是数据库连接池,也可以是直接连接数据库。
在配置数据源时,需要指定数据库的连接信息,例如URL、用户名、密码等。
3. SQLSession:MyBatis通过SQLSession来执行SQL语句。
SQLSession是MyBatis与数据库交互的核心类,它提供了各种方法来执行SQL语句,并返回结果。
SQLSession可以通过SqlSessionFactory来创建,而SqlSessionFactory可以通过XML配置文件或Java代码来创建。
4. SQL语句执行:在SQLSession中执行SQL语句时,MyBatis会将SQL语句发送给数据库执行,并将结果返回。
MyBatis支持各种类型的SQL语句,例如简单的查询语句、动态SQL语句以及存储过程等。
5. 参数绑定和结果映射:在执行SQL语句时,MyBatis可以将Java对象与SQL语句中的参数进行绑定,以实现参数传递。
同时,MyBatis还可以将查询结果与Java对象进行映射,以便于操作和使用。
6. 缓存机制:MyBatis提供了缓存机制,可以缓存查询的结果,提高查询性能。
缓存可以分为一级缓存和二级缓存。
一级缓存是基于SqlSession的缓存,而二级缓存是基于SqlSessionFactory的缓存。
总的来说,MyBatis的原理是通过SQL映射文件配置SQL语句和结果映射,使用SQLSession执行SQL语句,并通过参数绑定和结果映射与Java对象进行交互,同时支持缓存机制来提高性能。
mybatis 的工作原理

mybatis 的工作原理
MyBatis是一个持久层框架,用于将Java对象映射到数据库中的表。
它的工作原理如下:
1. 配置文件:MyBatis使用XML或注解进行配置。
配置文件包含数据库连接信息、SQL语句和映射规则等。
2. SqlSessionFactory:通过配置文件创建SqlSessionFactory对象。
SqlSessionFactory负责创建SqlSession对象,它是MyBatis与数据库交互的核心类。
3. SqlSession:SqlSession是具体执行SQL操作的地方。
通过SqlSession可以执行SQL语句、提交事务、关闭连接等。
4. 映射文件:映射文件定义了Java对象与数据库表的映射关系,包含了SQL语句以及参数映射等信息。
5. 执行SQL:当调用SqlSession的方法时,MyBatis会根据映射文件中的配置,将SQL语句解析成对应的数据库操作,并执行之。
6. 结果映射:执行完SQL语句后,MyBatis会将数据库返回的结果映射到Java对象中,并返回给调用方。
通过以上的步骤,MyBatis实现了将Java对象与数据库表进行交互的功能。
它的优势在于灵活的配置和强大的SQL映射能力,使开发人员能够更加轻松地操作数据库。
MyBatis之XML映射文件详解

MyBatis之XML映射⽂件详解MyBatis 的真正强⼤在于它的映射语句,也是它的魔⼒所在。
由于它的异常强⼤,映射器的 XML ⽂件就显得相对简单。
在MyBatis开发中,涉及到主要开发要素是:Dao接⼝类,Mapper映射⽂件,以及PO类。
它们之间的关系如下:映射器(mapper)的XML⽂件,有⼏个顶级元素:select – 映射查询语句insert – 映射插⼊语句update – 映射更新语句delete – 映射删除语句sql – 可被其他语句引⽤的可重⽤语句块。
cache – 给定命名空间的缓存配置。
cache-ref – 其他命名空间缓存配置的引⽤。
resultMap – 是最复杂也是最强⼤的元素,⽤来描述如何从数据库结果集中来加载对象。
⼀、select元素1. 最基本的查询<select id="getUserById" resultType="MemberUser" parameterType="int">select ID,NAME,PERSONMOBILE,ADDRESS,AGE FROM MEMBER_USER WHERE ID = #{id}</select>上述配置类似于:// Similar JDBC code, NOT MyBatis…String selectMember = "select ID,NAME,PERSONMOBILE,ADDRESS,AGE FROM MEMBER_USER WHERE ID=?";PreparedStatement ps = conn.prepareStatement(selectMember);ps.setInt(1,id);2. select 元素有很多属性允许你配置,来决定每条语句的作⽤细节⽰范:<selectid="selectPerson"parameterType="int"parameterMap="deprecated"resultType="hashmap"resultMap="personResultMap"flushCache="false"useCache="true"timeout="10000"fetchSize="256"statementType="PREPARED"resultSetType="FORWARD_ONLY">详细说明:属性描述id在命名空间中唯⼀的标识符,可以被⽤来引⽤这条语句。
mybatis 映射原理

mybatis 映射原理
Mybatis映射原理指的是Mybatis框架是如何将数据库中的数据映射到Java对象中的。
这个过程是Mybatis框架的核心部分,也是使用Mybatis框架的开发者需要理解的重要知识点。
在Mybatis框架中,映射关系是通过XML文件来定义的,这个XML文件中包含了数据库表结构和Java对象之间的映射关系。
Mybatis框架会根据这个XML文件来生成对应的Java代码,从而实现数据库表和Java对象之间的转换。
Mybatis映射原理的实现过程主要包括以下几个步骤:
1. 配置文件加载:Mybatis框架会通过读取配置文件来初始化数据库连接等相关信息。
2. SQL解析:Mybatis框架会将SQL语句解析成为可执行的Java 代码。
3. 参数绑定:Mybatis框架会将Java对象和SQL语句中的参数进行绑定,并生成可以执行的SQL语句。
4. SQL执行:Mybatis框架会将生成的SQL语句发送给数据库,并执行对应的操作。
5. 结果映射:Mybatis框架会将查询结果转换成为Java对象,并返回给调用方。
Mybatis框架的映射原理非常灵活,可以根据实际的业务需求进行定制化开发。
同时,Mybatis框架也提供了丰富的API和插件机制,方便开发者对框架进行二次开发和扩展。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
XML 映射配置文件MyBatis 的XML 配置文件包含了影响MyBatis 行为甚深的设置和属性信息。
XML 文档的高层级结构如下:∙configuration 配置∙properties 属性∙settings 设置∙typeAliases 类型命名∙typeHandlers 类型处理器∙objectFactory 对象工厂∙plugins 插件∙environments 环境∙environment 环境变量∙transactionManager 事务管理器∙dataSource 数据源∙databaseIdProvider chinese?∙mappers 映射器properties这些是外部化的, 可替代的属性, 这些属性也可以配置在典型的Java 属性配置文件中, 或者通过properties 元素的子元素来传递。
例如:其中的属性就可以在整个配置文件中使用,使用可替换的属性来实现动态配置。
比如:这个例子中的username 和password 将会由properties 元素中设置的值来替换。
driver 和url 属性将会从包含进来的config.properties 文件中的值来替换。
这里提供很多配置的选项。
属性也可以被传递到SqlSessionBuilder.build()方法中。
例如:如果在这些地方,属性多于一个的话,MyBatis 按照如下的顺序加载它们:∙在properties 元素体内指定的属性首先被读取。
∙从类路径下资源或properties 元素的 url 属性中加载的属性第二被读取,它会覆盖已经存在的完全一样的属性。
∙作为方法参数传递的属性最后被读取, 它也会覆盖任一已经存在的完全一样的属性,这些属性可能是从 properties 元素体内和资源/url 属性中加载的。
因此, 最高优先级的属性是那些作为方法参数的, 然后是资源/url 属性, 最后是properties 元素中指定的属性。
settings这些是极其重要的调整, 它们会修改MyBatis 在运行时的行为方式。
下面这个表格描述了设置信息,它们的含义和默认值。
设置参数描述有效值默认值cacheEnabled 这个配置使全局的映射器启用或禁用缓存。
true | false truelazyLoadingEnabled 全局启用或禁用延迟加载。
当禁用时, 所有关联对象都会即时加载。
true | false trueaggressiveLazyLoading 当启用时, 有延迟加载属性的对象在被调用时将会完全加载任意属性。
否则, 每种属性将会按需要加载。
true | false truemultipleResultSetsEnabled 允许或不允许多种结果集从一个单独的语句中返回(需要适合的驱动)true | false trueuseColumnLabel 使用列标签代替列名。
不同的驱动在这方便表现不同。
参考驱动文档或充分测试两种方法来决定所使用的驱动。
true | false trueuseGeneratedKeys 允许JDBC 支持生成的键。
需要适合的驱动。
如果设置为true 则这个设置强制生成的键被使用, 尽管一些驱动拒绝兼容但仍然有效(比如Derby)true | false FalseautoMappingBehavior 指定MyBatis 如何自动映射列到字段/ 属性。
PARTIAL 只会自动映射简单, 没有嵌套的结果。
FULL 会自动映射任意复杂的结果(嵌套的或其他情况) 。
NONE, PARTIAL,FULLPARTIALdefaultExecutorType 配置默认的执行器。
SIMPLE 执行器没有什么特别之处。
REUSE 执行器重用预处理语句。
BATCH 执行器重用语句和批量更新SIMPLE REUSEBATCHSIMPLEdefaultStatementT imeout 设置超时时间, 它决定驱动等待一个数据库响应的时间。
Any positive integer Not Set (null) safeRowBoundsEnabled Allows using RowBounds on nested statements. true | false FalsemapUnderscoreToCamelCase Enables automatic mapping from classic database column namesA_COLUMN to camel case classic Java property namesaColumn.true | false FalselocalCacheScope MyBatis uses local cache to prevent circular references andspeed up repeated nested queries. By default (SESSION) all SESSION |STATEMENTSESSION设置参数 描述 有效值 默认值queries executed during a session are cached. IflocalCacheScope=STATEMENT local session will be used just for statement execution, no data will be shared between two different calls to the same SqlSession.jdbcTypeForNull Specifies the J DBC type for null values when no specific JDBC type was provided for the parameter. Some drivers require specifying the column JDBC type but others work with generic values like NULL, V ARCHAR or OTHER.JdbcType enumeration. Most common are: NULL, VARCHAR and OTHEROTHERlazyLoadTriggerMethods Specifies which Object's methods trigger a lazy loadA method name list separated by commasequals,clone,hashCode,toString一个设置信息元素的示例,完全的配置如下所示:typeAliases类型别名是为 Java 类型命名一个短的名字。
它只和 XML 配置有关, 只用来减少类完全限定名的多余部分。
例如:使用这个配置, ―Blog‖可以任意用来替代―domain.blog. Blog‖所使用的地方。
You can also specify a package where MyBatis will search for beans. For example:Each bean found in domain.blog , if no annotation is found, will be registered as an alias using uncapitalized non-qualified class name of the bean. Thas is domain.blog.Author will be registered as Author . If the @Alias annotation is found its value will be used as an alias. See the example below:对于普通的Java 类型,有许多内建的类型别名。
它们都是大小写不敏感的,由于重载的名字,要注意原生类型的特殊处理。
别名映射的类型_byte byte_long long_short short_int int_integer int_double double_float float_boolean booleanstring String别名映射的类型byte Bytelong Longshort Shortint Integerinteger Integerdouble Doublefloat Floatboolean Booleandate Datedecimal BigDecimalbigdecimal BigDecimalobject Objectmap Maphashmap HashMaplist Listarraylist ArrayListcollection Collectioniterator IteratortypeHandlers无论是MyBatis 在预处理语句中设置一个参数, 还是从结果集中取出一个值时, 类型处理器被用来将获取的值以合适的方式转换成Java 类型。
下面这个表格描述了默认的类型处理器。
类型处理器Jav a 类型JD BC 类型BooleanTypeHandler ng.Boolean, boolean任何兼容的布尔值ByteTypeHandler ng.Byte, byte 任何兼容的数字或字节类型ShortTypeHandler ng.Short, short任何兼容的数字或短整型IntegerTypeHandler ng.Integer, int任何兼容的数字和整型LongTypeHandler ng.Long, long任何兼容的数字或长整型类型处理器Jav a 类型JD BC 类型FloatTypeHandler ng.Float, float 任何兼容的数字或单精度浮点型DoubleTypeHandler ng.Double, double任何兼容的数字或双精度浮点型BigDecimalTypeHandler java.math.BigDecimal任何兼容的数字或十进制小数类型StringTypeHandler ng.String CHAR 和VARCHAR 类型ClobTypeHandler ng.String CLOB 和LONGV ARCHAR 类型NStringTypeHandler ng.String NVARCHAR 和 NCHAR 类型NClobTypeHandler ng.String NCLOB 类型ByteArrayTypeHandler byte[]任何兼容的字节流类型BlobTypeHandler byte[]BLOB 和LONGV ARBINARY 类型DateTypeHandler java.util.Date TIMESTAMP 类型DateOnlyTypeHandler java.util.Date DAT E 类型TimeOnlyTypeHandler java.util.Date TIME 类型SqlTimestampTypeHandler java.sql.Timestamp TIMESTAMP 类型SqlDateTypeHandler java.sql.Date DAT E 类型SqlTimeTypeHandler java.sql.Time TIME 类型ObjectTypeHandler Any 其他或未指定类型EnumTypeHandler Enumeration Type VARCHAR-任何兼容的字符串类型, 作为代码存储(而不是索引) EnumOrdinalTypeHandler Enumeration Type Any compatible NUMERIC or DOUBLE, as the position is stored (not the code itself). 你可以重写类型处理器或创建你自己的类型处理器来处理不支持的或非标准的类型。