
Mybatis
文章平均质量分 69
吴声子夜歌
个人学习记录
展开
-
MyBatis——一级缓存与二级缓存
该修改在原来方法的基础上增加了f1 ushCache:=“true”,这个属性配置为true后,会在查询数据前清空当前的一级缓存,因此该方法每次都会重新从数据库中查询数据,此时的user2和user1就会成为两个不同的实例,可以避免上面的问题。首先从MyBatis最简单的二级缓存配置开始。这是因为Mapper接口和对应的XML文件是相同的命名空间,想使用二级缓存,两者必须同时配置(如果接口不存在使用注解方式的方法,可以只在XML中配置),因此按照上面的方式进行配置就会出错,这个时候应该使用参照缓存。原创 2023-05-19 14:57:08 · 380 阅读 · 0 评论 -
MyBatis--基于注解的动态SQL实例
POJOpackage pers.zhang.pojo;public class UserInfo { private int id; private String userName; private String password; private String realName; private String sex; private St...原创 2019-11-30 17:22:07 · 760 阅读 · 0 评论 -
MyBatis--注解增删改查和级联查询
Mybatis注解的使用实例创建Maven工程及配置依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLoca...原创 2019-11-30 13:16:52 · 752 阅读 · 0 评论 -
Maven--SSM使用PageHelper分页
SSM使用PageHelper分页1.准备表和数据CREATE TABLE `goods` ( `goods_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '商品id', `goods_name` varchar(255) DEFAULT NULL COMMENT '商品名称', `goods_type` varchar(255) DEFA...原创 2019-11-14 21:59:56 · 615 阅读 · 1 评论 -
MyBatis--与Spring的整合步骤
导入相关JAR包1)MyBatis 框架所需的 JAR 包MyBatis 框架所需的 JAR 包包括它的核心包和依赖包。2)Spring 框架所需的 JAR 包Spring 框架所需的 JAR 包包括它的核心模块 JAR、AOP 开发使用的 JAR、JDBC 和事务的 JAR 包(其中依赖包不需要再导入,因为 MyBatis 已提供),具体如下:aopalliance-1.0.jar...原创 2019-10-29 15:29:29 · 730 阅读 · 0 评论 -
MyBatis--BlobTypeHandler读取Blob类型字段
BlobTypeHandler读取Blob类型字段MyBatis 对数据库的 Blob 字段也进行了支持,它提供了一个 BlobTypeHandler,为了应付更多的场景,它还提供了 ByteArrayTypeHandler,只是它不太常用,这里为读者展示 BlobTypeHandler 的使用方法。首先建一个表。create table file( id int(12) not nu...原创 2019-10-29 15:21:30 · 4711 阅读 · 0 评论 -
MyBatis--自定义TypeHandler处理枚举
自定义TypeHandler处理枚举在绝大多数情况下,typeHandler 因为枚举而使用,MyBatis 已经定义了两个类作为枚举类型的支持,这两个类分别是:EnumOrdinalTypeHandler。EnumTypeHandler。示例:创建一个性别枚举类:SexEnumpackage com.mybatis.po;public enum SexEnum { M...原创 2019-10-29 15:17:55 · 916 阅读 · 0 评论 -
MyBatis--自定义TypeHandler
自定义TypeHandler要实现 typeHandler 就需要去实现接口 typeHandler,或者继承 BaseTypeHandler(实际上,BaseTypeHandler 实现了 typeHandler 接口)。自定义String类型的TypeHandler:import java.sql.CallableStatement;import java.sql.PreparedSt...原创 2019-10-29 09:18:16 · 599 阅读 · 0 评论 -
MyBatis--系统定义的TypeHandler、BaseTypeHandler和StringTypeHandler源码分析
系统定义的TypeHandlerMyBatis 内部定义了许多有用的 typeHandler,如下表所示。类型处理器Java类型JDBC类型BooleanTypeHandlerjava.lang.Boolean,boolean数据库兼容的 BOOLEANByteTypeHandlerjava.lang.Byte,byte数据库兼容的 NUMERIC 或 BY...原创 2019-10-29 09:10:13 · 11182 阅读 · 0 评论 -
MyBatis--TypeHandler类型转换器概述
TypeHandler类型转换器在 JDBC 中,需要在 PreparedStatement 对象中设置那些已经预编译过的 SQL 语句的参数。执行 SQL 后,会通过 ResultSet 对象获取得到数据库的数据,而这些 MyBatis 是根据数据的类型通过 typeHandler 来实现的。在 typeHandler 中,分为 jdbcType 和 javaType,其中 jdbcType...原创 2019-10-29 08:53:44 · 475 阅读 · 0 评论 -
MyBatis--多对多关联查询(级联查询)
多对多关联查询创建表及准备数据:create table book( bid int primary key auto_increment, bname varchar(20) );create table category( cid int primary key auto_increm...原创 2019-10-28 23:29:12 · 620 阅读 · 0 评论 -
MyBatis一对多关联查询(级联查询)
一对多级联查询创建表及准备数据:CREATE TABLE `user` ( `uid` tinyint(2) NOT NULL, `uname` varchar(20) DEFAULT NULL, `usex` varchar(10) DEFAULT NULL, PRIMARY KEY (`uid`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;...原创 2019-10-28 22:25:35 · 790 阅读 · 0 评论 -
MyBatis--一对一关联查询(级联查询)的三种方式
一对一关联查询在 MyBatis 中,通过 元素的子元素 处理这种一对一级联关系。在 元素中通常使用以下属性。property:指定映射到实体类的对象属性。column:指定表中对应的字段(即查询返回的列名)javaType:指定映射到实体对象属性的类型。select:指定引入嵌套查询的子 SQL 语句,该属性用于关联映射中的嵌套查询。示例下面以个人与身份证之间的关系为例...原创 2019-10-28 18:21:54 · 3588 阅读 · 0 评论 -
MyBatis--动态sql之foreach标签
<foreach>标签 元素主要用在构建 in 条件中,它可以在 SQL 语句中迭代一个集合。 元素的属性主要有 item、index、collection、open、separator、close。item 表示集合中每一个元素进行迭代时的别名。index 指定一个名字,用于表示在迭代过程中每次迭代到的位置。open 表示该语句以什么开始。separator 表示在每次...原创 2019-10-27 19:04:53 · 633 阅读 · 0 评论 -
MyBatis--动态sql之bind标签
<bing>标签在进行模糊查询时,如果使用“${}”拼接字符串,则无法防止 SQL 注入问题。如果使用字符串拼接函数或连接符号,但不同数据库的拼接函数或连接符号不同。例如 MySQL 的 concat 函数、Oracle 的连接符号“||”,这样 SQL 映射文件就需要根据不同的数据库提供不同的实现,显然比较麻烦,且不利于代码的移植。幸运的是,MyBatis 提供了 <bin...原创 2019-10-27 18:16:12 · 2453 阅读 · 0 评论 -
MyBatis--动态sql之trim、where、set标签
<trim>元素<trim> 元素的主要功能是可以在自己包含的内容前加上某些前缀,也可以在其后加上某些后缀,与之对应的属性是 prefix 和 suffix。可以把包含内容的首部某些内容覆盖,即忽略,也可以把尾部的某些内容覆盖,对应的属性是 prefixOverrides 和 suffixOverrides。正因为 <trim> 元素有这样的功能,所以也可以...原创 2019-10-27 18:13:24 · 810 阅读 · 0 评论 -
MyBatis--动态sql之choose、when、otherwise标签
choose、when和otherwise有些时候不想用到所有的条件语句,而只想从中择取一二,针对这种情况,MyBatis 提供了 元素,它有点像 Java 中的 switch 语句。示例1)添加 SQL 映射语句:<!--使用choose、when、otherwise元素根据条件动态查询用户信息--><select id="selectUserByChoose" r...原创 2019-10-27 17:33:31 · 2106 阅读 · 0 评论 -
MyBatis--动态sql之if标签:条件判断
if标签动态 SQL 通常要做的事情是有条件地包含 where 子句的一部分,所以在 MyBatis 中 <if> 元素是最常用的元素,它类似于 Java 中的 if 语句。示例1)添加 SQL 映射语句:<!--使用 if 元素根据条件动态查询用户信息--><select id="selectUserByIf" resultType="com.po.MyU...原创 2019-10-27 17:25:06 · 2151 阅读 · 0 评论 -
MyBatis--resultMap元素的结构及使用
resultMap元素的结构<resultMap id="" type=""> <constructor><!-- 类再实例化时用来注入结果到构造方法 --> <idArg/><!-- ID参数,结果为ID --> <arg/><!-- 注入到构造方法的一个普通结果 -->...原创 2019-10-27 17:12:33 · 1807 阅读 · 0 评论 -
MyBatis中的insert、update、delete和sql标签
insert 元素用于映射插入语句,MyBatis 执行完一条插入语句后将返回一个整数表示其影响的行数。keyProperty:该属性的作用是将插入或更新操作时的返回值赋给 PO 类的某个属性,通常会设置为主键对应的属性。如果是联合主键,可以将多个值用逗号隔开。keyColumn:该属性用于设置第几列是主键,当主键列不是表中的第 1 列时需要设置。如果是联合主键,可以将多个值用逗号隔开。...原创 2019-10-27 17:05:01 · 3037 阅读 · 0 评论 -
Mybatis--select标签传递多个参数(Map方式、JavaBean方式)
SELECT标签在 SQL 映射文件中 元素用于映射 SQL 的 select 语句,其示例代码如下<!--根据uid查询一个用户信息 --><select id="selectUserById" parameterType="Integer" resultType="com.mybatis.po.MyUser"> select * from user wh...原创 2019-10-27 16:49:54 · 5069 阅读 · 0 评论 -
MyBatis--执行SQL的两种方式:SqlSession和Mapper接口
SqlSession 发送 SQL有了映射器就可以通过 SqlSession 发送 SQL 了。我们以 getRole 这条 SQL 为例看看如何发送 SQL。Role role = (Role)sqlSession.select("com.mybatis.mapper.RoleMapper.getRole",1L);selectOne 方法表示使用查询并且只返回一个对象,而参数则是一个 ...原创 2019-10-27 10:35:51 · 1721 阅读 · 0 评论 -
MyBatis--SqlSession概述
SqlSession概述在 MyBatis 中,SqlSession 是其核心接口。在 MyBatis 中有两个实现类,DefaultSqlSession 和 SqlSessionManager。DefaultSqlSession 是单线程使用的,而 SqlSessionManager 在多线程环境下使用。SqlSession 的作用类似于一个 JDBC 中的 Connection 对象,代表...原创 2019-10-27 10:30:03 · 1354 阅读 · 0 评论 -
MyBatis--实现映射器的2种方式:XML文件形式和注解形式
映射器是 MyBatis 中最重要、最复杂的组件,它由一个接口和对应的 XML 文件(或注解)组成。它可以配置以下内容:描述映射规则。提供 SQL 语句,并可以配置 SQL 参数类型、返回类型、缓存刷新等信息。配置缓存。提供动态 SQL。准备一张表:CREATE TABLE `role` ( `id` bigint(20) NOT NULL, `role_name`...原创 2019-10-27 10:19:11 · 1783 阅读 · 1 评论 -
MyBatis--配置typeAliases(别名)详解
typeAliases由于类的全限定名称很长,需要大量使用的时候,总写那么长的名称不方便。在 MyBatis 中允许定义一个简写来代表这个类,这就是别名,别名分为系统定义别名和自定义别名。在 MyBatis 中别名由类 TypeAliasRegistry(org.apache.ibatis.type.TypeAliasRegistry)去定义。注意: 在 MyBatis 中别名不区分大小写。...原创 2019-10-26 10:21:43 · 2901 阅读 · 0 评论 -
MyBatis--settings属性配置详解
settings在 MyBatis 中 settings 是最复杂的配置,它能深刻影响 MyBatis 底层的运行,但是在大部分情况下使用默认值便可以运行,所以在大部分情况下不需要大量配置它,只需要修改一些常用的规则即可,比如自动映射、驼峰命名映射、级联规则、是否启动缓存、执行器(Executor)类型等。settings 配置项说明,如下表所示:配置项作用配置选项默认值...原创 2019-10-26 10:01:53 · 1756 阅读 · 0 评论 -
MyBatis--核心配置文件properties元素
propertiesproperties 属性可以给系统配置一些运行参数,可以放在 XML 文件或者 properties 文件中,而不是放在 Java 编码中,这样的好处在于方便参数修改,而不会引起代码的重新编译。一般而言,MyBatis 提供了 3 种方式让我们使用 properties,它们是:property 子元素。properties 文件。程序代码传递。property...原创 2019-10-26 09:44:44 · 1775 阅读 · 0 评论 -
MyBatis--配置文件详解
MyBatis配置文件详解<?xml version="1.0" encoding="utf-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration>...原创 2019-10-26 09:38:07 · 693 阅读 · 0 评论 -
MyBatis--SqlSessionFactoryBuilder、SqlSessionFactory和SqlSession的作用域以及生命周期
SqlSessionFactoryBuilderSqlSessionFactoryBuilder 的作用在于创建 SqlSessionFactory,创建成功后,SqlSessionFactoryBuilder 就失去了作用,所以它只能存在于创建 SqlSessionFactory 的方法中,而不要让其长期存在。因此 SqlSessionFactoryBuilder 实例的最佳作用域是方法作用域...原创 2019-10-25 22:41:04 · 2456 阅读 · 0 评论 -
MyBatis--单表增删改查
准备表创建项目并导包创建User类package pers.zhang.po;import java.io.Serializable;import java.util.Date;public class User implements Serializable { /** * */ private static final long serialVersionUI...原创 2019-10-25 20:00:12 · 768 阅读 · 0 评论 -
MyBatis--核心组件:SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession和SQL Mapper
核心组件MyBatis 的核心组件分为 4 个部分。SqlSessionFactoryBuilder(构造器):它会根据配置或者代码来生成 SqlSessionFactory,采用的是分步构建的 Builder 模式。SqlSessionFactory(工厂接口):依靠它来生成 SqlSession,使用的是工厂模式。SqlSession(会话):一个既可以发送 SQL 执行返回结果,也...原创 2019-10-25 17:21:19 · 721 阅读 · 0 评论 -
MyBatis--SqlSessionFactory概述及创建方式
SqlSessionFactory概述使用 MyBatis 首先是使用配置或者代码去生产 SqlSessionFactory,而 MyBatis 提供了构造器 SqlSessionFactoryBuilder。MyBatis提供了一个类org.apache.ibatis.session.Configuration 作为引导,采用的是 Builder 模式。具体的分步则是在 Configurat...原创 2019-10-25 11:50:42 · 2900 阅读 · 0 评论 -
MyBatis--基础环境搭建
建表DROP TABLE IF EXISTS `t_user`;CREATE TABLE `user` ( `uid` tinyint(2) NOT NULL, `uname` varchar(20) DEFAULT NULL, `usex` varchar(10) DEFAULT NULL, PRIMARY KEY (`uid`)) ENGINE=InnoDB DEFAUL...原创 2019-10-24 21:51:28 · 454 阅读 · 0 评论 -
MyBatis--工作原理
MyBatis工作原理读取 MyBatis 配置文件:mybatis-config.xml 为 MyBatis 的全局配置文件,配置了 MyBatis 的运行环境等信息,例如数据库连接信息。加载映射文件。映射文件即 SQL 映射文件,该文件中配置了操作数据库的 SQL 语句,需要在 MyBatis 配置文件 mybatis-config.xml 中加载。mybatis-config.xml...原创 2019-10-24 19:13:25 · 2468 阅读 · 0 评论 -
MyBatis--Mybatis概述、Hibernate与MyBatis区别
Mybatis概述MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动...原创 2019-10-24 18:01:08 · 582 阅读 · 0 评论