在开发中我们通常将Mybatis中配置文件分两种,主配置文件与和dao对应的映射文件。

其实最后mybatis解析的还是一个主配置文件。

而映射文件会通过我们配置<mappers>属性,或指定扫描路径,将映射文件导入主配置文件,最后一起解析。

下面是主配置文件常见使用讲解:

Mybatis中properties文件的引入

properties导入后可以将可能会改变的属性放在单独的文件,例如连接数据时的账号密码等,方便管理,

在mybatis中使用properties标签,如下,resource是类路径,url是网络路径或磁盘路径资源

<properties resource="org/mybatis/example/config.properties">
</properties>

导入后就可以用${}进行属性引用,如配置dataSource的几个属性

<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>

Mybatis中<setting>的使用

格式

<settings>
<setting name="mapUnderscoreToCamelCase" value="false"/>
</settings>

mapUnderscoreToCamelCase配置后查询时会自动将数据表的_命名格式转换成驼峰命名,然后对实体bean进行注入。如user_name会转成userName;

Mybatis中<mappers>的使用

mappers用作指定要映射文件的位置

使用格式

<mappers>
<mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
<mapper resource="org/mybatis/builder/BlogMapper.xml"/>
<mapper resource="org/mybatis/builder/PostMapper.xml"/>
</mappers>

Mapper可以添加resource 、URL 、class属性

Resource:指定类路径的xml文件

URL:从网络获取xml文件

如何将映射xml文件与dao接口建立对应关系

方式一、将xml和接口类放在同一目录下,直接指定接口类的全限类名

方式二、基于注解的接口类

推荐: 重要Dao接口需要写SQL映射文件

不重要,简单的Dao接口使用注解

<package>批量注册 name属性指定包名 自动扫描包内的xml文件

如何在添加数据后让方法返回这条数据的id

在<intsert >中添加useGeneratedKeys="true" keyProperty="" 两个属性

keyProperty指定将id注入Bean的哪个属性

Oracle不支持自增,id是从序列中拿到,然后插入到数据表

可以在<insert>查询语句前添加<selectKey keyProperty=”id” order=”before”>标签

从序列中获取一个id : select EMPLOYEES_SQL.nextval from dual ,然后注入到bean的id中

然后再查询填充其他数据。

 

参数的传递

当只传一个参数时,#{paramName},paramName可以随便命名

当传入多个参数时,会被封装成一个map

Key :param1,param2,...paramN;或1,2....N

Value :真实值

所以需要使用#{param1}或#{1}

如果想简单化

方法一、可以在Dao的方法参数添加@Param注解,自定义Key的值

方法二、如果参数时业务逻辑的数据模型,可以传入POJO,这样可以用#{attrName}获取

方法三、如果参数不是业务逻辑模型数据,可以传入MAP,这样可以用#{keyName}获取

方法四、如果多个参数不是业务模型数据,但要经常使用,可以编写TO(Transfer Object)数据传输对象

Page{

Int index;

Int size;

}

如果传入的的是collection(List,Set)类型或数组,会被特殊处理

Key=Collection(collection) 或者List(list)

关于取值符号#{}

#{}和${}都可以进行取值

区别:

#{}:以预编译的形式(可以防止SQL注入),将参数设置到SQL语句中,PrepareStatement

${}:取出的值直接拼装到SQL语句中

大多情况下取参数使用#{}

原生jdbc不支持占位符的地方可以使用${}进行取值

例如:使用分表,按年份拆表

Select * from ${tableName};

#{}:更丰富的用法

规定参数规则

JavaType、jdbcType、mode(存储过程)、numericScale、

resultMap、typeHandler、jdbcTypeName、expression(未来准备支持的功能)

jdbcType通常需要在某种特定的条件下被设置;

在我们数据为null的时候,有些数据库可能不能识别mybatis对null的默认处理。如Oracle

报错JdbcType OtherType:无效类型。

因为mybatis对所有NULL映射的都是原生Jdbc的OtherType类型

解决方法:

1、#{email,jdbcType=OTHER};

2、jdbcTypeForNull=NULL

Mybatis主配置文件常见使用讲解的更多相关文章

  1. 四、MyBatis主配置文件

    //备注:该博客引自:http://limingnihao.iteye.com/blog/1060764 在定义sqlSessionFactory时需要指定MyBatis主配置文件: Xml代码 收藏 ...

  2. mybatis 学习六 MyBatis主配置文件

    在定义sqlSessionFactory时需要指定MyBatis主配置文件: <bean id="sqlSessionFactory" class="org.myb ...

  3. MyBatis主配置文件(转载)

    原文地址:http://limingnihao.iteye.com/blog/1060764 其中高亮字体是我的理解. 在定义sqlSessionFactory时需要指定MyBatis主配置文件: X ...

  4. MyBatis主配置文件

    MyBatis的使用非常简单,使用流程整体可以分成以下四步: public class UserDaoTest { private SqlSessionFactory sqlSessionFactor ...

  5. mybatis主配置文件详解

    mybatis主配置文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configur ...

  6. Mybatis主配置文件配置url报错:Cause: org.xml.sax.SAXParseException; lineNumber: 15; columnNumber: 100; 对实体 "useSSL" 的引用必须以 ';' 分隔符结尾。

    <property name="url" value="jdbc:mysql://localhost:3306/shop?characterEncoding=UTF ...

  7. Could not find resource mybatis.xml 找不到mybatis主配置文件的三种解决方式

    第一种:先清除target目录 再重新compile编译 第二种:让idea重构项目 第三种 :手动添加到target目录下的classes包下

  8. JavaWeb_(Mybatis框架)主配置文件介绍_四

    系列博文: JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一 传送门 JavaWeb_(Mybatis框架)使用Mybatis对表进行增.删.改.查操作_ ...

  9. Mybatis笔记五:Mybatis的全局配置文件Configuration.xml讲解

    从 XML 中构建 SqlSessionFactory 每个基于Mybatis应用都是以一个SqlSessionFactory实例为中心.SqlSessionFactory实例可以由SqlSessio ...

随机推荐

  1. 委托、事件、Observer观察者模式的使用解析一

    一.前言 委托.事件得理论我就不解释了,不会的时候觉得很难,会了发现挺简单的,回头想想其实在JavaScript中常常用到,譬如:setTimeout()就是典型的委托. 二.传统编码方式 传统的调用 ...

  2. 提纲挈领webrtc之NS(noise suppression)模块

    Noise suppression,就是大家说的降噪.这种降噪是把人声和非人声区分开来,把非人声当成噪声. 一段包含人声和噪声的音频经过该模块处理,从理论上讲,只剩下人声了. webrtc的NS在业内 ...

  3. topN 算法 以及 逆算法(随笔)

    topN 算法 以及 逆算法(随笔) 注解:所谓的 topN 算法指的是 在 海量的数据中进行排序从而活动 前 N 的数据. 这就是所谓的 topN 算法.当然你可以说我就 sort 一下 排序完了直 ...

  4. jquery各种事件使用方法总结(from:天宇之游)

    ps:本博客转自博主  天宇之游 ,地址:http://www.cnblogs.com/cwp-bg/  ,再次感谢天宇之游.jquery事件使用方法总结 一.鼠标事件1. click():鼠标单击事 ...

  5. JavaScript--我发现,原来你是这样的JS(四)(看看变量,作用域,垃圾回收机制是啥)

    一.介绍 这是红宝书(JavaScript高级程序设计 3版)的读书笔记第四篇,是红宝书第四章内容(主要是变量和作用域问题),当然其中还有我个人的理解.红宝书这本书可以说是难啃的,要看完不容易,挺厚的 ...

  6. checkValidity-表达验证方法。

    调用该方法,可以显示对表单元素进行有效验证,返回值是boolean. 代码如下: <!DOCTYPE html> <html> <head> <meta ch ...

  7. 反射型 DDoS 攻击的原理和防范措施

    随着僵尸网络的兴起,同时由于攻击方法简单.影响较大.难以追查等特点,分布式拒绝服务攻击(DDoS,Distributed Denial of Service)得到快速壮大和日益泛滥. 成千上万主机组成 ...

  8. Android Stuido 提高开发效率的插件

    好久没有更新博客了,最近搞个listview搞得半死不活的,心累~~ 今天带来的是Android Studio插件的整理,全是我已经安装使用的,写这篇博文的目的也是因为我怕我自己给忘记怎么用(尴尬) ...

  9. 【转】CPU与内存的那些事

    下面是网上看到的一些关于内存和CPU方面的一些很不错的文章. 整理如下: 转: CPU的等待有多久? 原文标题:What Your Computer Does While You Wait 原文地址: ...

  10. 461. Hamming Distance(leetcode)

    The Hamming distance between two integers is the number of positions at which the corresponding bits ...