也可以使用任意的输入流(InputStream)实例,包括字符串形式的文件路径或者“file://”形式的URL文件路径来配置。...Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is); } 从字符串形式路径下的...SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is); } 从"file://"形式的URL路径xml...具体来讲,对于不用的映射器配置,使用方式略有不同。 1. 使用xml映射器 所谓的xml映射器是指,将SQL语句及相关ORM映射的配置都写在xml文件中: 映射器 使用注解方式映射SQL语句是指:直接将SQL编写在映射器接口方法的注解中。
,此外,通过 SqlSession 能够获取映射器 映射器:由 Java 接口和 XML 文件(或注解)构成,其负责定义参数、SQL、查询结果与对象的映射 1 入门案例 查询数据表 keyword...配置,请参阅 《MyBatis 的配置、映射器以及动态 SQL》 章节。...定义的类型,既能够表示查询结果的类型,亦能够表示查询结果作为集合时,集合元素的类型 java/com/gitchat/mybatis/KeywordMapper.java package com.gitchat.mybatis...; ==> Parameters: 1000(Long) 需要说明: 通常,不建议使用注解的形式进行 SQL 定义 映射器的 Java 接口,其实现由 MyBatis 基于 “动态代理” 机制,于运行时提供...关于映射器的更多内容,请参阅 《MyBatis 的配置、映射器以及动态 SQL》 章节。
映射器 2.4.1 映射器职责 映射器是一些由用户创建的、绑定 SQL 语句的接口。...因此从技术层面讲,任何映射器实例的最大作用域是和请求它们的 SqlSession 相同的。尽管如此,映射器实例的最佳作用域是方法作用域。...三、 MyBatis 的架构 从 MyBatis 代码实现的角度来看,MyBatis 的主要组件有以下几个: SqlSession - 作为 MyBatis 工作的主要顶层 API,表示和数据库交互的会话...MyBatis 的事务管理分为两种形式: 使用 JDBC 的事务管理机制:即利用 java.sql.Connection 对象完成对事务的提交(commit)、回滚(rollback)、关闭(close...,我们使用的是 SQL 语句字符串会包含若干个占位符,我们其后再对占位符进行设值。
映射器 2.4.1 映射器职责 映射器是一些由用户创建的、绑定 SQL 语句的接口。...2.4.2 映射器生命周期 映射器接口的实例是从 SqlSession 中获得的。因此从技术层面讲,任何映射器实例的最大作用域是和请求它们的 SqlSession 相同的。...三、 MyBatis 的架构 从 MyBatis 代码实现的角度来看,MyBatis 的主要组件有以下几个: SqlSession - 作为 MyBatis 工作的主要顶层 API,表示和数据库交互的会话...MyBatis 的事务管理分为两种形式: 使用 JDBC 的事务管理机制:即利用 java.sql.Connection 对象完成对事务的提交(commit)、回滚(rollback)、关闭(close...,我们使用的是 SQL 语句字符串会包含若干个占位符,我们其后再对占位符进行设值。
应用目录结构 略 SqlSessions MyBatis 的主要 Java 接口就是 SqlSession。可以通过这个接口来执行命令,获取映射器和管理事务。...注意 MyBatis-Spring 和 MyBatis-Guice 提供了声明事务处理,所以如果你在使用 Mybatis 的同时使用了Spring 或者 Guice,那么请参考它们的手册以获取更多的内容...表示缓存仅在语句执行时有效。...它们用字符串数组(或单个字符串)作为参数。如果传递的是字符串数组,字符串之间先会被填充一个空格再连接成单个完整的字符串。这有效避免了以 Java 代码构建 SQL 语句时的“丢失空格”的问题。...然而,你也可以提前手动连接好字符串。属性有:value,填入的值是用来组成单个 SQL 语句的字符串数组。
什么是MyBatis(What) MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。 2....为什么使用MyBatis(Why) MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。...配置 建议使用类路径下的资源文件来进行配置;也可以使用任意的输入流(InputStream)实例,包括字符串形式的文件路径或者file://的URL形式的文件路径来配置。...4.4 映射器实例(Mapper Instances) 映射器是一个创建来绑定映射请求的语句的接口。 映射器接口的实例是从SqlSession中获得的。...因此从技术层面来说,任何映射器的最大作用域是和请求他们的SqlSession相同的。 它的最佳作用域是方法作用域,也就是说,映射器实例应该在调用他的方法中被请求,用过之后废弃。
你可以通过这个接口来执行命令,获取映射器和管理事务。我们会概括讨论一下 SqlSession 本身,但是首先我们还是要了解如何获取一个 SqlSession 实例。...那些属性可以用${propName} 语法形式多次用在配置文件中。 回想一下,属性可以从 mybatis-config.xml 中被引用,或者直接指定它。因此理解优先级是很重要的。...SqlSession 正如上面所提到的,SqlSession 实例在 MyBatis 中是非常强大的一个类。在这里你会看到所有执行语句、提交或回滚事务和获取映射器实例的方法。...它们用字符串数组(或单个字符串)作为参数。如果传递的是字符串数组,字符串之间先会被填充一个空格再连接成单个完整的字符串。这有效避免了以 Java 代码构建 SQL 语句时的“丢失空格”的问题。...然而,你也可以提前手动连接好字符串。属性有:value,填入的值是用来组成单个 SQL 语句的字符串数组。
,查询灵活的ORM框架,MyBatis可以满足这些要求,MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架,它也是SSM框架集成中的重要组成部分。...2.ORM提供了对数据库的映射,不用sql直接编码,能够像操作对象一样从数据库获取数据。 缺点: 牺牲程序的执行效率和会固定思维模式,降低了开发的灵活性。...:作为MyBatis工作的主要顶层API,表示和数据库交互时的会话,完成必要数据库增删改查功能 Executor:MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护...,resultType属性指明查询返回的结果集类型 resultType="com.zhangguo.mybatis01.entities.Student"就表示将查询结果封装成一个Student类的对象返回...-- 根据用户名称模糊查询用户信息,可能返回多条数据 resultType:指定的就是单条记录所映射的java类型; ${}:表示拼接sql字符串,将接收到的参数内容不加任何修饰拼接在sql
表示占位符 String sql = "select * from user where username = ?"...// 设置参数,第⼀个参数为sql语句中参数的序号(从1开始),第⼆个参数为设置的参数值 preparedStatement.setString(1, "zjq666888");...语句中使用#{任意字符串}方式引用传递的单个参数 •删除操作使用的API是sqlSession.delete(“命名空间.id”,Object); 知识小结 增删改查映射配置与API: 查询数据: List...的核心文件的输入流的形式构建一个SqlSessionFactory对象 String resource = "org/mybatis/builder/mybatis-config.xml"; InputStream...常用的有如下两个: SqlSession会话对象 SqlSession 实例在 MyBatis 中是非常强大的一个类。在这里你会看到所有执行语句、提交或回滚事务和获取映射器实例的方法。
MyBatis 简介:持久层框架,支持自定义SQL,存储过程以及高级映射。他几乎免除了所有的JDBC代码以及设置参数和获取结果集的工作。...实例 实例化过程中,加载配置文件创建Configuration对象 通过factory创建SqlSession 通过SqlSession获取mapper接口动态代理 动态代理回调SqlSession中的查询方法...mappers 元素则包含了一组映射器(mapper),这些映射器的 XML 映射文件包含了 SQL 代码和映射定义信息。...映射器类是 Java 类,它们包含 SQL 映射注解从而避免依赖 XML 文件。...-动态代理回调SqlSession中的查询方法-> } 探究已映射的 SQL 语句 你可能很想知道 SqlSession 和 Mapper 到底具体执行了些什么操作,但 SQL 语句映射是个相当广泛的话题
(5)Executor 执行器:MyBatis 底层定义了一个 Executor 接口来操作数据库,它将根据 SqlSession 传递的参数动态地生成需要执行的 SQL 语句,同时负责查询缓存的维护。...(3)SqlSession(会话):一个既可以发送 SQL 执行返回结果,也可以获取 Mapper 的接口。...(4)SQL Mapper(映射器):MyBatis 新设计存在的组件,它由一个 Java 接口和 XML 文件(或注解)构成,需要给出对应的 SQL 和映射规则。...5.2、映射器作用 映射器的主要作用就是将 SQL 查询到的结果映射为一个 POJO,或者将 POJO 的数据插入到数据库中,并定义一些关于缓存等的重要内容。...5.3、映射器分类 映射器有二种方式:XML 文件形式和注解形式 5.3.1、XML文件形式 <!
上一篇总结了MyBatis的配置,详细说明了各个配置项,其中提到了映射器,它是MyBatis最强大的工具,也是使用最多的工具。...通过映射器,可以很容易的进行数据的增删改查操作,我们抽象下进行这些操作的关键点:传递查询参数、组装各种场景下的查询条件、关联查询、将查询结果映射为Java Bean对象或集合等。...; insert 插入语句,返回一个整数,表示插入的条数; update 更新语句,返回一个整数,表示更新的条数; delete 删除语句,返回一个整数,表示删除的条数; sql 允许定义一部分SQL,..., numericScale=2 } 一般都是传递字符串,设置的参数#{name}大部分情况下,会创建预编译语句,但有时候传递的是SQL语句本身,不是需要的参数,可以通过$符号表示,比如传递参数columns...getReadWriteLock(); //获取缓存的读写锁 } 动态SQL 很多时候,需要根据不同的场景组装查询条件,MyBatis提供对SQL语句动态的组装能力。
、复杂度大、与性能密切相关的操作,我们希望得到一种使用方便,查询灵活的ORM框架,MyBatis可以满足这些要求,MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架,它也是SSM...2.ORM提供了对数据库的映射,不用sql直接编码,能够像操作对象一样从数据库获取数据。 缺点: 牺牲程序的执行效率和会固定思维模式,降低了开发的灵活性。...:作为MyBatis工作的主要顶层API,表示和数据库交互时的会话,完成必要数据库增删改查功能 Executor:MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护...-- 根据用户名称模糊查询用户信息,可能返回多条数据 resultType:指定的就是单条记录所映射的java类型; ${}:表示拼接sql字符串,将接收到的参数内容不加任何修饰拼接在sql...6.3、selectOne()和selectList()的区别 selectOne表示查询出一条记录进行映射。
映射器(mappers) typeAliases 类型别名减少类完全限制名的冗余 处理枚举类型 多行插入 重用 SQL 代码段,消除重复 字符串替换#{}和${}的区别 Result Maps,表的列名和类的属性名不对应怎么处理...MyBatis关联的嵌套查询 MyBatis集合的嵌套查询 动态 SQL,如何优雅的构建动态Sql Where 构建动态查询条件 choose, when, otherwise 从条件中选其一项 set...MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。...-- 将包内的映射器接口实现全部注册为映射器 --> mybatis.builder"/> typeAliases 类型别名减少类完全限制名的冗余...,如何优雅的构建动态Sql MyBatis 的强大特性之一便是它的动态 SQL。
DispatcherServlet; DispatcherServlet 收到请求后,调用 HandlerMapping 处理器映射器,请求获取 Handle; 处理器映射器根据请求 url 找到具体的处理器...#{} 可以有效的防止 SQL 注入,提高系统安全性;${} 不能防止 SQL 注入 #{} 的变量替换是在数据库系统中; ${} 的变量替换是在 数据库系统外 14- Mybatis 如何获取生成的主键...第 2 种: 通过 ResultMap 来映射字段名和实体类属性名 16- Mybatis 如何实现多表查询 Mybatis 是新多表查询的方式也有二种 : 第一种是 : 编写多表关联查询的 SQL 语句...Mybatis 动态 sql 可以让我们在 Xml 映射文件内,以标签的形式编写动态 sql,完成逻辑判断和动态 拼接 sql 的功能,Mybatis 提供了 9 种动态 sql 标签 trim|where...其执行原理为,使用 OGNL 从 sql 参数对象中计算表达式的值,根据表达式的值动态拼接 sql,以此 来完成动态 sql 的功能。 18- Mybatis 是否支持延迟加载?
但是也可以使用任意的输入流(InputStream)实例,包括字符串形式的文件路径或者 file:// 的 URL 形式的文件路径来配置。...mappers 元素则是包含一组映射器(mapper),这些映射器的 XML 映射文件包含了 SQL 代码和映射定义信息。 ...任何字符串 未设置 logImpl 指定 MyBatis 所用日志的具体实现,未指定时将自动查找。...1.1.4 typeHandlers(类型处理器) 无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时, 都会用类型处理器将获取的值以合适的方式转换成...你可以通过这个接口来执行命令,获取映射器和管理事务。我们会概括讨论一下 SqlSession 本身,但是首先我们还是要了解如何获取一个 SqlSession 实例。
不管使用哪种方式形式都是下面的形式,指定符号为resource、url、class、name 的字符串"/> .........比如 cacheEnabled 表示:全局地开启或关闭配置文件中的所有映射器已经配置的任何缓存。 ...,但是却无时无刻不再被使用 无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时, 都会用类型处理器将获取的值以合适的方式转换成 Java...在Mybatis中使用的是数据库厂商标识符 每个数据库都有一个名称字符串,可以通过方法进行获取,假设MYSQL 返回的字符串标识符为 mysql 现在我知道了目标数据库的名称,我如果知道哪些SQL是这个数据库的不就好了么...对象工厂 objectFactory MyBatis是我们仅仅专注于SQL的编写,完成了字段到Java类型对象的转换 既然是ORM框架,从关系型数据库中检索到的信息终归是要创建对象的 在Mybatis
SQL 语句在代码中硬编码,造成代码不易维护,实际应用 SQL 变化的可能较大,SQL 变动需要改变 Java 代码。 查询操作时,需要手动将结果集中的数据手动封装到实体中。...SQL 语句中使用 #{实体属性名} 方式引用实体中的属性值,#{} 表示一个占位符号,可以实现 preparedStatement 向占位符中设置值,自动进行 Java 和 JDBC 类型的转换;$...{} 表示拼接 SQL 字符串,不进行 JDBC 类型转换 插入操作使用的 API 是 sqlSession.insert(“命名空间.id”, 实体对象); 插入操作涉及数据库数据变化,所以要使用 sqlSession...(InputStream inputStream) 通过加载 MyBatis 的核心文件的输入流的形式构建一个 SqlSessionFactory 对象 String resource = "org/mybatis...) - 参数为是否自动提交,如果设置为 true,那么不需要手动提交事务 `SqlSession` 会话对象 SqlSession 实例在 MyBatis 中是非常强大的一个类,拥有所有执行语句、提交或回滚事务和获取映射器实例的方法
而从MyBatis 3开始,还支持接口映射器,这种映射器方式允许以Java代码的方式注解定义SQL语句,非常简洁。 ? XML映射器 xml映射器是MyBatis原生支持的方式,功能非常强大。...需要注意的是:当MyBatis在Spring框架中集成使用时,不需要直接从sqlSessionFactory中获取sqlSession对象,而是可以使用spring管理的sqlSession对象。...(); // 从xml映射配置中查询 Test test = sqlSession.selectOne("org.chench.test.mybatis.mapper.selectOneTest", 1...接口映射器 接口映射器是从MyBatis 3才开始支持的,其实就是支持在Java接口方法上通过注解方式编写SQL语句,而不再需要xml文件格式的配置。...从MyBatis 3开始,同时支持2种类型的映射器:xml映射器和接口映射器。
4) Mapper Mapper (实际上是一个代理对象)是从SqISession中获取的。...从 Java类型到JDBC类型 从 JDBC类型到Java类型 setNonNullParameter:设置非空参数 getNullableResult:获取空结果集(根据列名),一般都是调用这个 getNullableResult...5.8.逻辑翻页 MyBatis里面有一个逻辑分页对象RowBounds,里面主要有两个属性,offset和 limit (从第几条开始,查询多少条) 我们可以在Mapper接口的方法上加上这个参数,...把这个包含了 Criteria的实体类作为参数传到查询参数中,在解析Mapper 映射器的时候会转换成SQL条件。...注解的缺点是SQL无法集中管理,复杂的SQL很难配置。所以建议在业务复杂的项 目中只使用XML配置的形式,业务简单的项目中可以使用注解和XML混用的形式。
领取专属 10元无门槛券
手把手带您无忧上云