mybatis
亦心谷
这个作者很懒,什么都没留下…
展开
-
Mybatis动态SQL的实现
场景在实际应用开发过程中,我们往往需要写复杂的 SQL 语句,需要拼接,而拼接SQL语句又稍微不注意,由于引号,空格等缺失可能都会导致错误。Mybatis提供了动态SQL,也就是可以根据用户提供的参数,动态决定查询语句依赖的查询条件或SQL语句的内容。动态SQL标签if 和 where 标签 <!--动态Sql : where / if--> <select ...原创 2019-02-27 19:28:42 · 60560 阅读 · 5 评论 -
Mybatis基于xml文件和注解的方式实现增删改查
整体目录结构:基于XML文件实现maven项目下添加mbatis和mysql的依赖包:pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&原创 2019-02-24 21:33:38 · 1581 阅读 · 0 评论 -
MyBatis实现自定义TypeHandler进行数据转换
场景在 Java 实体类中,定义时间的属性一般是Date 类型,但数据库中却是字符串类型,每次查询、新增等操作都要做类型转换,但如果使用 Mybatis 提供的自定义 TypeHandler 的功能就能完美的解决这个问题。实体类User.javapackage com.lks.domain;import java.io.Serializable;import java.util.Dat...原创 2019-02-25 19:56:28 · 942 阅读 · 0 评论 -
Mybatis实现自定义Plugins拦截器
场景MyBatis 自定义拦截器,可以拦截的接口只有四种 Executor.class,StatementHandler.class,ParameterHandler.class 和 ResultSetHandler.class。在某种情景下,如果这四种接口自带的某个方法不能满足我们的要求时,如 Executor主要是创建Statement对象,在创建过程中依靠 MappedStatement...原创 2019-02-26 00:42:06 · 2443 阅读 · 0 评论 -
Mybatis中 #{} 和 ${}的区别
场景MyBatis 中提供了两种方式将参数赋值到SQL语句中,分别是:#{参数名}和${参数名},主要是从实体类对象或则 Map 集合读取内容。区别(1)#{参数名} : 采用预编译方式,可以防止 SQL 注入(2)${参数名}: 采用直接赋值方式,无法阻止 SQL 注入攻击其实也可以理解为PreparedStatement和Statement的区别:1.PreparedStatem...原创 2019-02-26 12:04:46 · 153 阅读 · 0 评论 -
Mybatis中ResultMap的简单使用
前言MyBatis在进行查询映射时,查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值。但当指定返回类型属性resultType的时候,MyBatis会将Map里面的键值对取出赋给resultType所指定的对象对应的属性。而当我们提供的返回类型是resultMap的时候,这就需要自己再进一步的把它转化为对应的对象,这常用于级联查询以及缓存功能。我们先用一个...原创 2019-02-26 19:55:37 · 1429 阅读 · 0 评论 -
Mybatis级联操作的实现
背景Mybatis的级联操作主要是针对一对多、多对一和多对多的情况而设定的。级联是在resultMap标签中配置的。级联并不是必须的,好处就是获取关联数据便捷,但如果级联过多会增加系统的复杂度,同时降低系统的性能。一对多一个人对应多件衣服为例只查询一次(1)先来看一下 标签中的属性:property:对象属性的名称,对应一对多中一的字段名ofType:指定的是映射到集合属性中bea...原创 2019-03-03 13:49:06 · 9474 阅读 · 0 评论