随笔 - 1162
文章 - 0
评论 - 16
阅读 -
59万
09 2021 档案
MyBatisPlus 之 Oracle 数据库主键
摘要:一、 二、 三、
阅读全文
MyBatisPlus 之 公共字段自动填充
摘要:一、 二、 三、 四、 五、 六、
阅读全文
MyBatisPlus 之 全局SQL注入器应用
摘要:一、 二、 三、 四、 五、 六、
阅读全文
MyBatisPlus 之 自定义全局操作
摘要:一、 二、 三、 四、 五、
阅读全文
MyBatisPlus 之 代码生成器
摘要:一、代码生成器 1、MP 提供了大量的自定义设置,生成的代码完全能够满足各类型的需求。 2、表及字段命名策略选择 在 MP 中,我们建议数据库表名 和 表字段采用驼峰命名方式,如果采用下划线命名方式,请开启全局下划线开关,如果表名字段方式不一致请注解指定,建议最好保持一致。 这么做的原因是为了避免在
阅读全文
MyBatisPlus 之 插件扩展
摘要:一、MyBatis 插件机制简介 1、插件机制 MyBatis 通过插件(Interceptor)可以做到四大对象相关方法的执行,根据需求,完成相关数据的动态改变。 四大对象 Executor StatementHandler ParameterHandler ResultSetHandler 2、
阅读全文
MyBatisPlus 之 活动记录(ActiveRecord)
摘要:一、ActiveRecord(活动记录) Active Record (活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。 ActiveRecord 一直广受动态语言(PHP、Ruby 等)的喜爱,而 Java 作为静态语言,对于 Ac
阅读全文
MyBatisPlus 之 条件构造器 EntityWrapper
摘要:一、EntityWrapper 简介 1、MyBatis-Plus 通过 EntityWrapper(简称 EW,MP封装的一个查询条件构造器)或者 Condition(与EW类似)来让用户自由的构建查询条件,简单便捷,没有额外的负担,能够有效提高开发效率。 2、实体包装器,主要用于处理 SQL拼接
阅读全文
MyBatisPlus 之 全局策略配置
摘要:MP 全局策略配置 使用 Spring 整合 MyBatis 之后,可以在 Spring 的配置文件中进行 MP 的全局配置。 如下: <!-- 定义MyBatisPlus的全局策略配置 --> <bean id="globalConfig" class="com.baomidou.mybatisp
阅读全文
MyBatisPlus 之 常用注解
摘要:常用注解 1、@TableId /** * TableId * value 指定表中主键列的列名,如果实体属性名与列名一致,可以省略不指定 * type 指定主键策略 */ @TableId(value = "id", type = IdType.AUTO) private Integer id;
阅读全文
MyBatisPlus 之 入门HelloWorld
摘要:一、通用 CRUD 1、提出问题: 假设我们已经存在一张 tbl_employee 表,且已经有对应的实体类 Employee,实现 tbl_employee 表的 CRUD 操作需要做什么呢? 2、实现方式: 基于 MyBatis: ① 需要编写 EmployeeMapper 接口,并手动编写CR
阅读全文
MyBatisPlus 之 集成MP
摘要:一、搭建环境 1、创建测试表 -- 创建库 CREATE DATABASE mybatis_plus; -- 使用库 USE mybatis_plus; -- 创建表 CREATE TABLE tbl_employee( id INT(11) PRIMARY KEY AUTO_INCREMENT,
阅读全文
MyBatisPlus 之 MyBatis 简介
摘要:一、MyBatis-Plus介绍 MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 愿景:我们的愿景是成为 MyBatis 最好
阅读全文
MyBatis(十一)扩展:自定义类型处理器
摘要:一、TypeHandler TypeHandler 在MyBatis中进行数据库类型和JavaBean类型的映射。 TypeHandler<T> 接口: 该接口中声明了四个抽象方法,说明如下: //将parameter对象转换为字符串存入到 ps 对象的i位置 public abstract voi
阅读全文
MyBatis(十一)扩展:批量操作
摘要:一、批量操作 默认的 openSession() 方法没有参数,它会创建有如下特性的 会开启一个事务(也就是不自动提交) 连接对象会从由活动环境配置的数据源实例得到 事务隔离级别将会使用驱动或数据源的默认设置 预处理语句不会被复用,也不会批量处理更新 openSession 方法的 Executor
阅读全文
MyBatis(十一)扩展:存储过程
摘要:一、存储过程 实际开发中,我们通常也会写一些存储过程,MyBatis也支持对存储过程的调用。 一个最简单的存储过程: delimiter delimiter ; 存储过程的调用: ① se
阅读全文
MyBatis(十一)扩展:分页插件PageHelper
摘要:一、PageHelper 插件介绍 PageHelper是MyBatis中非常方便的第三方分页插件。 官方文档:https://github.com/pagehelper/MybatisPageHelper/blob/master/README_zh.md 我们可以对照官方文档的说明,快速的使用插件
阅读全文
MyBatis(十)插件开发 之 开发自定义插件
摘要:一、动态改变SQL运行的参数 我们可以在目标方法放行前后,做非常多的事情,以到达动态修改 MyBatis 的运行流程。 在上面的插件开发基础上,当我们测试要查询id为1号的员工时,实际从数据库查询3号员工。 插件的实现: /** * 完成插件签名 * 告诉MyBatis当前插件用用来拦截哪个对象的哪
阅读全文
MyBatis(十)插件开发 之 插件运行原理
摘要:一、插件开发 MyBatis在四大对象的创建过程中,都会有插件进行介入。 插件可以利用动态代理机制一层层的包装目标对象,而实现在目标对象执行目标方法之前进行拦截的效果。 MyBatis 允许在已映射语句执行过程中的某一点进行拦截调用。 默认情况下, MyBatis 允许使用插件来拦截的方法调用包括:
阅读全文
05第二章:04-使用通用 Mapper
摘要:一、定义接口 继承通用的Mapper,必须指定泛型 例如下面的例子: public interface UserInfoMapper extends Mapper<UserInfo> { //其他必须手写的接口...} 一旦继承了Mapper,继承的Mapper就拥有了Mapper所有的通用方法。
阅读全文
17第十四章:01-通用Mapper接口大全
摘要:Mapper 接口大全 Mapper3接口有两种形式,一种是提供了一个方法的接口。还有一种是不提供方法,但是继承了多个单方法的接口,一般是某类方法的集合。 例如SelectMapper<T>是一个单方法的接口,BaseSelectMapper<T>是一个继承了4个基础查询方法的接口。 基础接口 1、
阅读全文
14第十一章:01-自定义类型处理器
摘要:一、简单类型与复杂类型 1、三个类型 User类: @Table(name = "table_user")public class User { @Id private Integer userId; private String userName; private Address address;
阅读全文
15第十二章:01-通用Mapper配置项
摘要:官方文档:https://github.com/abel533/Mapper/wiki/3.config
阅读全文
13第十章:01-二级缓存
摘要:一、开启二级缓存 1、在 MyBatis 的配置文件中开启二级缓存 <settings> <setting name="cacheEnabled" value="true"/> </settings> 2、在使用的 Mapper 接口上面添加注解 @CacheNamespace @CacheName
阅读全文
12第九章:01-通用Mapper接口扩展
摘要:一、通用Mapper接口扩展 1、说明 这里的扩展是指增加通用Mapper提供的功能。 2、举例 通用Mapper官方文档中使用一个批量 insert 作为扩展功能的例子: tk.mybatis.mapper.additional.insert.InsertListMapper<T>tk.mybat
阅读全文
11第八章:01-自定义Mapper接口
摘要:Mapper 体系结构 自定义接口 1、自定义接口用途 可以根据开发的实际需要对Mapper 接口进行定制 如果你想按需选择接口,不想使用Mapper包含的那么多的方法,你可以创建自己的MyMapper,自己搭配想要的方法。 2、创建自定义MyMapper 接口 3、配置自定义接口 配置Mapper
阅读全文
10第七章:01-逆向工程
摘要:一、逆向工程 1、原生 MyBatis 逆向工程与通用 Mapper 逆向工程对比 2、参考文档地址 Github地址: 通用Mapper博客:https://mapperhelper.github.io/docs/ MyBatis Generator 插件:https://mapperhelper
阅读全文
09第六章:01-分页查询
摘要:一、分页查询 1、selectByRowBounds(T record, RowBounds rowBounds) 说明:根据实体属性和RowBounds进行分页查询 案例: /** * SELECT emp_id,emp_name,emp_salary,emp_age FROM tabple_em
阅读全文
08第五章:01-QBC查询
摘要:一、QBC 查询 概念:Query By Criteria Criteria 是 Criterion 的复数形式,意思是规则、标准、准则。在SQL语句中相当于查询条件。 QBC 查询是将查询条件通过java对象进行模块化封装。 二、案例 1、使用QBC 进行查询 /** * SELECT disti
阅读全文
07第四章:01-常用注解
摘要:常用注解 1、@Table 作用:建立实体类和数据库表之间的对应关系。 默认规则:实体类类名首字母小写作为表名,如 Employee -> employee 表 用法:在 @Table 注解的 name 属性中指定目标数据库的表名; 案例: 2、@Column 作用:建立实体类字段和数据库表字段之间
阅读全文
06第三章:01-基本增删改查测试
摘要:一、基本查询 1、selectOne(T record) 说明:根据实体中的属性进行查询,只能有一个返回值,有多个结果是抛出异常,查询条件使用等号 案例: /** * SELECT emp_id,emp_name,emp_salary,emp_age FROM tabple_emp WHERE em
阅读全文
04第二章:03-Mapper接口创建与介绍
摘要:一、创建具体的Mapper接口 继承通用的Mapper,必须指定泛型,例如下面的例子: /** * * 具体操作数据库的Mapper接口,需要继承通用Mapper提供的核心接口 Mapper<T> * 泛型类型就是实体类的类型 * */public interface EmployeeMapper
阅读全文
03第二章:02-集成通用Mapper
摘要:一、添加依赖 加入Maven依赖信息 <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper</artifactId> <version>4.0.0-beta3</version></dependency> 如果你想引入Jar包,你
阅读全文
02第二章:01-搭建环境
摘要:一、准备数据库 创建数据库表并插入数据 CREATE DATABASE common_mapper;USE common_mapper;CREATE TABLE `tabple_emp`( `emp_id` INT NOT NULL AUTO_INCREMENT, `emp_name` VARCHA
阅读全文
01第一章:01-通用Mapper介绍
摘要:通用Mapper 一、作用: 替我们生成常用增删改查操作的SQL语句。 通用Mapper都可以极大的方便开发人员。可以随意的按照自己的需要选择通用方法,还可以很方便的开发自己的通用方法。 极其方便的使用MyBatis单表的增删改查。 支持单表操作,不支持通用的多表联合查询。 二、官方发布地址: ht
阅读全文
00通用Mapper【目录】
摘要:一、通用 Mapper 介绍 通用 Mapper 介绍 二、搭建环境 创建数据库并搭建开发环境 集成通用 Mapper 创建具体 Mapper 接口与 Mapper 接口介绍 三、使用通用 Mapper 使用通用 Mapper 基本增删改查测试 常用注解 四、QBC 查询 QBC 查询 五、分页查询
阅读全文
MyBatis(九)工作原理 之 MyBatis原理总结
摘要:MyBatis 简单案例: @Test public void test() throws IOException { //1、获取 sqlSessionFactory SqlSessionFactory sqlSessionFactory = getsqlSessionFactory(); //2
阅读全文
MyBatis(九)工作原理 之 查询实现流程
摘要:查询流程 查询流程总结 说明: StatementHandler:处理sql语句预编译,设置参数等相关工作; ParameterHandler:设置预编译参数用的 ResultHandler:处理结果集 TypeHandler:在整个过程中,进行数据库类型和javaBean类型的映射
阅读全文
MyBatis(九)工作原理 之 getMapper 获取接口的代理对象
摘要:获取代理对象 getMapper 返回接口的代理对象(包含了 SqlSession 对象)
阅读全文
MyBatis(九)工作原理 之 openSession 获取 SqlSession对象
摘要:获取 SqlSession 对象 返回 SqlSession 的实现类 DefaultSqlSession 对象,他里面包含了 Executor 和 Configuration;Executor 会在这一步被创建。
阅读全文
MyBatis(九)工作原理 之 SQLSessionFactory 的初始化
摘要:根据配置文件创建 SQLSessionFactory Configuration 封装了所有配置文件的详细信息。 总结:把配置文件的信息解析并保存在 Configuration 对象中,返回包含了 Configuration 的 DefaultSqlSession 对象。
阅读全文
MyBatis(九)工作原理 之 框架分层架构
摘要:MyBatis 框架分层架构 MyBatis 简单案例: public SqlSessionFactory getsqlSessionFactory() throws IOException { String resource = "mybatis-config.xml"; InputStream
阅读全文
MyBatis(八)MyBatis-逆向工程
摘要:一、逆向工程简介 MyBatis Generator:简称 MBG,是一个专门为 MyBatis 框架使用者定制的代码生成器,可以快速的根据表生成对应的映射文件,接口,以及 bean 类。 支持基本的增删改查,以及 QBC 风格的查询,但是表连接、存储过程等这些复杂 sql 的定义需要手工编写。 官
阅读全文
MyBatis(七)SSM 整合:MyBatis-Spring-SpringMVC 整合
摘要:一、前提 1、查看不同 MyBatis 版本整合 Spring 时使用的适配包 http://www.mybatis.org/spring/ 2、下载整合适配包 https://github.com/mybatis/spring/releases 3、官方整合示例 jpetstore https:/
阅读全文
MyBatis(六)缓存机制 之 整合第三方缓存
摘要:一、整合第三方缓存 1、为了提高扩展性。MyBatis 定义了缓存接口 Cache。可以通过实现 Cache 接口来自定义二级缓存;(在二级缓存的基础上来设置,只是需要指定二级缓存的技术) 2、EhCache 是一个纯 Java 的进程内缓存框架,具有快速、精干等特点,是 Hibernate 中默认
阅读全文
MyBatis(六)缓存机制 之 缓存原理图
摘要:缓存原理图: 执行流程:当执行一条查询SQL时, 流程为从二级缓存中进行查询,如果没有查到进入一级缓存中查询,最后执行 JDBC 查询。
阅读全文
MyBatis(六)缓存机制 之 缓存的相关属性设置
摘要:缓存相关设置 1、全局 setting 的 cacheEnable: cacheEnable:是否开启二级缓存 <!-- 是否开启二级缓存 --> <setting name="cacheEnabled" value="true"/> 取值: true:开启二级缓存 false:关闭缓存(关闭二级缓
阅读全文
MyBatis(六)缓存机制 之 二级缓存
摘要:一、二级缓存简介 1、简介 (1)二级缓存(second level cache),全局作用域缓存; (2)二级缓存默认不开启,需要手动配置; (3)MyBatis 提供二级缓存的接口以及实现,缓存实现要求 POJO 实现 Serializable 接口; (4)二级缓存在 SqlSession 关
阅读全文
MyBatis(六)缓存机制 之 一级缓存
摘要:一、一级缓存介绍 1、一级缓存(local cache),即本地缓存,作用域默认为 SqlSession。当 Session flush 或 close 后,该 session 中的所有 Cache 将被清空。 2、本地缓存不能被关闭,但可以调用 clearCache() 来清空本地缓存,或者改变缓
阅读全文
MyBatis(六)缓存机制 之 缓存机制简介
摘要:MyBatis 缓存机制 1、MyBatis 包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制。缓存可以极大的提升查询效率。 2、MyBatis 系统中默认定义了两级缓存:一级缓存,二级缓存; 3、默认情况下,只有一级缓存(SqlSession 级别的缓存,也称为本地缓存)开启。 4、二级
阅读全文
MyBatis(五)动态SQL 之 批量操作(删除)
摘要:一、批量删除 删除记录的时候,大多时候都是根据记录的 id 去删除,所以当实现批量删除的时候,只要我们想法传进去多个 id 值就可以了。 思路: 第一种方式:delete from tbl_employee where id in (1,2,3) 第二种方式:delete from tbl_empl
阅读全文
MyBatis(五)动态SQL 之 批量操作(更新)
摘要:一、批量修改 批量修改,分为两种情况: (1)把每条数据修改为相同内容 方式一:update emp set .... where eid in (1,2,3); 方式二:update emp set .... where eid = 1 or eid = 2 or eid = 3; (2)把每条数
阅读全文
MyBatis(五)动态SQL 之 批量操作(插入)
摘要:一、批量插入 在MySQL 下面实现批量添加在 values 后面添加多个数据,用逗号分隔 insert into emp values(),(),(),() 但是 MySQL 与 Oracle 插入方式不一致,下面具体分析。 二、MySQL 实现批量插入 1、方式一 MySQL 支持 values
阅读全文
MyBatis(五)动态SQL 之 批量操作(查询)
摘要:一、批量操作——查询 在实际工作,我们需要根据情况进行批量查询,批量查询,可以全部查询出来,也可以根据其他查询查询出来。 1、查询全部的数据 (1)在接口中声明方法 //查询所有对象,返回 list 集合 public List<Employee> getAllEmps(); (2)在对应的 xml
阅读全文
MyBatis(五)动态SQL 之 sql 标签(重用片段)
摘要:一、sql 标签 SQL 标签是用于抽取可重用的 SQL 片段,将相同的,使用频繁的 SQL 片段抽取出来,单独定义,方便多次引用。 抽取可重用的sql片段。方便后面引用 (1)sql抽取:经常将要查询的列名,或者插入用的列名抽取出来方便引用 (2)include来引用已经抽取的sql: (3)in
阅读全文
MyBatis(五)动态SQL 之 bind绑定
摘要:一、bind 标签 bind作用:可以将OGNL表达式的值绑定到一个变量中,方便后来引用这个变量的值。 在接口中声明方法: public List<Employee> getEmpsTestBind(Employee employee); 在对应xml文件中配置: <!-- bind 将OGNL表达
阅读全文
MyBatis(五)动态SQL 之 内置参数:_parameter&_databaseId
摘要:一、两个内置参数 不只是方法传递过来的参数可以被用来判断,取值。 mybatis默认还有两个内置参数: (1)_parameter:代表整个参数 单个参数:_parameter就是这个参数 多个参数:参数会被封装为一个map;_parameter 就是代表这个 map (2)_databaseId:
阅读全文
MyBatis(五)动态SQL 之 foreach 标签
摘要:一、foreach 标签 foreach:主要用于循环迭代 语法格式: <foreach collection="" item="" open="" close="" separator="" index=""></foreach> foreach 对一个数组或集合进行遍历 collection:指
阅读全文
MyBatis(五)动态SQL 之 set 标签
摘要:一、set 标签 set 主要是用于解决修改操作中 SQL 语句中可能多出逗号的问题。 在接口中声明方法: //修改员工信息 public void updateEmpByCondition(Employee employee); 在对应的 xml 中的配置: 1、使用${} 方式取值 <!-- p
阅读全文
MyBatis(五)动态SQL 之 trim 标签
摘要:一、trim 标签 语法: <trim prefix="" suffix="" prefixOverrides="" suffixOverrides="">:截取并拼接 属性说明: trim 标签用于截取并拼接,即可以在条件判断完的 SQL 语句前后,添加或者去掉指定的字符。 prefix:(添加前
阅读全文
MyBatis(五)动态SQL 之 choose(when、otherwise)标签
摘要:一、choose 标签 choose 主要用于分支判断,类似于 java 中带了 break的 switch...case,只会满足所有分支中的一个。 语法格式: <choose> <when test=""> 通过test表达式拼接SQL <when test=""> <otherwise></o
阅读全文
MyBatis(五)动态SQL 之 if 与 where 标签
摘要:一、SQL 多条件来查询 1、在 EmployeeMapper 接口中声明方法 //根据id, lastNname, age, sex多条件查询员工信息 public List<Emp> getEmpListByMoreCondition(Emp emp); 2、在 EmployeeMapper.x
阅读全文
MyBatis(五)动态SQL 之 动态SQL简介
摘要:一、动态 SQL 简介 1、动态 SQL 是 MyBatis 强大特性之一。极大的简化拼接 SQL 的操作; 2、动态 SQL 元素和使用 JSTL 或其他类似基于 XML 的文本处理器相似; 3、MyBatis 采用功能强大的基于 OGNL 的表达式来简化操作 if 标签 choose(when,
阅读全文
MyBatis(四)映射文件 之 resultMap:鉴别器
摘要:一、鉴别器 鉴别器:mybatis可以使用discriminator判断某列的值,然后根据某列的值改变封装行为 <discriminator javaType=""> <case value=""></case> </discriminator> 案例: 封装 Employee: 如果查出的是女生:
阅读全文
MyBatis(四)映射文件 之 分步查询与懒加载
摘要:一、分步查询 1、分步查询 在前面已经使用了 association 和 collection 的分步查询。 <resultMap type="Dept" id="deptMapStep"> <id column="did" property="did"/> <result column="dnam
阅读全文
MyBatis(四)映射文件 之 注解开发
摘要:一、注解开发 在面向接口开发中,我们可以在接口中声明方法,然后通用配置其对应的SQL映射文件来实现增删改查,当我们面对一些简单的SQL语句时,还有一种更简单的开发方式,那就是通过注解开发,省略掉SQL映射文件。 使用注解开发: public interface EmployeeMapperAnnot
阅读全文
MyBatis(四)映射文件 之 一对多映射查询
摘要:一、一对多映射关系 POJO 中的属性可能会是一个对象的集合,当我们查询一方的信息时,还想要知道多方的信息,就需要用到一对多查询。(如:查询部门信息,同时查询部门中的员工信息) 使用 collection 标签来定义对象的封装规则。 两个 JavaBean 类: Employee 类 public
阅读全文
MyBatis(四)映射文件 之 多对一映射查询
摘要:一、多对一映射关系 POJO 中的属性可能会是一个对象,当我们查询多方的信息时,还想要知道一方的信息,就需要用到一对多查询。 我们可以使用联合查询,并以级联属性的方式封装对象,使用 association 标签来定义对象的封装规则。 两个 JavaBean 类: Employee 类 public
阅读全文
MyBatis(四)映射文件 之 resultMap 自定义映射
摘要:一、resultMap 自定义映射 1、resultMap 是什么 resultMap 是自定义的映射关系,可实现高级结果集映射。 注意:resultMap 不能与 resultType 同时使用。 2、子标签说明 constructor - 类在实例化时, 用来注入结果到构造方法中 – idArg
阅读全文
MyBatis(四)映射文件 之 resultType 自动映射
摘要:resultType 自动映射 1、全局 setting 设置 (1)autoMappingBehavior 默认是 PARTIAL,开启自定映射的功能。唯一的要求是结果集列名和 JavaBean 属性名一致; <settings> <!-- 指定是否以及如何自动映射指定的列到字段或属性 --> <
阅读全文
MyBatis(四)映射文件 之 查询的几种情况
摘要:resultType:返回值类型,别名或者全类名,如果返回的是集合,定义集合中元素的类型。 resultType 与 resultMap 不能同时使用。 一、常见的查询情况 1、查询单行数据返回单个对象 //根据 id 查询一个员工信息 public Employee getEmpById(Inte
阅读全文
MyBatis(四)映射文件 之 参数获取详解#{} 与 ${}
摘要:一、#{} 与{}:可以获取map中的值或者pojo对象属性的值; 区别: #{}:是以预编译的形式,将参数设置到sql语句中;PreparedStatement;防止sql注入; ${}:取出的值直接拼装在sql语
阅读全文
MyBatis(四)映射文件 之 参数处理
摘要:一、参数传递 1、单个参数 可以接收基本类型,包装类型,字符串类型等。 这种情况 MyBatis 可直接使用这个参数,不需要经过任何处理。 通过 #{参数名/任意名}:取出参数值; 2、多个参数 任意多个参数,都会被 MyBatis 重新包装成一个 Map 传入。 Map 的 key 是 param
阅读全文
MyBatis(四)映射文件 之 parameterType 属性
摘要:parameterType 属性 当在执行 insert 或 update 操作时,需要传递一个 JavaBean 对象。 <!-- public void addEmp(Emp emp); --> <insert id="addEmp"> insert into emp values(null,
阅读全文
MyBatis(四)映射文件 之 主键生成策略
摘要:一、主键生成方式 1、支持主键自增,例如:MySQL数据库 2、不支持主键自增,例如:Oracle 数据库 常见需求:插入一条新数据,立马获取新数据的主键,然后查询这条数据 二、原生 JDBC 中的主键生成 在原生 JDBC 中有这样一个方法 conn.prepareStatement(sql, a
阅读全文
MyBatis(四)映射文件 之 增删改查
摘要:一、准备工作 1、创建数据库中对应的 JavaBean public class Employee { private Integer id; private String lastName; private String gender; private String email; public E
阅读全文
MyBatis(四)映射文件
摘要:1、MyBatis 的真正强大在于它的映射语句,也是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。 MyBatis 就是针对 SQL 构建的,并且比普通的方法做的更好。 2、SQL 映射
阅读全文
MyBatis(三)全局配置文件 之 databaseProvider 数据库厂商标识
摘要:databaseIdProvider环境 一、databaseIdProvider 属性 MyBatis 可以根据不同的数据库厂商执行不同的语句 <databaseIdProvider type="DB_VENDOR"> <!-- 为不同的数据库厂商起别名 --> <property name="M
阅读全文
MyBatis(三)全局配置文件 之 mappers 映射器
摘要:mappers 映射器 一、mappers 映射器 用来在 MyBatis 初始化的时候,告诉 myBatis 需要引入哪些 Mapper 映射文件 二、注册SQL映射文件 1、逐个注册 mapper 逐个注册 SQL 映射文件 (1)注册配置文件方式 ① resources:引入类路径下的文件sq
阅读全文
MyBatis(三)全局配置文件 之 environments 环境配置
摘要:environment环境配置 一、environment 环境配置 1、MyBatis 可以配置多种环境,比如开发、测试和生成环境需要有不同的配置 2、每种环境使用一个 environment 标签进行配置并指定唯一标识符 3、可以通过 environment 标签中的 default 属性指定一
阅读全文
MyBatis(三)全局配置文件 之 plugins 插件
摘要:plugins插件 一、关于插件 插件是MyBatis提供的一个非常强大的机制,我们可以通过插件来修改MyBatis的一些核心行为。 插件通过动态代理机制,可以介入四大对象的任何一个方法的执行。后面会有专门的章节我们来介绍mybatis运行原理以及插件。 二、四大对象 (1)Executor (up
阅读全文
MyBatis(三)全局配置文件 之 typeHandlers 类型处理器
摘要:typeHandlers类型处理器 一、typeHandlers类型处理器 无论是 MyBatis 在预处理语句(PreparedStatement) 中设置一个参数时,还是从结果集中取出一个值时,都会用类型处理器将获取的值以合适的方式转换成 Java 类型。 二、MyBatis 中提供的类型处理器
阅读全文
MyBatis(三)全局配置文件 之 typeAliases 类型命名
摘要:typeAliases 类型命名 typeAliases 别名处理器:可以为我们的java类型起别名(别名不区分大小写) 方式一: 类型别名是为 Java 类型设置一个短的名字,可以方便我们引用某个类 <typeAliases> <!-- 为类型设置类型别名 type:指定的要起别名的类型的全类名,
阅读全文
MyBatis(三)全局配置文件 之 properties 属性
摘要:Properties 属性 Mybatis 可以使用 properties 来引入外部properties配置文件或资源文件中的内容。 properties 标签有两个属性: resource:引入类路径下的资源; url:引入网络路径或者磁盘路径下的资源。 方式一: 可外部配置且可动态替换的,既可
阅读全文
MyBatis(三)全局配置文件 之 settings 设置
摘要:Settings 设置 setting:用来设置每一设置项 name:设置项名 value:设置项取项 这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。包含如下的 setting 设置 <settings> <setting name="cacheEnabled
阅读全文
MyBatis(三)全局配置文件
摘要:一、全局配置文件概述(全局配置文件) The MyBatis configuration contains setting and properties that have a dramatic effect on how MyBatis behave。 MyBatis 的配置文件包含了影响 MyB
阅读全文
MyBatis(二)HelloWorld 案例
摘要:一、准备工作 1、创建数据库和表信息 DROP DATABASE IF EXISTS mybatis; CREATE DATABASE mybatis; DROP TABLE IF EXISTS tbl_employee; CREATE TABLE IF NOT EXISTS tbl_employe
阅读全文
MyBatis(一)MyBatis 简介与下载
摘要:一、MyBatis 简介 1、MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架; 2、MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集; 3、MyBatist 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJO(
阅读全文
JavaWeb 案例10 — 生成验证码
摘要:一、谷歌 kaptcha 图片验证码的使用 1、导入谷歌验证码 kaptcha 的 jar 包 1 <dependency> 2 <groupId>com.github.penggle</groupId> 3 <artifactId>kaptcha</artifactId> 4 <version>2
阅读全文
JavaWeb 案例9 — 表单重复提交问题
摘要:一、表单重复提交问题 1、方式一 提交完表单。 服务器使用请求转来进行页面跳转。 这个时候, 用户按下功能键 F5, 就会发起最后一次的请求。造成表单重复提交问题。 解决方法: 使用重定向来进行跳转 2、方式二 用户正常提交服务器, 但是由于网络延迟等原因, 迟迟未收到服务器的响应, 这个时候, 用
阅读全文