Mybatis主配置文件常见使用讲解
在开发中我们通常将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主配置文件常见使用讲解的更多相关文章
- 四、MyBatis主配置文件
//备注:该博客引自:http://limingnihao.iteye.com/blog/1060764 在定义sqlSessionFactory时需要指定MyBatis主配置文件: Xml代码 收藏 ...
- mybatis 学习六 MyBatis主配置文件
在定义sqlSessionFactory时需要指定MyBatis主配置文件: <bean id="sqlSessionFactory" class="org.myb ...
- MyBatis主配置文件(转载)
原文地址:http://limingnihao.iteye.com/blog/1060764 其中高亮字体是我的理解. 在定义sqlSessionFactory时需要指定MyBatis主配置文件: X ...
- MyBatis主配置文件
MyBatis的使用非常简单,使用流程整体可以分成以下四步: public class UserDaoTest { private SqlSessionFactory sqlSessionFactor ...
- mybatis主配置文件详解
mybatis主配置文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configur ...
- Mybatis主配置文件配置url报错:Cause: org.xml.sax.SAXParseException; lineNumber: 15; columnNumber: 100; 对实体 "useSSL" 的引用必须以 ';' 分隔符结尾。
<property name="url" value="jdbc:mysql://localhost:3306/shop?characterEncoding=UTF ...
- Could not find resource mybatis.xml 找不到mybatis主配置文件的三种解决方式
第一种:先清除target目录 再重新compile编译 第二种:让idea重构项目 第三种 :手动添加到target目录下的classes包下
- JavaWeb_(Mybatis框架)主配置文件介绍_四
系列博文: JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一 传送门 JavaWeb_(Mybatis框架)使用Mybatis对表进行增.删.改.查操作_ ...
- Mybatis笔记五:Mybatis的全局配置文件Configuration.xml讲解
从 XML 中构建 SqlSessionFactory 每个基于Mybatis应用都是以一个SqlSessionFactory实例为中心.SqlSessionFactory实例可以由SqlSessio ...
随机推荐
- Java基础入门知识
Java编程入门知识 知识概要: (1)Java入门基本常识 (2)Java的特性跨平台性 (3)Java的编程环境的搭建 (4)Java的运行机制 (5)第一个Java小程序入门 (1)Java ...
- DevOps之软件定义网络SDN
唠叨话 关于德语噢屁事的知识点,仅提供专业性的精华汇总,具体知识点细节,参考教程网址,如需帮助,请留言. <软件定义网络SDN(Software Defined Network)> 关于软 ...
- 聊聊VUE中的nextTick
在谈nextTick之前,先要说明一件事,可能在我们平时使用vue时并没有关注到,事实上,vue执行的DOM更新是异步的. 举个栗子: <template> <div class=& ...
- WPF DelegateCommand 出现Specified cast is not valid
使用 DelegateCommand 出现 Specified cast is not valid 最近写快捷键需要 DelegateCommand ,于是用了 DelegateCommand< ...
- 张高兴的 Windows 10 IoT 开发笔记:DHT11 温湿度传感器
GitHub : https://github.com/ZhangGaoxing/windows-iot-demo/tree/master/DHT11Demo
- 使用getCurrentPosition方法实时获取当前Geolocation信息(赋源码文件)--html5、JavaScript
使用getCurrentPosition方法实时获取当前Geolocation信息: 1.typeof 运算符返回一个用来表示表达式的数据类型的字符串 <script> alert(typ ...
- 安装阿里Java代码规约插件
概述 2017年10月14日杭州云栖大会,Java代码规约扫描插件全球首发仪式正式启动,规范正式以插件形式公开走向业界,引领Java语言的规范之路.目前,插件已在云效公有云产品中集成,立即体验!(云效 ...
- 【转】IO流程
原文地址:http://blog.chinaunix.net/uid-26922071-id-3954900.html IO之流程与buffer概览 为了说明这个流程,还是用图来描述一下比较直观. ...
- 【前端】javascript实现导航栏筋斗云效果特效
实现效果: 实现效果如下图所示 实现原理: 什么是筋斗云效果: 这个效果很简单,就是鼠标移到其他导航目录时会有背景图片跟着鼠标滑动到当前的目录. 实现思路: 鼠标经过的时候,利用offsetLeft获 ...
- oracle数据库无监听程序
在电脑---服务---启动oracle tns 如果还是出现错误的话,找到Net Manager,将网络的ip监听删除,将本机的主机名配好,即可打开tns服务