【思维导图】mybatis-10、XML 映射配置文件(三)
MyBatis思维导图
MyBatis思维导图1、初识框架技术2、搭建MyBatis环境3、掌握MyBatis的核⼼API4、掌握MyBatis的核⼼配置⽂件:主要⽤于配置数据库连接和MyBatis运⾏时所需的各种特性5、掌握SQL映射⽂件(或者使⽤⾃动⽣成SQL映射⽂件的插件)6、掌握MyBatis缓存7、Dao上级操作8、掌握动态SQL9、掌握MyBatis框架的优缺点和其使⽤场合--------------------------------------------------------------------------------------------------------------------------------------知识点详情-------------------------------------------------------------1、初识框架技术 1.1什么是框架 框架(Framework)是⼀个提供了可重⽤的公共结构的半成品,它成为构建新的应⽤程序提供了极⼤的便利,更提供了可重⽤的设计; 1.2当前的主流框架 1.2.1 Struts2: Struts2以Webwork设计思想为核⼼,吸收了Struts框架的部分优点,提供了⼀个更加整洁的基于MVC设计模式实现的Web应⽤程序框架。
它引⼊了⼏个新的框架特性:从逻辑中分离出横切关注点的拦截器,减少或者消除配置⽂件,贯穿整个框架的强⼤表达式语⾔,⽀持可重⽤的标签API等。
Struts2充分利⽤了从其他MVC框架学到的经验和教训,使整个框架更加清晰、灵活(引⼊了拦截器)。
1.2.2 Hibernate: Hibernate是⼀个优秀的持久化框架(ORM),负责简化将对象数据保存到数据库中,或从数据库中读取数据并封装到对象的⼯作。
Hibernate通过简单配置和编码即可替代JDBC繁琐的程序代码。
1.2.3Spring: Spring是⼀个开源框架。
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(原名为iBATIS)是一种开源的持久化框架,它主要用于将Java对象与SQL语句进行映射,从而实现对象关系映射(ORM)。
MyBatis有一套独立的SQL映射文件,其中定义了对象属性与数据库列之间的映射关系。
这些SQL映射文件通过XML进行定义,使得开发人员可以将SQL语句与Java代码进行解耦。
SQL映射文件可以包含各种插入、更新、删除和查询语句,同时还支持存储过程和函数的调用。
MyBatis的核心组件包括SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession和Mapper。
SqlSessionFactoryBuilder负责创建SqlSessionFactory对象,SqlSessionFactory负责创建SqlSession对象,SqlSession则是与数据库进行交互的核心类,而Mapper则负责定义与数据库交互的接口。
MyBatis的使用非常灵活,可以通过注解或者XML进行配置。
注解是直接在Java代码中使用的标记,通过注解可以直接在Java代码中定义SQL语句,从而省去了编写XML文件的过程。
XML配置方式则需要额外编写SQL映射文件,但是更加灵活和可维护。
下面是一个使用MyBatis的例子,其中使用了XML配置方式:首先,我们需要编写一个User类,用于与数据库中的user表进行映射:```javapublic class Userprivate int id;private String name;private String email;// 省略getter和setter方法```接下来,我们需要编写一个UserMapper接口,用于定义与数据库交互的方法:```javapublic interface UserMapperUser selectUser(int id);void insertUser(User user);void updateUser(User user);void deleteUser(int id);```然后,我们需要创建一个SQL映射文件UserMapper.xml,其中定义了与User类对应的SQL语句:```xmlSELECT * FROM user WHERE id = #{id}</select>INSERT INTO user (name, email) VALUES (#{name}, #{email})</insert>UPDATE user SET name = #{name}, email = #{email} WHERE id = #{id}</update><delete id="deleteUser" parameterType="int">DELETE FROM user WHERE id = #{id}</delete></mapper>```最后,我们可以通过SqlSessionFactoryBuilder来创建SqlSessionFactory对象:```javaString resource = "mybatis-config.xml";InputStream inputStream =Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder(.build(inputStream);```接下来,我们可以通过SqlSessionFactory对象创建SqlSession对象:```javaSqlSession session = sqlSessionFactory.openSession(;```然后,我们可以通过SqlSession对象获取Mapper接口的实例:```javaUserMapper userMapper = session.getMapper(UserMapper.class);```最后,我们可以通过Mapper接口的实例来调用与数据库交互的方法:```javaUser user = userMapper.selectUser(1);```以上就是一个简单的使用MyBatis的例子。
MyBatis之XML映射文件详解
MyBatis之XML映射⽂件详解MyBatis 的真正强⼤在于它的映射语句,也是它的魔⼒所在。
由于它的异常强⼤,映射器的 XML ⽂件就显得相对简单。
在MyBatis开发中,涉及到主要开发要素是:Dao接⼝类,Mapper映射⽂件,以及PO类。
它们之间的关系如下:映射器(mapper)的XML⽂件,有⼏个顶级元素:select – 映射查询语句insert – 映射插⼊语句update – 映射更新语句delete – 映射删除语句sql – 可被其他语句引⽤的可重⽤语句块。
cache – 给定命名空间的缓存配置。
cache-ref – 其他命名空间缓存配置的引⽤。
resultMap – 是最复杂也是最强⼤的元素,⽤来描述如何从数据库结果集中来加载对象。
⼀、select元素1. 最基本的查询<select id="getUserById" resultType="MemberUser" parameterType="int">select ID,NAME,PERSONMOBILE,ADDRESS,AGE FROM MEMBER_USER WHERE ID = #{id}</select>上述配置类似于:// Similar JDBC code, NOT MyBatis…String selectMember = "select ID,NAME,PERSONMOBILE,ADDRESS,AGE FROM MEMBER_USER WHERE ID=?";PreparedStatement ps = conn.prepareStatement(selectMember);ps.setInt(1,id);2. select 元素有很多属性允许你配置,来决定每条语句的作⽤细节⽰范:<selectid="selectPerson"parameterType="int"parameterMap="deprecated"resultType="hashmap"resultMap="personResultMap"flushCache="false"useCache="true"timeout="10000"fetchSize="256"statementType="PREPARED"resultSetType="FORWARD_ONLY">详细说明:属性描述id在命名空间中唯⼀的标识符,可以被⽤来引⽤这条语句。
MyBatis xml配置文件详解
MyBatis xml配置文件详解一、MyBatis 配置文件基本结构在使用mybatis框架时,首先导入其对应的jar包,并进行相应的配置,所以得对配置文件的每个参数都得了解。
一个完全的mybatis配置文件结构如下:[html] view plain copy<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-////DTD Config 3.0//EN""/dtd/mybatis-3-config.dtd"><!-- 配置文件的根元素--><configuration><!-- 属性:定义配置外在化--><properties></properties><!-- 设置:定义mybatis的一些全局性设置--><settings><!-- 具体的参数名和参数值--><setting name="" value=""/></settings><!-- 类型名称:为一些类定义别名--><typeAliases></typeAliases><!-- 类型处理器:定义Java类型与数据库中的数据类型之间的转换关系--><typeHandlers></typeHandlers><!-- 对象工厂--><objectFactory type=""></objectFactory><!-- 插件:mybatis的插件,插件可以修改mybatis的内部运行规则--><plugins><plugin interceptor=""></plugin></plugins><!-- 环境:配置mybatis的环境--><environments default=""><!-- 环境变量:可以配置多个环境变量,比如使用多数据源时,就需要配置多个环境变量--><environment id=""><!-- 事务管理器--><transactionManager type=""></transactionManager><!-- 数据源--><dataSource type=""></dataSource></environment></environments><!-- 数据库厂商标识--><databaseIdProvider type=""></databaseIdProvider><!-- 映射器:指定映射文件或者映射类--><mappers></mappers></configuration>propertiesproperties元素主要是用来定义配置外在化,比如数据库的连接属性等。
MyBatis映射文件相关操作
MyBatis映射⽂件相关操作⼀、MyBatis映射⽂件1、简介 MyBatis 的真正强⼤在于它的映射语句,也是它的魔⼒所在。
由于它的异常强⼤,映射器的 XML ⽂件就显得相对简单。
如果拿它跟具有相同功能的 JDBC 代码进⾏对⽐,你会⽴即发现省掉了将近 95% 的代码。
MyBatis 就是针对 SQL 构建的,并且⽐普通的⽅法做的更好。
学习 MyBatis,需要了解其如何对参数进⾏处理、如何将返回值进⾏映射。
2、实现简单的增删改查 使⽤⼀个简单的增删改查⼩案例,快速明⽩ mybatis 映射⽂件使⽤的流程。
step1:⽂件结构step2:完整代码【主要⽂件】config/db.properties ⽤于设置数据库的配置信息config/EmpMapper.xml sql映射⽂件,⽤于编写sql语句config/mybatis-config.xml 全局配置⽂件entity.Employee 实体类mapper.EmpMapper 接⼝类,⽤于定义sql⽅法test.Demo 测试类,⽤于测试增删改查【config/db.properties 】jdbc.driver = com.mysql.cj.jdbc.Driverjdbc.url = jdbc:mysql://localhost:3306/lyh?useUnicode=true&characterEncoding=utf8ername = rootjdbc.password = 123456【config/mybatis-config.xml】<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-////DTD Config 3.0//EN""/dtd/mybatis-3-config.dtd"><configuration><properties resource="config/db.properties"></properties><environments default="development"><environment id="development"><transactionManager type="JDBC"/><!-- MyBatis⾃带连接池,只需配置数据库连接的⼀些数据即可此处以MySql为例。
mybatis-config.xml文件详解
mybatis-config.xml⽂件详解1. 属性列表Mybatis的配置⽂件中包含了影响mybatis⾏为的设置(settings)和属性(properties)信息。
⽂档的顶层结构如下:·configuration 根配置·properties 属性·settings 设置·typeAliases 类型别名·typeHandlers 类型处理器·objectFactory 对象⼯⼚·plugins 插件·environments 环境·environment 环境变量·transactionManager 事务管理器·dataSource 数据源·databaseIdProvider 数据库⼚商标识·mappers 映射器2. properties属性可以在外部配置且可动态替换,既可以在properties⽂件中配置,也可以通过properties元素的⼦元素来传递,例如:<properties resource="jdbc.properties"><property name="driver" value="com.mysql.jdbc.Driver"/></properties>// jdbc.propertiesurl=jdbc:mysql://192.168.25.84:3306/testuser=rootpwd=mysql 然后其中的属性就可以在整个配置⽂件中被⽤来替换需要动态配置的属性值:<dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}"/><property name="username" value="${user}"/><property name="password" value="${pwd}"/></dataSource> 真个例⼦中的url,user,pwd将会由properties元素中设置的相应值来替换。
mybatis xml 实现原理
mybatis xml 实现原理MyBatis是一个开源的持久层框架,它简化了与数据库的交互,并提供了一种灵活的方式来执行数据库操作。
在MyBatis中,使用XML 文件来定义SQL语句和映射关系,这种通过XML来实现的方式被称为“XML映射”。
MyBatis XML实现原理主要涉及以下几个方面:配置文件解析、SQL语句解析、参数映射、结果映射以及SQL语句执行。
1.配置文件解析MyBatis的配置文件是`mybatis-config.xml`,其中包含了MyBatis的全局配置信息,如数据源、插件等。
MyBatis在启动时会加载和解析该配置文件,生成一个`Configuration`对象,该对象保存了配置文件中的所有信息。
配置文件解析的过程主要包括以下几个步骤:-使用Java的DOM解析器读取XML文件,将其解析为一个Document对象。
-解析过程中会根据XML文件中的标签和属性,创建对应的各种对象,如数据源、事务管理器、插件等。
-将解析得到的对象保存到`Configuration`对象中。
2. SQL语句解析MyBatis XML中定义了各种SQL语句,包括增、删、改、查等操作。
在配置文件中,可以使用`<select>`、`<insert>`、`<update>`、`<delete>`等标签来定义SQL语句,其中可以包含参数和结果映射配置。
SQL语句解析的过程主要包括以下几个步骤:-首先,MyBatis会解析`<select>`、`<insert>`、`<update>`、`<delete>`等标签,并获取相应的属性和子标签。
-解析属性时,会根据XML中指定的参数类型、返回类型等信息,创建对应的Java对象,并将其与SQL语句关联起来。
-解析子标签时,主要涉及参数映射和结果映射的配置,可以使用`<parameterMap>`、`<parameterType>`、`<resultMap>`、`<resultType>`等标签来配置映射关系。
MyBatis笔记:xml映射文件
MyBatis笔记:xml映射⽂件1. parameterType配置parameterType表⽰id属性所代表的⽅法需要传⼊的参数的类型。
int数字类型。
类当parameterType的值是⼀个类时,需要指定该类的完整路径(对maven项⽬来说的,就是相对于src/main/java的路径),表⽰传⼊的参数类型为该类。
直接指定parameterType为类时有⼀个缺点:为了传递这个类的实例,不得不new⼀个实例出来,如果实例化这个类需要指定许多SQL中⽤不到的属性,代码就会变得⾮常⿇烦,这时候可以考虑将parameterType指定为map类型。
map当parameterType的值是⼀个map时,表⽰传⼊的参数是map类型,此时SQL中的#{}只需要填⼊map中的key即可。
如果传⼊的实例在实例化时需要多个SQL⽤不到的参数,或者需要传递多个参数时,可以考虑使⽤map类型。
2. resultMap配置mapper.xml映射⽂件中数据库字段名和实体类的属性名的映射关系是根据查询结果来进⾏映射的,如果结果集中字段名和属性名⼀致,则映射成功,不⼀致则会给对应的对象属性赋予null值。
当数据库中的字段名和实体类的属性名不⼀致时,有两种处理⽅式:⼀种是使⽤as语法让查询结果的字段名与实体类的属性名保持⼀致,另⼀种是配置resultMap标签。
具体见⽰例:第⼀种⽅式:使⽤as实体类的属性:id,name,passwordpublic class User {private int id;private String name;private String password;}数据库中的字段为:id,name,pwd。
此时可以使⽤as对pwd的查询结果起⼀个别名password,与实体类的属性名保持⼀致。
<mapper namespace="erMapper"><select id="getUserList" resultType="er">select id,name,pwd as password from er;</select></mapper>第⼆种⽅式:配置resultMap使⽤resultMap进⾏映射,见如下⽰例:select标签的resultMap属性值就是resultMap标签的id属性值,resultMap标签的type属性值为对应实体类,result标签中column为数据库字段名,property为实体类的属性名。
MyBatis官方文档——XML映射配置文件
MyBatis官⽅⽂档——XML映射配置⽂件XML 映射配置⽂件MyBatis 的配置⽂件包含了影响 MyBatis ⾏为甚深的设置(settings)和属性(properties)信息。
⽂档的顶层结构如下:configuration 配置properties 属性settings 设置typeAliases 类型命名typeHandlers 类型处理器objectFactory 对象⼯⼚plugins 插件environments 环境databaseIdProvider 数据库⼚商标识environment 环境变量transactionManager 事务管理器dataSource 数据源mappers 映射器properties这些属性都是可外部配置且可动态替换的,既可以在典型的 Java 属性⽂件中配置,亦可通过 properties 元素的⼦元素来传递。
例如:<properties resource="org/mybatis/example/config.properties"><property name="username" value="dev_user"/><property name="password" value="F2Fa3!33TYyg"/></properties> 其中的属性就可以在整个配置⽂件中使⽤来替换需要动态配置的属性值。
⽐如:<dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/></dataSource>这个例⼦中的 username 和 password 将会由 properties 元素中设置的相应值来替换。
Java的MyBatis框架中关键的XML字段映射的配置参数详解
Java的MyBatis框架中关键的XML字段映射的配置参数详解properties这些是外部化的,可替代的属性,这些属性也可以配置在典型的Java属性配置⽂件中,或者通过properties元素的⼦元素来传递。
例如:<properties resource="org/mybatis/example/config.properties"><property name="username" value="dev_user"/><property name="password" value="F2Fa3!33TYyg"/></properties>其中的属性就可以在整个配置⽂件中使⽤,使⽤可替换的属性来实现动态配置。
⽐如:<dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/></dataSource>这个例⼦中的username和password将会由properties元素中设置的值来替换。
driver和url属性将会从包含进来的config.properties⽂件中的值来替换。