mybatis的mapper映射配置文件详解

一、标签介绍

insert,update,delete,select,sql,resultMap

sql:可被其它语句引用的可重用语句块;

resultMap:确定实体类属性与表中字段对应关系;

二、namespace的作用

在MyBatis中,Mapper中的namespace用于绑定Dao接口的,即面向接口编程。

它的好处在于当使用了namespace之后就可以不用写接口实现类,业务逻辑会直接通过这个绑定寻找到相对应的SQL语句进行对应的数据处理

三、parametetType属性

在<insert>,<update>,<select>,<delete>标签中,可以通过parameterType指定输入参数的类型,类型可以是简单类型、hashmap、pojo的包装类型。

parameterType属性是可以省略的.MyBatis框架可以根据SqlSession接口中方法的参数

来判断输入参数的实际数据类型.

四、#{参数名}

1、含义、#{}实现的是向prepareStatement中的预处理语句中设置参数值,sql语句中#{}表示一个占位符即?

2、使用#{参数名},将参数的内容添加到sql语句中指定位置.

如果当前sql语句中只有一个参数,此时参数名称可以随意定义

但是,如果当前sql语句有多个参数,此时参数名称应该是与当前表关联[实体类的属性名]或者[Map集合关键字]

2.1:读取对象属性

2.2:读取map关键字

3.#{}和${}区别

在MyBatis中提供了两种方式读取参数的内容到SQL语句中,分别是

#{参数名} :实体类对象或则Map集合读取内容

${参数名} :实体类对象或则Map集合读取内容

#{} : 采用预编译方式,可以防止SQL注入

${}:  采用直接赋值方式,无法阻止SQL注入攻击

在大多数情况下,我们都是采用#{}读取参数内容.但是在一些特殊的情况下,我们还是需要使用${}读取参数的.

比如 有两张表,分别是emp_2017 和 emp_2018 .如果需要在查询语句中动态指定表名,就只能使用${}

<select>

select *  from emp_${year}

<select>

再比如.需要动态的指定查询中的排序字段,此时也只能使用${}

<select>

select  *  from dept order by ${name}

</select>

简单来说,在JDBC不支持使用占位符的地方,都可以使用${}

五、resultType属性

4.1、resultType属性存在<select>标签.负责将查询结果进行映射.

4.2、resultType属性可以指定一个基本类型也可以是一个实体类类型

4.3、使用resultType属性为实体类类型时,只有查询出来的列名和实体类中的属性名一致,才可以映射成功. 如果查询出来的列名和pojo中的属性名全部不一致,就不会创建实体类对象.但是只要查询出来的列名和实体类中的属性有一个一致,就会创建实体类对象

4.4、resultType属性无法与resultMap属性同时出现.

5、resultMap

MyBatis框架中是根据表中字段名到实体类定位同名属性的.如果出现了实体类属性名与表中字段名不一致的情况,则无法自动进行对应.此时可以使用resultMap来重新建立实体类与字段名之间对应关系.

六.sql标签

原文地址:https://www.cnblogs.com/currystar/p/10890614.html

时间: 2024-11-08 00:59:24

mybatis的mapper映射配置文件详解的相关文章

2、MyBatis系列:全局配置文件详解

MyBatis 全局映射配置文件 MyBatis 的配置文档的顶层结构如下: configuration 配置 properties 属性 settings 设置 typeAliases 类型命名 typeHandlers 类型处理器 objectFactory 对象工厂 plugins 插件 environments 环境 databaseIdProvider 数据库厂商标识 environment 环境变量 transactionManager 事务管理器 dataSource 数据源 ma

mapper.xml配置文件详解

--命名空间通常为该mapper映射文件所对应maper接口所在的路径 <mapper namespace="com.harbsoft.com.mybatis.mapper.UserMapper"> --开启二级缓存 (实体类必须序列化) <cache type="org.mybatis.caches.ehcache.EhcacheCache" /> --抽取通用的SQL <sql id="user_query_where&q

MyBatis之Mapper XML 文件详解(五)-自动映射查询结果

正如你在前面一节看到的,在简单的场景下,MyBatis可以替你自动映射查询结果. 如果遇到复杂的场景,你需要构建一个result map. 但是在本节你将看到,你也可以混合使用这两种策略. 让我们到深一点的层面上看看自动映射是怎样工作的. 当自动映射查询结果时,MyBatis会获取sql返回的列名并在java类中查找相同名字的属性(忽略大小写). 这意味着如果Mybatis发现了ID列和id属性,Mybatis会将ID的值赋给id. 通常数据库列使用大写单词命名,单词间用下划线分隔:而java属

MyBatis之Mapper XML 文件详解(四)-JDBC 类型和嵌套查询

支持的 JDBC 类型为了未来的参考,MyBatis 通过包含的 jdbcType 枚举型,支持下面的 JDBC 类型. BITFLOATCHARTIMESTAMPOTHERUNDEFINEDTINYINTREALVARCHARBINARYBLOBNVARCHARSMALLINTDOUBLELONGVARCHARVARBINARYCLOBNCHARINTEGERNUMERICDATELONGVARBINARYBOOLEANNCLOBBIGINTDECIMALTIMENULLCURSORARRAY

Hibernate学习---第三节:映射配置文件详解

1.映射文件,代码如下: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <!-- 持久化映射文件(将java对象映射到数据库表) default-

MyBatis之Mapper XML 文件详解(二)-sql和入参

sql 这个元素可以被用来定义可重用的 SQL 代码段,可以包含在其他语句中.它可以被静态地(在加载参数) 参数化. 不同的属性值通过包含的实例变化. 比如: <sql id="userColumns"> ${alias}.id,${alias}.username,${alias}.password </sql> 这个 SQL 片段可以被包含在其他语句中,例如: <select id="selectUsers" resultType=&

MyBatis之Mapper XML 文件详解(三)-Result Maps

resultMap 元素是 MyBatis 中最重要最强大的元素.它就是让你远离 90%的需要从结果 集中取出数据的 JDBC 代码的那个东西, 而且在一些情形下允许你做一些 JDBC 不支持的事 情. 事实上, 编写相似于对复杂语句联合映射这些等同的代码, 也许可以跨过上千行的代码. ResultMap 的设计就是简单语句不需要明确的结果映射,而很多复杂语句确实需要描述它们 的关系. 你已经看到简单映射语句的示例了,但没有明确的 resultMap.比如: <select id="sel

MyBatis—02—代替Dao层的mapper映射文件;MyBatis配置文件详解

一. Mapper 映射文件 在JDBC中,我们会把访问数据库的代码放在Dao层,也就是建一个com.dao的package: 但在 MyBatis 中, 我们的包名推荐使用 mapper ,  并且我们只需要写一个映射配置文件即可, 不需要写接口和实现类了. UserMapper.xml, 用于定义要执行的 SQL 语句, 同时设定返回结果的类型. 1.编写mapper层的xml映射文件 2. 在MyBatis核心配置文件中添加 mapper 扫描 3.测试 二. MyBatis 配置文件详解

Hibernate配置文件与映射文件详解

Hibernate是一个彻底的ORM(Object Relational Mapping,对象关系映射)开源框架. 我们先看一下官方文档所给出的,Hibernate 体系结构的高层视图: 其中PO=POJO+映射文件 根据体系结构视图可以了解到整个利用Hibernate框架实现的项目包括整个重要的配置文件: Hibernate配置文件:实现Hibernate基础配置,是Hibernate能够友好的与DB进行交互基础: 开发时放置src目录下,取名为:hibernate.cfg.xml(hiber