1.通过Student.xml编写sql来操作数据库

  1>insert语句插入后返回主键

    加入标签useGeneratedKeys=“true” keyProperty=“oid” 中 keyProperty为主键id名

  2>基本的sql语法,和数据的封装

2.单条件查询和多条件查询

  1>单条件查询

  Student selectByCid(Integer id)
 <select id="selectByCid" resultType="student">
SELECT * FROM Student WHERE cid=#{param1}
</select>

  2>多条件查询

  Student selectByIdAndName(Integer id,String name);
<select id="selectByIdAndName" resultType="student">
SELECT * FROM student WHERE id=#{param1} AND name=#{param2}
</select>

3.一对一查询和一对多查询

  1>一对一查询

<resultMap id="orderMap" type="ClassBo">
<!--主键名-->
<id property="cid" column="cid"></id>
<result column="cname" property="cname"></result>
<result column="capacity" property="capacity"></result>
<!--property:一对一的对象名 必须是一个对象 不能是集合 javaType:对象的类型 -->
<association property="student" javaType="student">
<id property="id" column="id"></id>
<result column="name" property="name"></result>
<result column="hobby" property="hobby"></result>
<result column="gender" property="gender"></result>
<result column="cid" property="cid"></result>
</association>
</resultMap> <select id="findAll" resultMap="orderMap">
SELECT * FROM class c,student s WHERE c.cid = s.cid;
</select>

  2>一对多查询

<resultMap id="selectAllClassAndStudent" type="ClassBo">
<id property="cid" column="cid"></id>
<result property="cname" column="cname"></result>
<result property="capacity" column="capacity"></result>
<!--property:一对多的对象名 必须是集合 javaType:集合的类型 select:每次查询都会执行select的语句 column:执行sql需要的参数 -->
<collection property="students" ofType="student" select="com.hdh.dao.StudentMapper.selectByCid"
column="cid"></collection>
</resultMap>
<select id="selectAllClassAndStudent" resultMap="selectAllClassAndStudent">
SELECT * FROM class
</select>

4.插入一条数据并返回插入数据的主键

keyProperty:主键名称
 <insert id="insert" parameterType="com.hdh.domain.Student" useGeneratedKeys="true" keyProperty="id" >
insert into student (id, name, hobby,
gender, cid)
values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{hobby,jdbcType=VARCHAR},
#{gender,jdbcType=VARCHAR}, #{cid,jdbcType=INTEGER})
</insert>

5.mybatis的<Setting>配置

配置项 作用 配置选项 默认值
cacheEnabled 该配置影响所有映射器中配置缓存的全局开关(二级缓存) true|false true
lazyLoadingEnabled 延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。在特定关联关系中可通过设置 fetchType 属性来覆盖该项的开关状态  true|false false
aggressiveLazyLoading 当启用时,对任意延迟属性的调用会使带有延迟加载属性的对象完整加载;反之,每种属性将会按需加载 true|felse 版本3.4.1 (不包含)
之前 true,之后 false
multipleResultSetsEnabled  是否允许单一语句返回多结果集(需要兼容驱动) true|false true
useColumnLabel 使用列标签代替列名。不同的驱动会有不同的表现,具体可参考相关驱动文档或通过测试这两种不同的模式来观察所用驱动的结果 true|false true
useGeneratedKeys 允许JDBC 支持自动生成主键,需要驱动兼容。如果设置为 true,则这个设置强制使用自动生成主键,尽管一些驱动不能兼容但仍可正常工作(比如 Derby) true|false false
autoMappingBehavior 指定 MyBatis 应如何自动映射列到字段或属性。
NONE 表示取消自动映射。
PARTIAL 表示只会自动映射,没有定义嵌套结果集和映射结果集。
FULL 会自动映射任意复杂的结果集(无论是否嵌套)
NONE、PARTIAL、FULL PARTIAL
autoMappingUnkno wnColumnBehavior 指定自动映射当中未知列(或未知属性类型)时的行为。 默认是不处理,只有当日志级别达到 WARN 级别或者以下,才会显示相关日志,如果处理失败会抛出 SqlSessionException 异常 NONE、WARNING、FAILING NONE
defaultExecutorType 配置默认的执行器。SIMPLE 是普通的执行器;REUSE 会重用预处理语句(prepared statements);BATCH 执行器将重用语句并执行批量更新  SIMPLE、REUSE、BATCH SIMPLE
defaultStatementTimeout 设置超时时间,它决定驱动等待数据库响应的秒数 任何正整数 Not Set (null)
defaultFetchSize 设置数据库驱动程序默认返回的条数限制,此参数可以重新设置 任何正整数   Not Set (null)
safeRowBoundsEnabled 允许在嵌套语句中使用分页(RowBounds)。如果允许,设置 false true|false false
safeResultHandlerEnabled 允许在嵌套语句中使用分页(ResultHandler)。如果允许,设置false true|false true
mapUnderscoreToCamelCase 是否开启自动驼峰命名规则映射,即从经典数据库列名 A_COLUMN 到经典 Java 属性名 aColumn 的类似映射 true|false false
localCacheScope
MyBatis 利用本地缓存机制(Local Cache)防止循环引用(circular references)和加速联复嵌套査询。
默认值为 SESSION,这种情况下会缓存一个会话中执行的所有查询。若设置值为 STATEMENT,本地会话仅用在语句执行上,对相同 SqlScssion 的不同调用将不会共享数据  
SESSION|STATEMENT SESSION
jdbcTypeForNull
当没有为参数提供特定的 JDBC 类型时,为空值指定 JDBC 类型。某些驱动需要指定列的 JDBC 类型,多数情况直接用一般类型即可,比如 NULL、VARCHAR 或 OTHER NULL、VARCHAR、OTHER   OTHER
lazyLoadTriggerMethods
指定哪个对象的方法触发一次延迟加载 equals、clone、hashCode、toString
defaultScriptingLanguage
指定动态 SQL 生成的默认语言 org.apache.ibatis
.script.ing.xmltags
.XMLDynamicLanguageDriver
callSettersOnNulls
指定当结果集中值为 null 时,是否调用映射对象的 setter(map 对象时为 put)方法,这对于 Map.kcySet() 依赖或 null 值初始化时是有用的。注意,基本类型(int、boolean 等)不能设置成 null true|false false
logPrefix
指定 MyBatis 增加到日志名称的前缀  任何字符串 Not set
loglmpl
指定 MyBatis 所用日志的具体实现,未指定时将自动査找 SLF4J|LOG4J|LOG4J2|JDK_LOGGING
|COMMONS_LOGGING
|ST DOUT_LOGGING|NO_LOGGING
Not set
proxyFactory 指定 MyBatis 创建具有延迟加栽能力的对象所用到的代理工具 CGLIB|JAVASSIST JAVASSIST (MyBatis 版本为 3.3 及以上的)
vfsImpl 指定 VFS 的实现类   提供 VFS 类的全限定名,如果存在多个,可以使用逗号分隔  Not set
useActualParamName 允许用方法参数中声明的实际名称引用参数。要使用此功能,项目必须被编译为 Java 8 参数的选择。(从版本 3.4.1 开始可以使用) true|false true

6.Mybatis中的一级缓存和二级缓存

1> 一级缓存:
            它指的是Mybatis中SqlSession对象的缓存。
            当我们执行查询之后,查询的结果会同时存入到SqlSession为我们提供一块区域中。
            该区域的结构是一个Map。当我们再次查询同样的数据,mybatis会先去sqlsession中
            查询是否有,有的话直接拿出来用。
            当SqlSession对象消失时,mybatis的一级缓存也就消失了。

2>二级缓存:
            它指的是Mybatis中SqlSessionFactory对象的缓存。由同一个SqlSessionFactory对象创建的SqlSession共享其缓存。
            二级缓存的使用步骤:
                第一步:让Mybatis框架支持二级缓存(在SqlMapConfig.xml中配置)

<--默认是true不需要配置-->
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>

第二步:让当前的映射文件支持二级缓存(在IUserDao.xml中配置)

<!--开启user支持二级缓存 -->
<cache></cache>

第三步:让当前的操作支持二级缓存(在select标签中配置)

<select id="testCheckById" resultType="user" parameterType="int" useCache="true">

TZ_03_mybatis的xml开发的更多相关文章

  1. Spring_IoC注解开发和AOP的XML开发(学习笔记2)

    一:IoC注解开发 1,在applicationContext.xml中需要引入context约束 <beans xmlns="http://www.springframework.o ...

  2. TZ_05_Spring_事物的xml开发和annotation开发

    1.Spring_事物的xml开发 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=& ...

  3. 使用Kotlin&Anko, 扔掉XML开发Android应用

    尝鲜使用Kotlin写了一段时间Android.说大幅度的减少了Java代码一点不夸张.用Java的时候动不动就new一个OnClickListener()匿名类,动不动就类型转换的地方都可以省下很多 ...

  4. 使用libxml2进行xml开发(一)

    (一)Windows下使用MinGW和Code::Blocks环境配置libxml2 笔者此次是在windows 7下使用MinGW和Code::Blocks开发C程式的,手上的一个项目需要使用soc ...

  5. C#序列化xml,开发常用

    序列化操作对于开发人员来说最熟悉不过了. 序列化分为:序列化和反序列化. 序列化名词解释:序列化是将对象状态转换为可保持或传输的格式的过程. 与序列化相对的是反序列化,它将流转换为对象.这两个过程结合 ...

  6. Spring中AOP的基于xml开发和配置

    pom文件: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http ...

  7. android开发中eclipse里xml开发的自动提示和使用帮助快捷键提示

    Eclipse Android 代码自动提示功能 Eclipse for android 设置代码提示功能 打 开 Eclipse 依次选择 Window > Preferences > ...

  8. MFC使用自带的MSXML6.dll解析xml(开发环境vc2010)

    程序是win32控制台程序 // msxml.cpp : 定义控制台应用程序的入口点. #include "stdafx.h" #include <iostream> ...

  9. TZ_03_mybatis的注解开发

    1.一对多的注解开发 1>需求通过查询所有的用户,并且找到该用户的所有账户(使用延迟加载模式) @Select("select * from user") //sql语句查询 ...

随机推荐

  1. .NETFramework:template

    ylbtech-.NETFramework: 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部     6.返回顶部   作者:ylbtech出处:http://y ...

  2. 几个 GetHashCode 函数

    几个 GetHashCode 函数: DBTables.pas Delphi/Pascal code   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...

  3. jquery判断是pc端还是移动端

    原文地址:https://www.cnblogs.com/mo-cha/p/6038872.html $(function(){ var system = { win: false, mac: fal ...

  4. HDU-1423-Greatest Common Increasing Subsequence-最长公共上升子序列【模版】

    This is a problem from ZOJ 2432.To make it easyer,you just need output the length of the subsequence ...

  5. java获取服务器路径

    java获取服务器一些信息的方法(服务器地址/相对路径/端口/项目名字 request.getServletContext().getRealPath("/")  获取项目所在服务 ...

  6. 开发环境、测试环境、生产环境、UAT环境、仿真环境详解

    版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/WYX15011474269/article ...

  7. Cmd使用方式--命令行运行程序

    工具用惯却不知道如何去描述什么用,总感觉自己学东西用东西零零散散不系统,心虚!下面总结下自己使用cmd的几种方式. 1 => cmd,command,是window系统下命令提示符,是一种com ...

  8. http及浏览器相关知识点归纳

    http是应用层协议,采用请求/响应模型 1.浏览器地址栏输入URL地址后发生了什么? 浏览器判断地址是否是合理的URL地址,是否是http协议请求,如果是则进入下一步 浏览器对此URL进行缓存检查: ...

  9. Node中的模块系统

    加载require var 自定义变量名称 = require('模块') 两个作用: 执行被加载模块的代码 得到被加载模块中的exports导出接口对象 导出exports node中是模块作用域, ...

  10. Codeforces 839D Winter is here

    链接:CF839D 题目大意 给定一个数组大小为\(n(1\leq n\leq 200000)\)的数组\(a\),满足\(1\leq a_i \leq 1000000\). 选择其中任意\(len\ ...