MyBatis学习之路(基本配置)

 1.MyBatis简介

MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的JDBC代码、手工设置参数和结果集重获。MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录。

2.setting配置

设置项

描述

允许值

默认值

cacheEnabled

对在此配置文件下的所有cache 进行全局性开/关设置。

true | false

true

lazyLoadingEnabled

全局性设置懒加载。如果设为‘false’,则所有相关联的都会被初始化加载。

true | false

true

aggressiveLazyLoading

当设置为‘true’的时候,懒加载的对象可能被任何懒属性全部加载。否则,每个属性都按需加载。

true | false

true

multipleResultSetsEnabled

允许和不允许单条语句返回多个数据集(取决于驱动需求)

true | false

true

useColumnLabel

使用列标签代替列名称。不同的驱动器有不同的作法。参考一下驱动器文档,或者用这两个不同的选项进行测试一下。

true | false

true

useGeneratedKeys

允许JDBC 生成主键。需要驱动器支持。如果设为了true,这个设置将强制使用被生成的主键,有一些驱动器不兼容不过仍然可以执行。

true | false

false

autoMappingBehavior

指定MyBatis 是否并且如何来自动映射数据表字段与对象的属性。PARTIAL将只自动映射简单的,没有嵌套的结果。FULL 将自动映射所有复杂的结果。

NONE,

PARTIAL,

FULL

PARTIAL

defaultExecutorType

配置和设定执行器,SIMPLE 执行器执行其它语句。REUSE 执行器可能重复使用prepared statements 语句,BATCH执行器可以重复执行语句和批量更新。

SIMPLE

REUSE

BATCH

SIMPLE

defaultStatementTimeout

设置一个时限,以决定让驱动器等待数据库回应的多长时间为超时

正整数

Not Set

(null)

例子:

<settings>
		<setting name="cacheEnabled" value="true" />
		<setting name="lazyLoadingEnabled" value="false" />
		<setting name="aggressiveLazyLoading" value="true" />
		<setting name="multipleResultSetsEnabled" value="false" />
		<setting name="useColumnLabel" value="true" />
		<setting name="useGeneratedKeys" value="true" />
		<setting name="autoMappingBehavior" value="FULL" />
		<setting name="defaultExecutorType" value="BATCH" />
		<setting name="defaultStatementTimeout" value="25000" />
	</settings>

3.基本配置元素

     cache – 配置给定模式的缓存

     cache-ref – 从别的模式中引用一个缓存

     resultMap – 这是最复杂而却强大的一个元素了,它描述如何从结果集中加载对象

     sql – 一个可以被其他语句复用的SQL 块

     insert – 映射INSERT 语句

     update – 映射UPDATE 语句

     delete – 映射DELEETE 语句

     select - 映射SELECT语句

4.简单配置示例

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.accp.mybatis.model.Blog">
	
	<!--可重用的SQL代码段-->
	<sql id="blog_column">id,title,author_id as authorId</sql>
	
	<select id="selectBlog_as_map" parameterType="int" resultType="hashmap">
		select <include refid="blog_column"/> from Blog where id = #{id}
	</select>

	<insert id="insertBlog" parameterType="Blog">
		insert into Blog
			(id,title,author_id)
		values
			(#{id},#{title},#{authorId})
	</insert>

        <insert id="insertBlog" parameterType="Blog" >
		<selectKey keyProperty="studentID" resultType="String" order="BEFORE">  
           select nextval('id')  
		</selectKey>  
		insert into Blog
			(id,title,author_id)
		values
			(#{id},#{title},#{authorId})
	</insert>
        
        <update id="updateBlog" parameterType="Blog">  
         UPDATE Blog  
            SET title = #{title},   
                author_id = #{author.id},  
         WHERE id = #{id};
	</update>  

        <delete id="deleteBlog" parameterType="Blog">  
           DELETE FROM BLOG WHERE ID = #{id}  
        </delete>
</mapper>

猜你喜欢

转载自ren7753366.iteye.com/blog/2270293
今日推荐