Mybatis_映射文件配置
获取自增主键的值
若数据库支持自动生成主键的字段(比如 MySQL 和 SQL Server),则可以设置 useGeneratedKeys=”true”,然后再把 keyProperty 设置到目标属性上。
<insert id="addEmp" useGeneratedKeys="true" keyProperty="id">
insert into tbl_employee (last_name,email,gender)
VALUES (#{lastName},#{email},#{gender})
</insert>
sql语句执行完成后,Mybatis会把插入生成的主键封装到该bean对象中。
//测试添加
Employee employee = new Employee("tom@nchu.com", "0", null, "tom");
mapper.addEmp(employee);
System.out.print(employee.getId());
参数处理
①.单个参数:mybatis不会做特殊处理,#{参数名/任意名}:取出参数值。
②.多个参数:mybatis会做特殊处理。多个参数会被封装成 一个map
key:param1...paramN,或者参数的索引也可以
value:传入的参数值
#{}就是从map中获取指定的key的值;
操作:
方法:public Employee getEmpByIdAndLastName(Integer id,String lastName);
取值:#{id},#{lastName}
异常:
org.apache.ibatis.binding.BindingException:
Parameter 'id' not found.
Available parameters are [1, 0, param1, param2]
正确的取值方式:
<select id="getEmpByIdAndLastName" resultType="com.nuch.edu.domain.Employee">
SELECT * FROM tbl_employee
WHERE id=#{param1} and last_name=#{param2}
</select>
③.【命名参数】:明确指定封装参数时map的key
import org.apache.ibatis.annotations.Param;
public Employee getEmpByIdAndLastName(@Param("id")Integer id,@Param("lastName")String lastName);
多个参数会被封装成 一个map
key:使用@Param注解指定的值
value:参数值
#{指定的key}取出对应的参数值
<select id="getEmpByIdAndLastName" resultType="com.nuch.edu.domain.Employee">
SELECT * FROM tbl_employee
WHERE id=#{id} and last_name=#{lastName}
</select>
④.POJO:如果多个参数正好是我们业务逻辑的数据模型,我们就可以直接传入pojo;#{属性名}:取出传入的pojo的属性值
⑤.Map:如果多个参数不是业务模型中的数据,没有对应的pojo,不经常使用,为了方便,我们也可以传入map;#{key}:取出map中对应的值
public Employee getEmpByMap(Map<String,Object> map);
<select id="getEmpByMap" resultType="com.nuch.edu.domain.Employee">
SELECT * FROM tbl_employee
WHERE id=#{id} and last_name=#{lastName}
</select>
Map<String,Object> map = new HashMap<>();
map.put("id",3);
map.put("lastName","jerry");
Employee jerry = mapper.getEmpByMap(map);
⑥.TO:如果多个参数不是业务模型中的数据,但是经常要使用,推荐来编写一个TO(Transfer Object)数据传输对象
Page{
int index;
int size;
}
#{}和${}
#{key}:获取参数的值,预编译到SQL中。安全。
${key}:获取参数的值,拼接到SQL中。有SQL注入问 题。原生jdbc不支持占位符的地方我们就可以使用${}进行取值。
有时我们只是想直接在 SQL 语句中插入一个不改变的字符串
ORDER BY ${columnName}
#{}更丰富的用法:
规定参数的一些规则:
javaType、 jdbcType、 mode(存储过程)、 numericScale、
resultMap、 typeHandler、 jdbcTypeName;
jdbcType通常需要在某种特定的条件下被设置:在我们数据为null的时候,有些数据库可能不能识别mybatis对null的默认处理。比如Oracle(报错);因为mybatis对所有的null都映射的是原生Jdbc的OTHER类型,oracle不能正确处理。
全局配置中默认:jdbcTypeForNull=OTHER;
1、#{email,jdbcType=NULL};
2、jdbcTypeForNull=NULL
<setting name="jdbcTypeForNull" value="NULL"/>
Mybatis_映射文件配置的更多相关文章
- 深入浅出Mybatis系列(八)---mapper映射文件配置之select、resultMap
上篇<深入浅出Mybatis系列(七)---mapper映射文件配置之insert.update.delete>介绍了insert.update.delete的用法,本篇将介绍select ...
- 咱就入个门之NHibernate映射文件配置(二)
上一篇主要介绍了NHibernate映射文件的基础配置,这篇我们介绍下NHibernate的一对多及多对一配置(文中我直接使用双向关联,即一和多两端都配置,开发中可以只使用一端),同时略带介绍下NHi ...
- 咱就入个门之NHibernate映射文件配置(一)
之前写了数据库连接配置,这次说说映射文件的配置,即表映射[ORM的核心就是此啦!]. 下面我们使用最原始的手动配置hbm.xml文件. 步骤: 1.添加People类 namespace NHiber ...
- 深入浅出Mybatis系列(八)---mapper映射文件配置之select、resultMap good
上篇<深入浅出Mybatis系列(七)---mapper映射文件配置之insert.update.delete>介绍了insert.update.delete的用法,本篇将介绍select ...
- 深入浅出Mybatis系列(八)---mapper映射文件配置之select、resultMap[转]
上篇<深入浅出Mybatis系列(七)---mapper映射文件配置之insert.update.delete>介绍了insert.update.delete的用法,本篇将介绍select ...
- 深入浅出Mybatis系列八-mapper映射文件配置之select、resultMap
注:本文转载自南轲梦 注:博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 上篇<深入浅出Mybatis系列(七)---mapper映射文件配置之inse ...
- Hibernate的映射文件配置
对象关系的映射是用一个XML文档来说明的.映射文档可以使用工具来生成,如XDoclet,Middlegen和AndroMDA等.下面从一个映射的例子开始讲解映射元素,映射文件的代码如下: <?x ...
- 深入浅出Mybatis系列(七)---mapper映射文件配置之insert、update、delete
上篇文章<深入浅出Mybatis系列(六)---objectFactory.plugins.mappers简介与配置>简单地给mybatis的配置画上了一个句号.那么从本篇文章开始,将会介 ...
- NHibernate之映射文件配置说
1. hibernate-mapping 这个元素包括以下可选的属性.schema属性,指明了这个映射所引用的表所在的schema名称.假若指定了这个属性, 表名会加上所指定的schema的名字扩展为 ...
随机推荐
- 【精品分享一】JAVA 精品图书高清PDF下载
更多图书尽在第一云教育book.1eduyun.com JAVA核心技术卷2:高级特征(原书第8版) JAVA软件开发从新手到高手(Java从入门到精通(第3版)+Java项目开发全程实录(第3版)) ...
- ORA-12541:无监听错误解决办法
http://jingyan.baidu.com/article/03b2f78c7a0ab75ea237ae33.html 1. 从开始菜单中打开“Oracle Net Configuratio ...
- Ubantu下安装FTP服务器
在Linux中ftp服务器的全名叫 vsftpd,我们需要利用相关命令来开启安装ftp服务器,然后再在vsftpd.conf中进行相关配置,下面我来介绍在Ubuntu中vsftpd安装与配置增加用户的 ...
- (转)TextView 设置背景和文本颜色的问题
在做一个项目,突然遇到如下问题 比如:在color.xml中定义了几个颜色 <color name="white">#FFFFFF</color> < ...
- 关于UNIDAC连接SQLITE3的心得笔记
关于查询某个SQLITE3DB的所有表单的语句: UniQuery1.SQL.Add('SELECT * FROM sqlite_master'); 关于UNIDAC提交数据: //在提交数据之前,必 ...
- dxjk服务器安装 lamp
安装Apache:用的下面的安装法命令用的是 yum -y install httpdhttp://blog.csdn.net/kesixin/article/details/72882469 mys ...
- 【转】理解JMeter聚合报告(Aggregate Report)
Aggregate Report 是 JMeter 常用的一个 Listener,中文被翻译为“聚合报告”.今天再次有同行问到这个报告中的各项数据表示什么意思,顺便在这里公布一下,以备大家查阅. 如果 ...
- 工具软件集合 Adobe AE PS Pr CC 2018 2019 破解教程
来源https://mp.weixin.qq.com/s/zeq1sTmaPsKt7Bsok0Ldrg(若链接失效,请关注软件安装管家公众号) 相关链接 Office 2019破解教程 Adobe 2 ...
- 众包高效实用的.NET开源项目
1.Akka.NET: 概述:更轻松地构建强大的并发和分布式应用. 简介:Akka.NET是一个用于在.NET和Mono上构建高度并发,分布式和容错的事件驱动应用程序的工具包和运行时. 开源地址:ht ...
- spring+hibernate ---含AOP--事务--laobai
biz包: package com.etc.biz; import java.util.List; import org.springframework.orm.hibernate3.support. ...