MyBatis精品教程资料:2.SQL映射文件
mybatis入门教程(一)(超简单)

mybatis第一天mybatis的基础知识课程安排:mybatis和sprin gmvc通过订单商品案例驱动第一天:基础知识(重点,内容量多)对原生态jdb c程序(单独使用jdb c开发)问题总结mybatis框架原理(掌握)mybatis入门程序用户的增、删、改、查mybatis开发dao两种方法:原始dao开发方法(程序需要编写d a o接口和d a o实现类)(掌握)mybaits的mappe r接口(相当于dao接口)代理开发方法(掌握)mybatis配置文件Sq lMapConfig.xmlmybatis核心:mybatis输入映射(掌握)mybatis输出映射(掌握)mybatis的动态sql(掌握)第二天:高级知识订单商品数据模型分析高级结果集映射(一对一、一对多、多对多)mybatis延迟加载mybatis查询缓存(一级缓存、二级缓存)mybaits和sprin g进行整合(掌握)mybatis逆向工程1对原生态jdbc程序中问题总结1.1环境java环境:jdk1.7.0_72eclipse:indigomysql:5.11.2创建mysql数据导入下边的脚本:sql_table.sql:记录表结构sql_dat a.sql:记录测试数据,在实际企业开发中,最后提供一个初始化数据脚本1.3jdbc程序使用jdbc查询mysql数据库中用户表的记录。
创建java工程,加入jar包:数据库驱动包(m ysql5.1)上边的是mysql驱动。
下边的是ora cle的驱动。
程序代码:1.4问题总结1、数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响数据库性能。
设想:使用数据库连接池管理数据库连接。
2、将sql语句硬编码到jav a代码中,如果sql 语句修改,需要重新编译java代码,不利于系统维护。
MyBatis核心技术全解与项目实战读书笔记

《MyBatis核心技术全解与项目实战》读书笔记1. 第一章 MyBatis简介本章主要介绍了MyBatis的基本概念、特点和优势,以及其在Java企业级应用开发中的重要作用。
MyBatis是一个优秀的持久层框架,它将SQL语句与Java对象映射(POJO)相结合,使得开发人员可以更加方便地操作数据库。
MyBatis的主要目标是简化数据库操作,提高开发效率,同时也提供了良好的数据封装和安全性。
SqlSessionFactory:用于创建SqlSession对象,SqlSession是MyBatis中执行SQL语句的核心接口。
SqlSession:用于执行SQL语句的会话对象,可以通过它来执行增删改查等操作。
Mapper:映射器接口,用于定义SQL语句和Java对象之间的映射关系。
Configuration:MyBatis的全局配置类,用于配置各种属性,如缓存策略、事务管理等。
插件:MyBatis的插件机制,允许开发者自定义拦截器、类型处理器等组件,以实现对MyBatis的功能扩展。
灵活性:MyBatis支持多种存储结构,如JDBC、ODBC、JNDI等,同时还支持自定义类型处理器和插件,使得MyBatis能够满足各种复杂的数据库操作需求。
易用性:MyBatis提供了简洁的XML映射文件来描述SQL语句和Java对象之间的映射关系,使得开发者无需编写复杂的SQL语句即可完成数据库操作。
性能优化:MyBatis通过一级缓存和二级缓存机制来提高查询性能,同时还支持动态SQL、分页查询等功能,使得MyBatis能够在高并发环境下保持良好的性能表现。
安全性:MyBatis提供了严格的权限控制机制,可以限制不同用户对数据库的操作权限,保证数据的安全性。
1.1 MyBatis概念及特点MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。
相比于传统的数据访问技术,MyBatis让开发者能够更加直接地与数据库交互,从而有效地避免了大量繁琐的SQL语句编写工作。
Mybatis3详解(四)----SQL映射文件详解(XxxMapper.xml)

Mybatis3详解(四)----SQL映射⽂件详解(XxxMapper.xml)1映射器是Mybatis中最复杂并且是最重要的组件。
它由⼀个接⼝和xml映射⽂件(或者注解)组成。
在映射器中我们可以配置各类SQL、动态SQL、缓存、存储过程、级联等复杂的内容。
并且通过简易的映射规则映射到指定的POJO或者其它对象上,映射器能有效的消除JDBC的底层代码。
在Mybatis的应⽤程序开发中,映射器的开发⼯作量占全部⼯作量的80%,可见其重要性。
映射⽂件的作⽤是⽤来配置SQL映射语句,根据不同的SQL语句性质,使⽤不同的标签,其中常⽤的标签有:<select>、<insert>、<update>、<delete>。
下⾯列出了SQL 映射⽂件的⼏个顶级元素(按照应被定义的顺序列出):元素描述cache该命名空间的缓存配置(会在缓存部分进⾏讲解)cache-ref引⽤其它命名空间的缓存配置resultMap描述如何从数据库结果集中加载对象,它是最复杂也是最强⼤的元素parameterMap定义参数映射。
此元素已被废弃,并可能在将来被移除!请使⽤⾏内参数映射parameType。
所以本⽂中不会介绍此元素sql可被其它语句引⽤的可重⽤语句块select映射查询语句insert映射插⼊语句update映射更新语句delete映射删除语句2select元素表⽰SQL 的select 语句,⽤于查询,⽽查询语句是我们⽇常中⽤的最多的,使⽤的多就意味它有着强⼤和复杂的功能,所以我们先来看看select元素的属性有哪些(加粗为最常⽤的)。
select元素中的属性属性描述id在命名空间中唯⼀的标识符,可以被⽤来引⽤这条语句parameterType将会传⼊这条语句的参数类的完全限定名或别名。
这个属性是可选的,因为 MyBatis 可以通过类型处理器(TypeHandler)推断出具体传⼊语句的参数,默认值为未设置(unset)parameterMap这是引⽤外部 parameterMap 的已经被废弃的⽅法。
Mybatis的配置文件和映射文件详解

Mybatis的配置⽂件和映射⽂件详解⼀、Mybatis的全局配置⽂件1、SqlMapConfig.xml(名称可变)是mybatis的全局配置⽂件,配置内容如下:properties(属性)settings(全局配置参数)typeAliases(类型别名)typeHandlers(类型处理器)objectFactory(对象⼯⼚)plugins(插件)environments(环境集合属性对象)environment(环境⼦属性对象)transactionManager(事务管理)dataSource(数据源)mappers(映射器)2、properties将数据库连接参数单独配置在db.properties(名称可变)中,放在类路径下。
这样只需要在SqlMapConfig.xml中加载db.properties的属性值。
这样在SqlMapConfig.xml中就不需要对数据库连接参数硬编码。
将数据库连接参数只配置在db.properties中,原因:⽅便对参数进⾏统⼀管理,其它xml可以引⽤该db.properties例如:db.propertiesjdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/mybatisername=rootjdbc.password=root相应的SqlMapConfig.xml<properties resource="db.properties"/><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${ername}"/><property name="password" value="${jdbc.password}"/></dataSource></environment></environments>注意: MyBatis 将按照下⾯的顺序来加载属性:⾸先、在properties标签中指定的属性⽂件⾸先被读取。
mybatis 的工作原理

mybatis 的工作原理
MyBatis是一个持久层框架,用于将Java对象映射到数据库中的表。
它的工作原理如下:
1. 配置文件:MyBatis使用XML或注解进行配置。
配置文件包含数据库连接信息、SQL语句和映射规则等。
2. SqlSessionFactory:通过配置文件创建SqlSessionFactory对象。
SqlSessionFactory负责创建SqlSession对象,它是MyBatis与数据库交互的核心类。
3. SqlSession:SqlSession是具体执行SQL操作的地方。
通过SqlSession可以执行SQL语句、提交事务、关闭连接等。
4. 映射文件:映射文件定义了Java对象与数据库表的映射关系,包含了SQL语句以及参数映射等信息。
5. 执行SQL:当调用SqlSession的方法时,MyBatis会根据映射文件中的配置,将SQL语句解析成对应的数据库操作,并执行之。
6. 结果映射:执行完SQL语句后,MyBatis会将数据库返回的结果映射到Java对象中,并返回给调用方。
通过以上的步骤,MyBatis实现了将Java对象与数据库表进行交互的功能。
它的优势在于灵活的配置和强大的SQL映射能力,使开发人员能够更加轻松地操作数据库。
mybatis映射对象原理

Mybatis映射对象原理一、什么是Mybatis1.1 Mybatis的定义Mybatis是一种开源的Java持久化框架,它可以将SQL查询、存储过程和高级映射成对象的方法进行封装,使开发人员能够更加方便地进行数据库操作。
1.2 Mybatis的优势•灵活性:Mybatis允许开发人员使用原生的SQL查询,不需要强制转换为对象。
•易于学习:Mybatis的配置相对简单,易于理解和上手。
•可定制性:Mybatis支持自定义映射规则,可以灵活地进行对象和数据库的映射。
•可靠性:Mybatis具有良好的事务支持,能够保证数据的一致性和完整性。
二、Mybatis映射对象的概念2.1 映射对象的定义映射对象是指数据库表和Java对象之间的映射关系,通过指定映射规则,将数据库表中的字段和Java对象的属性进行一一对应,从而实现数据的存取和转换。
2.2 Mybatis映射对象的作用•简化数据库操作:通过映射对象,我们可以直接操作Java对象,而无需关注SQL查询和数据库细节。
•提高开发效率:映射对象可以自动生成SQL语句,减少手动编写SQL的工作量。
•提高代码可维护性:通过映射对象,我们可以将SQL语句和Java对象关联起来,便于代码的维护和修改。
三、Mybatis映射对象的配置3.1 配置文件Mybatis的映射对象配置主要通过XML文件进行,可以使用文本编辑器打开配置文件,对映射对象进行配置。
3.2 映射文件Mybatis的映射对象配置主要包括两个部分:SQL语句和结果映射。
3.2.1 SQL语句SQL语句是映射对象的核心部分,通过SQL语句,我们可以对数据库进行增删改查操作。
在映射文件中,可以使用预编译的SQL语句,也可以使用动态SQL语句。
3.2.2 结果映射结果映射是指数据库查询结果和Java对象之间的映射关系。
通过结果映射,我们可以将查询结果集中的列和Java对象的属性进行一一对应。
四、Mybatis映射对象的实现原理4.1 动态代理Mybatis的映射对象是通过动态代理技术实现的。
MyBatis中文教程

MyBatis中文教程1. SQL和Java代码的解耦:MyBatis将SQL代码和Java代码分离,通过配置文件中的映射来实现二者之间的映射关系,这样可以减少代码的冗余和维护的工作量。
2. 灵活的SQL查询:MyBatis提供了强大的SQL查询功能,支持动态SQL、参数处理、结果映射等功能,可以灵活地编写和执行各种SQL查询。
3. 缓存支持:MyBatis支持多级缓存机制,可以提高查询性能。
它提供了一级缓存和二级缓存的支持,可以根据需要进行配置和开启。
4. 事务支持:MyBatis对JDBC的事务做了封装,提供了简单易用的事务管理机制,可以很方便地实现数据库事务的控制。
5. 易于集成:MyBatis是一个独立的框架,可以很容易地集成到Java项目中,支持各种常见的数据库。
使用MyBatis的基本步骤如下:1. 添加MyBatis的依赖:在项目的pom.xml文件中添加MyBatis的依赖,或者将MyBatis的jar包添加到项目的classpath中。
2. 创建映射文件:创建一个XML文件,用于配置SQL语句和结果映射规则。
该文件一般包含一个<mapper>元素和多个<sql>元素。
3. 配置数据源:在项目的配置文件中配置数据源,用于连接数据库。
可以使用JDBC的数据源,也可以使用其他的数据源,如C3P0、Druid等。
4. 创建SqlSessionFactory:使用MyBatis的API创建一个SqlSessionFactory对象,该对象是一个线程安全的工厂类,用于创建SqlSession。
5. 创建SqlSession:使用SqlSessionFactory创建一个SqlSession 对象,该对象用于执行SQL语句和管理事务。
每个线程应该有一个独立的SqlSession对象。
6.编写SQL语句:在映射文件中编写SQL语句,可以使用动态SQL、参数处理和结果映射等特性。
mybatis db2 sql参数

mybatis db2 sql参数MyBatis 是一个流行的Java 持久层框架,它允许你使用SQL 映射文件或注解来与关系型数据库交互。
当使用MyBatis 与DB2 数据库交互时,你需要了解如何正确设置SQL 参数,以确保查询和命令按预期工作。
以下是一些使用MyBatis 与DB2 数据库交互时设置SQL 参数的基本步骤和注意事项:1.配置数据源:o在MyBatis 的配置文件中,你需要指定DB2 数据库的连接信息,包括JDBC 驱动类名、数据库URL、用户名和密码。
o确保你有正确版本的DB2 JDBC 驱动程序,并将其添加到项目的类路径中。
2.编写SQL 映射文件:o在SQL 映射文件中,你可以定义SQL 查询和命令,并使用占位符(如#{paramName})来指定参数。
o MyBatis 支持多种参数传递方式,包括单个参数、Map、自定义对象等。
3.设置参数类型:o对于简单的参数类型(如整数、字符串),MyBatis 可以自动推断参数类型。
o对于复杂的参数类型(如自定义对象、Map),你可能需要在映射文件中明确指定参数类型或使用@Param注解。
4.处理特殊字符和转义:o在DB2 中,某些字符可能需要转义才能在SQL 查询中正确使用。
确保你的SQL 语句正确处理了这些字符。
o你还可以使用MyBatis 提供的内置函数来处理特殊字符和转义问题。
5.调试和测试:o在开发过程中,使用日志和调试工具来检查生成的SQL 语句和传递的参数值是否正确。
o编写单元测试或集成测试来验证你的SQL 映射和参数设置是否按预期工作。
6.注意DB2 的特性和限制:o DB2 可能有一些与其他数据库不同的特性和限制,比如数据类型、SQL 语法等。
确保你的SQL 语句和参数设置符合DB2 的规范和要求。
7.参考文档和社区资源:o MyBatis 和DB2 都有丰富的官方文档和社区资源可供参考。
当你遇到问题时,可以查阅这些资源来获取帮助和解决方案。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
提示
9/42
select 7-5
resultMap
示例 描述如何将结果集映射到Java对象
<resultMap type="User" id="userList"> <result property="id" column="id"/> <result property="userCode" column="userCode"/> <result property="userName" column="userName"/> <result property="userRole" column=“userRole"/> <result property="userRoleName" column="roleName"/>
select 7-3
parameterType
基础数据类型
int、String、Date等 只能传入一个,通过#{参数名}即可获取传入的值
复杂数据类型
Java实体类、Map等 通过#{属性名}或者#{map的keyName}即可获取传入值
演示示例2:改造用户表的查询操作-封装对象入参
4/42
mapper元素 mapper
namespace:命名空间
namespace和子元素的id联合保证唯一,区别不同的 mapper
绑定DAO接口
namespace的命名必须跟某个接口同名 接口中的方法与映射文件中SQL语句id一一对应
<mapper namespace="erMapper">
SQL映射文件
本章任务 完成超市订单系统-用户管理功能模块之用户的增删改 查实现
2/42
本章目标 掌握通过SQL映射文件进行增删改查 掌握参数的使用 掌握resultMap 了解Cache的使用
3/42
SQL映射的XML文件
MyBatis 真正的强大在于映射语句,专注于SQL,功能强大,SQL 映射的配置却是相当简单
提示 修改Bill.java,增加属性providerName 编写SQL查询语句(连表查询) 创建resultMap-自定义映射结果,并在select中引用
完成时间:30分钟
13/42
共性问题集中讲解 常见问题及解决办法 代码规范问题 调试技巧
基本数据类型 复杂数据类型
resultMap :对外部resultMap的引用
应用场景:
数据库字段信息与对象属性不一致 复杂的联合查询,自由控制映射结果
二者不能同时存在,本质上都是Map数据结构
11/42
select 7-7
问题 使用resultMap如何实现自由灵活的控制映射结果,从而达 到只对关心的属性进行赋值填充?
8/42
select 7-4
问题
按条件查询得到用户表列表,需要显示指定字段,并显示用户角色(中文表述) 用户表中的userRole字段记录的是角色id,不是其对应的名称,如何解决? 修改User的属性,增加userRoleName属性 修改查询SQL语句,连表查询 resultMap-自定义映射结果
分析 resultMap自动映射匹配前提:字段名与属性名一致
resultMap的自动映射级别-autoMappingBehavior
PARTIAL(默认):自动匹配所有
<settings> <setting name="autoMappingBehavior" value="NONE"/>
</settings>
禁止自动匹配
演示示例3:使用resultMap实现用户信息查询
(用户表和角色表查询)
12/42
学员操作—实现订单表的查询
需求说明:
练习
实现按条件查询订单表,查询条件如下
商品名称(模糊查询)
供应商(供应商id)
是否付款
查询结果列显示:订单编码、商品名称、供应商名称、账单 金额、是否付款、创建时间
parameterType
传入SQL语句的参数类型
resultType
SQL语句返回值类型的完整类名或别名
演示示例1:根据用户名对用户表进行模糊查询
6/42
select 7-2 按条件查询用户表,若多条件情况下如何处理?
问题
提示 传入多个参数进行入参? 封装成User对象进行入参?
7/42
</resultMap> <select id="getUserList" resultMap="userList" parameterType="User">
select u.*,r.roleName from smbms_user u,smbms_role r where erName like CONCAT (‘%’,#{userName}, ‘%’) and erRole = #{userRole} and erRole = r.id
</select>
表示查询出来的属性对应的值赋 给实体对象的哪个属性
从数据库中查询的列名或者 别名
一个外部resultMap的id,表示返回结 果映射到哪一个resultMap上
演示示例3:使用resultMap实现用户信息查询
(用户表和角色表查询)
10/42
select 7-6
resultType :直接表示返回类型
SQL映射文件的几个顶级元素(按照定义的顺序)
mapper Leabharlann namespace cache – 配置给定命名空间的缓存 cache-ref – 从其他命名空间引用缓存配置 resultMap –用来描述数据库结果集和对象的对应关系 sql – 可以重用的SQL块,也可以被其他语句引用 insert – 映射插入语句 update – 映射更新语句 delete – 映射删除语句 select – 映射查询语句
示例
<select id="getUserList" …
…… </select>
</mapper>
5/42
select 7-1
select是MyBatis中最常用的元素之一 select语句有很多属性可以详细配置每一条语句
id
命名空间中唯一的标识符 接口中的方法与映射文件中的SQL语句id一一对应