Mybatis映射配置文件
总结springboot开启mybatis驼峰命名自动映射的三种方式
![总结springboot开启mybatis驼峰命名自动映射的三种方式](https://img.taocdn.com/s3/m/ae0eb69482d049649b6648d7c1c708a1284a0a61.png)
总结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工作原理](https://img.taocdn.com/s3/m/09bf276b3a3567ec102de2bd960590c69fc3d87c.png)
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的配置文件和映射文件详解](https://img.taocdn.com/s3/m/9b240811fd4ffe4733687e21af45b307e871f90f.png)
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)标签分析及示例](https://img.taocdn.com/s3/m/bb98d341ac02de80d4d8d15abe23482fb4da02b2.png)
【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的原理](https://img.taocdn.com/s3/m/e4f41b19814d2b160b4e767f5acfa1c7ab008272.png)
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 的工作原理](https://img.taocdn.com/s3/m/30e9f18c59f5f61fb7360b4c2e3f5727a5e9241f.png)
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映射文件详解](https://img.taocdn.com/s3/m/17fd611f7dd184254b35eefdc8d376eeaeaa17aa.png)
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 映射原理](https://img.taocdn.com/s3/m/2782e6f04128915f804d2b160b4e767f5acf80ba.png)
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和插件机制,方便开发者对框架进行二次开发和扩展。
简述mybatis映射文件中的常用元素及其作用。
![简述mybatis映射文件中的常用元素及其作用。](https://img.taocdn.com/s3/m/04f1abbddbef5ef7ba0d4a7302768e9951e76e60.png)
简述mybatis映射文件中的常用元素及其作用。
MyBatis是一款轻量级的ORM框架,它提供了丰富的SQL映射配置方式来支持SQL语句的编写。
在MyBatis中,SQL语句的映射文件是一个重要的部分,通过它可以将Java对象与数据库中的表进行映射。
下面将列举常用的MyBatis映射文件中的元素及其作用。
一、映射文件元素以下是MyBatis映射文件中最常用的元素:1. mapper元素mapper元素是MyBatis映射文件的根元素,用于定义一个Mapper接口类的映射文件。
示例:```xml<mapper namespace="erMapper">……</mapper>```2. select元素select元素用于定义一个查询操作。
示例:```XML<select id="selectUserById" resultMap="userMap">select * from user where id = #{id}</select>```3. insert、update和delete元素insert、update和delete元素用于定义插入、更新和删除操作。
示例:```XML<insert id="insertUser" parameterType="er">insert into user (id, username, password) values (#{id}, #{username}, #{password})</insert>``````XML<update id="updateUser" parameterType="er"> update user set username=#{username}, password=#{password} where id=#{id}</update>``````XML<delete id="deleteUserById" parameterType="int">delete from user where id=#{id}</delete>```4. resultMap元素resultMap元素用于定义查询结果映射关系。
6、MyBatis的SQL映射(mapper)文件
![6、MyBatis的SQL映射(mapper)文件](https://img.taocdn.com/s3/m/d81fe667a88271fe910ef12d2af90242a895ab74.png)
6、MyBatis的SQL映射(mapper)⽂件学习资源:动⼒节点⽬录MyBatis 的真正强⼤在于它的映射语句,也是它的魔⼒所在。
由于它的异常强⼤,映射器的 XML ⽂件就显得相对简单。
如果拿它跟具有相同功能的 JDBC 代码进⾏对⽐,你会⽴即发现省掉了将近 95% 的代码。
MyBatis 就是针对 SQL 构建的,并且⽐普通的⽅法做的更好。
SQL 映射⽂件有很少的⼏个顶级元素(按照它们应该被定义的顺序):cache:给定命名空间的缓存配置。
cache-ref:其他命名空间缓存配置的引⽤。
resultMap – 是最复杂也是最强⼤的元素,⽤来描述如何从数据库结果集中来加载对象。
parameterMap:已废弃!⽼式风格的参数映射。
sql:可被其他语句引⽤的可重⽤语句块。
详见:insert:映射插⼊语句update:映射更新语句delete:映射删除语句select:映射查询语1、指定约束⽂件mybatis-3-mapper.dtd 是约束⽂件的名称,扩展名是 dtd。
<!DOCTYPE mapperPUBLIC "-////DTD Mapper 3.0//EN""/dtd/mybatis-3-mapper.dtd">约束⽂件作⽤:限制和检查在当前⽂件中出现的标签,属性必须符合 MyBatis 的要求。
2、Mapper标签<mapper> 标签是 SQL 映射⽂件的根标签,对应 dao 包下的⼀个接⼝,在这个标签内部使⽤ sql 对应实现 dao 接⼝中的⽅法即可。
<mapper namespace="">CRUD操作<mapper>namespace意为命名空间,是<mapper>标签的⼀个属性,⽤于绑定连接 SQL 映射⽂件和 dao 接⼝。
⼀个 dao 接⼝对应⼀个 SQL 映射⽂件,所以为了区分不同的 dao 接⼝,命名空间要求是唯⼀的,推荐使⽤ dao 接⼝的全限定名称(可以⾃定义)。
mybatis 驼峰映射配置文件写法
![mybatis 驼峰映射配置文件写法](https://img.taocdn.com/s3/m/2b815b3e1611cc7931b765ce050876323112748f.png)
MyBatis 是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。
在MyBatis 中,我们可以通过配置文件来定义SQL 语句和映射规则。
其中,驼峰映射是一个常见的配置需求,它能够将数据库中的字段名映射为Java 对象的属性名。
在MyBatis 的配置文件中,我们可以通过 <resultMap> 元素来定义驼峰映射。
下面是一个简单的示例:
在上面的示例中,UserResult 是结果映射的ID,type 属性指定了Java 对象的类型。
在 <id> 和 <result> 元素中,property 属性指定了Java 对象的属性名,column 属性指定了数据库中的字段名。
当我们查询数据库时,MyBatis 会根据配置文件中的映射规则,将数据库中的字段值自动赋值给Java 对象的属性。
如果数据库中的字段名和Java 对象的属性名不一致,我们可以通过配置文件中的 <result> 元素来指定映射规则,实现驼峰映射。
需要注意的是,MyBatis 的驼峰映射是区分大小写的,因此我们需要在配置文件中指定正确的字段名和属性名的大小写。
另外,如果Java 对象的属性名和数据库中的字段名完全一致,我们可以省略 <result> 元素,直接使用 <id> 元素进行映射。
idea中配置mybatis映射文件模版及mybatisplus自定义sql
![idea中配置mybatis映射文件模版及mybatisplus自定义sql](https://img.taocdn.com/s3/m/8afa696159fafab069dc5022aaea998fcc2240a2.png)
idea中配置mybatis映射⽂件模版及mybatisplus⾃定义sql 本⽂为博主原创,未经允许不得转载: mybatis plus 使⽤过程中已经很⼤程度提升了我们开发的效率,因为它内部已经对单表的操作进⾏了完美的封装,但是关联表操作时,这时就需要⾃⼰定义sql,⾃定义实现。
1.在idea中配置 mybatis sql 映射⽂件的模版。
步骤如下图: 其中的模版如下:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-////DTD Mapper 3.0//EN" "/dtd/mybatis-3-mapper.dtd" ><mapper namespace=""><select id="" resultType="" parameterType="" ></select></mapper> 2.在mapper接⼝中添加⾃定义的⽅法,并在对应的 mybatis sql⽂件中⾃定义sql。
@Repository//@Mapperpublic interface UserMapper extends BaseMapper<User> {User specialQueryUser();}sql⽂件如下:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-////DTD Mapper 3.0//EN" "/dtd/mybatis-3-mapper.dtd" ><mapper namespace="erMapper"><select id="specialQueryUser" resultType="er">select * from user limit 1</select></mapper> 3.配置⽂件中配置sql⽂件扫描路径: 本地项⽬结构如图:# 配置sql打印mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl # 配置sql⽂件路径mybatis-plus.mapper-locations=classpath:mapper/*Mapper.xml 4.封装test测试:(具体可参考) 本地调试运⾏的截图如下:。
mybatis insert时主键自增原理
![mybatis insert时主键自增原理](https://img.taocdn.com/s3/m/6576c95e15791711cc7931b765ce0508763275fd.png)
mybatis insert时主键自增原理MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。
MyBatis 允许你在不改变任何代码的情况下,通过修改配置文件来改变 SQL 语句的执行。
当你在使用 MyBatis 进行数据库插入操作时,如果你在数据库表定义中设置了某个字段为主键,并且这个主键是自增的(通常是 INT 或 BIGINT 类型,并设置为 AUTO_INCREMENT 在 MySQL 中),那么 MyBatis 插入操作时不需要你为这个主键字段提供值。
MyBatis 的插入操作流程大致如下:1. 映射文件配置:首先,你需要在 MyBatis 的映射文件中定义 SQL 插入语句。
这个插入语句中通常会包括所有要插入的字段,但主键字段的值通常是`{id}` 或其他表示占位符的方式。
2. 生成 PreparedStatement:MyBatis 在执行插入操作时,会根据映射文件中定义的 SQL 语句和传入的对象(通常是一个 JavaBean)来生成一个PreparedStatement。
3. 设置参数:MyBatis 会遍历传入对象的属性,并将属性值设置到PreparedStatement 的参数中。
对于主键字段,由于它被配置为自增,MyBatis 不会为其设置具体的值,而是让数据库自动生成。
4. 执行 SQL:最后,MyBatis 会执行这个 PreparedStatement,将数据插入到数据库中。
在这个过程中,数据库会自动为主键字段生成一个唯一的值(通常是递增的)。
MyBatis 的主要工作是构建 SQL 语句和参数绑定,而不是处理主键生成这样的逻辑。
这使得 MyBatis 可以很好地与各种不同类型的数据库配合工作,只要数据库支持自增主键的功能即可。
简述mybatis的工作流程。
![简述mybatis的工作流程。](https://img.taocdn.com/s3/m/f53c0417abea998fcc22bcd126fff705cd175c44.png)
简述mybatis的工作流程。
MyBatis工作流程:
1、读取配置文件:MyBatis会首先加载mybatis-config.xml文件,以及其他所有的映射配置文件,来生成SqlSessionFactory类的实例
2、解析映射配置文件:MyBatis会解析映射配置文件以及SQL
映射文件,生成相应的SQL语句
3、创建SqlSession:MyBatis使用SqlSessionFactory类来创建SqlSession,SqlSession是MyBatis的主要操作类,它是与数据库的回话,通过它可以操作MyBatis映射的SQL语句
4、执行SQL:使用SqlSession的提供的API执行指定的SQL语句,它可以接受参数进行查询,更新,插入或者删除操作
5、获取映射结果:MyBatis使用ResultMap对象来封装映射结果,它包含了字段映射和列名映射,以及对象的嵌套映射结果
6、关闭SqlSession:最后,关闭SqlSession,释放相关资源。
- 1 -。
mybatis语法和介绍详细
![mybatis语法和介绍详细](https://img.taocdn.com/s3/m/c87f54f85ebfc77da26925c52cc58bd631869380.png)
mybatis语法和介绍详细MyBatis是一个开源的持久层框架,它简化了数据库访问的操作。
它与传统的ORM框架相比,更加灵活和强大,能够提供更高效的数据库访问性能。
本文将对MyBatis的语法和特点进行详细介绍。
一、MyBatis语法1. SQL映射文件:MyBatis使用XML文件来配置SQL语句和映射关系。
SQL映射文件中包含了SQL语句以及与数据库表字段的映射关系。
2. SQL语句:MyBatis支持标准的SQL语句,可以直接在SQL映射文件中编写SQL语句。
可以使用动态SQL来实现灵活的条件查询和动态更新。
3. 参数映射:MyBatis支持将Java对象与SQL语句中的参数进行映射。
可以使用#{param}语法来引用参数,也可以使用${param}语法来引用参数。
4. 结果映射:MyBatis支持将SQL查询结果映射到Java对象或集合中。
可以通过配置来实现一对一、一对多、多对一、多对多等复杂的关联关系。
6. 缓存:MyBatis支持缓存,可以将查询结果缓存到内存中,提高查询性能。
可以使用一级缓存和二级缓存来实现不同级别的缓存。
7. 插件:MyBatis支持插件,可以通过插件来扩展MyBatis的功能。
可以自定义插件来实现自定义的功能,如日志记录、性能监控等。
二、MyBatis特点1. 简单易用:MyBatis的语法简单明了,易于上手。
通过XML配置即可完成数据库的访问操作,无需编写繁琐的SQL语句。
2. 灵活性高:MyBatis支持动态SQL,可以根据不同的条件生成不同的SQL语句。
可以灵活地处理复杂的查询需求。
3. 性能优越:MyBatis使用了预编译的SQL语句和缓存机制,可以提高查询性能。
通过合理地配置缓存可以减少数据库的访问次数,进一步提升性能。
4. 易于集成:MyBatis可以与各种主流的Java框架集成,如Spring、Spring Boot等。
可以通过注解方式来简化配置,提高开发效率。
MyBatis xml配置文件详解
![MyBatis xml配置文件详解](https://img.taocdn.com/s3/m/a598fb685acfa1c7aa00cceb.png)
MyBatis xml配置文件详解一、MyBatis 配置文件基本结构在使用mybatis框架时,首先导入其对应的jar包,并进行相应的配置,所以得对配置文件的每个参数都得了解。
一个完全的mybatis配置文件结构如下:[html] view plain copy<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-////DTD Config 3.0//EN""/dtd/mybatis-3-config.dtd"><!-- 配置文件的根元素--><configuration><!-- 属性:定义配置外在化--><properties></properties><!-- 设置:定义mybatis的一些全局性设置--><settings><!-- 具体的参数名和参数值--><setting name="" value=""/></settings><!-- 类型名称:为一些类定义别名--><typeAliases></typeAliases><!-- 类型处理器:定义Java类型与数据库中的数据类型之间的转换关系--><typeHandlers></typeHandlers><!-- 对象工厂--><objectFactory type=""></objectFactory><!-- 插件:mybatis的插件,插件可以修改mybatis的内部运行规则--><plugins><plugin interceptor=""></plugin></plugins><!-- 环境:配置mybatis的环境--><environments default=""><!-- 环境变量:可以配置多个环境变量,比如使用多数据源时,就需要配置多个环境变量--><environment id=""><!-- 事务管理器--><transactionManager type=""></transactionManager><!-- 数据源--><dataSource type=""></dataSource></environment></environments><!-- 数据库厂商标识--><databaseIdProvider type=""></databaseIdProvider><!-- 映射器:指定映射文件或者映射类--><mappers></mappers></configuration>propertiesproperties元素主要是用来定义配置外在化,比如数据库的连接属性等。
深入浅出Mybatis系列(七)---mapper映射文件配置之insert、update。。。
![深入浅出Mybatis系列(七)---mapper映射文件配置之insert、update。。。](https://img.taocdn.com/s3/m/21ba0f62a88271fe910ef12d2af90242a895abea.png)
深⼊浅出Mybatis系列(七)---mapper映射⽂件配置之insert、update。
上篇⽂章《》简单地给mybatis的配置画上了⼀个句号。
那么从本篇⽂章开始,将会介绍mapper映射⽂件的配置,这是mybatis的核⼼之⼀,⼀定要学好。
在mapper⽂件中,以mapper作为根节点,其下⾯可以配置的元素节点有: select, insert, update, delete, cache, cache-ref, resultMap, sql 。
本篇⽂章将简单介绍 insert, update, delete 的配置及使⽤,以后会对mybatis的源码进⾏深⼊讲解。
相信,看到insert, update, delete,我们就知道其作⽤了,顾名思义嘛,myabtis 作为持久层框架,必须要对CRUD啊。
好啦,咱们就先来看看 insert, update, delete 怎么配置,能配置哪些元素吧:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-////DTD Mapper 3.0//EN""/dtd/ibatis-3-mapper.dtd"><!-- mapper 为根元素节点,⼀个namespace对应⼀个dao --><mapper namespace="erDao"><insert<!-- 1. id (必须配置)id是命名空间中的唯⼀标识符,可被⽤来代表这条语句。
⼀个命名空间(namespace)对应⼀个dao接⼝,这个id也应该对应dao⾥⾯的某个⽅法(相当于⽅法的实现),因此id 应该与⽅法名⼀致 -->id="insertUser"<!-- 2. parameterType (可选配置, 默认为mybatis⾃动选择处理)将要传⼊语句的参数的完全限定类名或别名,如果不配置,mybatis会通过ParameterHandler 根据参数类型默认选择合适的typeHandler进⾏处理parameterType 主要指定参数类型,可以是int, short, long, string等类型,也可以是复杂类型(如对象) -->parameterType="er"<!-- 3. flushCache (可选配置,默认配置为true)将其设置为 true,任何时候只要语句被调⽤,都会导致本地缓存和⼆级缓存都会被清空,默认值:true(对应插⼊、更新和删除语句) -->flushCache="true"<!-- 4. statementType (可选配置,默认配置为PREPARED)STATEMENT,PREPARED 或 CALLABLE 的⼀个。
【Mybatis】Mybatis配置文件中mappers标签引入映射器的四种方式
![【Mybatis】Mybatis配置文件中mappers标签引入映射器的四种方式](https://img.taocdn.com/s3/m/5f6af3fbf71fb7360b4c2e3f5727a5e9856a27ed.png)
【Mybatis】Mybatis配置⽂件中mappers标签引⼊映射器的四种⽅式第⼀种⽅式:mapper标签,通过resource属性引⼊classpath路径的相对资源<mappers><mapper resource="org/mybatis/builder/AuthorMapper.xml"/><mapper resource="org/mybatis/builder/BlogMapper.xml"/><mapper resource="org/mybatis/builder/PostMapper.xml"/></mappers>第⼆种⽅式:mapper标签,通过url引⼊⽹络资源或者本地磁盘资源<mappers><mapper url="file:///var/mappers/AuthorMapper.xml"/><mapper url="file:///var/mappers/BlogMapper.xml"/><mapper url="file:///var/mappers/PostMapper.xml"/></mappers>第三种⽅式:mapper标签,通过class属性指定mapper接⼝名称,此时对应的映射⽂件必须与接⼝位于同⼀路径下,并且名称相同如mapper接⼝采⽤注解的⽅式,则⽆需映射⽂件<mappers><mapper class="org.mybatis.builder.AuthorMapper"/><mapper class="org.mybatis.builder.BlogMapper"/><mapper class="org.mybatis.builder.PostMapper"/></mappers>第四种⽅式:package标签,通过name属性指定mapper接⼝所在的包名,此时对应的映射⽂件必须与接⼝位于同⼀路径下,并且名称相同如mapper接⼝采⽤注解的⽅式,则⽆需映射⽂件<mappers><package name="org.mybatis.builder"/></mappers>。
mybatis主键自增的写法
![mybatis主键自增的写法](https://img.taocdn.com/s3/m/551e8101b5daa58da0116c175f0e7cd18425183d.png)
mybatis主键自增的写法Mybatis是一种流行的Java ORM框架,开发者可以通过Mybatis轻松地与各种类型的数据库进行交互。
在使用Mybatis时,需要在Java类中定义数据表实体,其中包括数据表中的主键。
本文将讨论如何使用Mybatis来处理主键自增的写法。
1. 配置映射文件在Mybatis中,使用映射文件来映射Java类和数据库表之间的对应关系。
在映射文件中,可以定义SQL语句来执行各种操作。
在进行数据插入操作时,需要指定主键自增。
下面是一个样例`insert`语句的映射定义:```<insert id="addUser" parameterType="User">INSERT INTO users (name, age, gender)VALUES (#{name},#{age},#{gender})<selectKey resultType="ng.Integer" keyProperty="id" order="AFTER">SELECT LAST_INSERT_ID() AS id</selectKey></insert>```在该映射文件中,`INSERT INTO`语句用于将数据插入到数据库中。
`selectKey`定义了一个用于获取刚刚插入到数据库的主键值的SQL语句。
`keyProperty`指定了获取到的主键值存储在Java类中的哪个属性中。
`order`属性指定了获取主键值应该发生的时间,可以是`BEFORE`或`AFTER`,`AFTER`表示在`INSERT`语句执行后获取主键值。
2. 配置数据库Mybatis需要知道主键列是如何自增的。
在MySQL中,可以通过定义`AUTO_INCREMENT`来实现主键自增。
- 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). 你可以重写类型处理器或创建你自己的类型处理器来处理不支持的或非标准的类型。