2019-04-04 Mybatis学习知识点

1. 比较#和$的区别

  • #是占位符?,$是字符串拼接。因此使用$的时候,如果参数是字符串类型,那么要使用引号
  • 尽量使用#而不是$
  • 当参数表示表名或列名的时候,只能使用$

2. 多参数时候

  • 配置文件中使用索引#{0}、#{1}代表第几个参数
  • 在接口中使用注解@Param命名,在配置文件中使用注解的命名
  • 接口使用Map类型作为形参,配置文件使用Map的key作为名称

3. 通过配置节点属性,可以把插入时候自动生成的key set回到对象中;也可以配置子节点在插入操作前执行SQL得到id存放入对象中

4. 动态SQL:属性内直接使用变量名(单变量使用value)

  • 判断
<if test="value !=null and value!=‘‘"></if>
  • 选择
<choose>
    <when test=‘‘></when>
    <when test=‘‘></when>
    <otherwise></otherwise>
</choose>
  • 增加where关键字并格式化条件语句(处理and、or问题)
<where></where>    
  • 增加set关键字并格式化(处理列后带逗号问题)
<set></set>
  • 进行增加前缀和删除前后某个字符串
<trim></trim>
  • 循环(传递的对象是List则能用list,如果为数组,则能用array作为键,如果加了@Param则直接以该值为键)
<foreach collection=“” item=“” open="(" colse=")" separator=",">

</foreach>
  • SQL片段(需要先定义片段,再在CRUD中使用)
<sql id=“id1”></sql>
<include refid="id1"></include>

5. 逆向工程

6. 嵌套查询

  • 1对1(1对象中包含对象):在<resultMap>中配置<association>
  • N对1(N对象中包含对象):在<resultMap>中配置<association>
  • 1对N(1对象中包含集合):在<resultMap>中配置<collection column="集合中对象的ID列名">
  • 联合查询(类似1对1):在<resultMap>中配置<association>

7. 扩展结果集

8. 构造方法映射

<resultMap>
    <constructor>
    </constructor>
</resultMap>

9. 鉴别器:根据鉴别列返回不同的子类对象

<resultMap>
    <discriminator>
    </discriminator>
</resultMap>

10. 延迟加载

  • 延时加载:调用属性时才加载,不调用则不加载
  • 积极延时加载:调用属性时把关联对象也加载,不调用不加载
  • 非积极延时加载:调用关联对象属性时才加载,不调用不加载

原文地址:https://www.cnblogs.com/WongHugh/p/10656735.html

时间: 2024-11-02 14:01:24

2019-04-04 Mybatis学习知识点的相关文章

MyBatis:学习笔记(3)——关联查询

MyBatis:学习笔记(3)--关联查询 关联查询 理解联结 SQL最强大的功能之一在于我们可以在数据查询的执行中可以使用联结,来将多个表中的数据作为整体进行筛选. 模拟一个简单的在线商品购物系统,如果我们将用户信息和订单信息都保存在user表中,这样就不存在联结关系,因为我们仅仅操作一张表就好. 但是这是非常不明智的选择,举例来说,一个用户可以拥有多个订单,如果保存在一个表中,势必会导致用户信息的多次出现,因为每个订单绑定的用户信息都是相同的. 所以我们尽量要将不同的信息存储与不同的表中,但

黑马程序员_毕向东_Java基础视频教程_Java基础学习知识点总结

黑马程序员_毕向东_Java基础视频教程 Java基础学习知识点总结 2016年01月06日  day01 一.基础知识:软件开发 1.什么是软件?软件:一系列按照特定顺序组织的计算机数据和指令的集合. 2.常见的软件:系统软件:如:DOS,Windows,Linux等.应用软件:如:扫雷,迅雷,QQ等. 3.什么是开发?制作软件. 二.基础知识:人机交互方式 4.软件的出现实现了人与计算机之间的更好的交互. 5.交互方式:图形化界面:这种方式简单直观,使用者易于接受,容易上手操作.命令行方式:

你如何制定一份可实施的2019年大数据学习计划?

那么如何才能制定出一份可行性强的大数据学习计划呢? 我们可以从以下几个方面去制定. 一.目标 首先你需要制定一个明确的你想要实现的长远的目标.比如,半年内学习相关课程,初步掌握大数据基础知识:比如,一年内熟悉并能在实际项目中应用:再比如,1年内达到市面上对大数据分析师的基本要求,成功找到一份大数据分析师的工作. 在这里还是要推荐下我自己建的大数据学习交流群:529867072,群里都是学大数据开发的,如果你正在学习大数据 ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有大数据软件开发相

分享最新2019年web前端学习路线

对于很多自学前端的小伙伴来说, 学习路线是一个非常核心的点,千万不能盲目瞎学.好的学习路线是成功的一半,接下来给大家分享下2019前端最新的学习路线! 一.核心语法阶段1.从标签到常用css样式开始,了解标签和样式在实际工作的使用方法,规范,标准.并且深入解析样式优先级,兼容性,样式继承在实际开发过程中的使用技巧和方法,能够具有开发大型企业网站能力.学习HTML5结合CSS3,能够开发手机端布局,响应式布局网站.抓住行业最大的移动端市场,为后期手机APP开发奠定坚实的基础2.ECMAscript

MyBatis学习总结(五)——实现关联表查询(转载)

孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(五)--实现关联表查询 一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系. 1 CREATE TABLE teacher( 2 t_id INT PRIMARY KEY AUTO_INCREMENT, 3 t_name VARCHAR(20) 4 ); 5 CREATE TAB

MyBatis学习总结(七)——Mybatis缓存(转载)

孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(七)--Mybatis缓存 一.MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持 一级缓存: 基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该Session中的所有 Cache 就将清空. 2. 二级缓存与一级缓存其机制相同,默认也是采用 PerpetualCache,Hash

MyBatis学习总结(六)——调用存储过程(转载)

孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(六)--调用存储过程 一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据库表和存储过程 1 create table p_user( 2 id int primary key auto_increment, 3 name varchar(10), 4 sex char(2) 5 ); 6 7 insert into p_user(name,sex) values('A',"男");

MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合(转载)

孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(八)--Mybatis3.x与Spring4.x整合 一.搭建开发环境 1.1.使用Maven创建Web项目 执行如下命令: mvn archetype:create -DgroupId=me.gacl -DartifactId=spring4-mybatis3 -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false 如下图所示: 创建好的项目如下

mybatis学习笔记(1)

之前做项目的时候,DAO层写了一些spring jdbc,用起来的确不是很方便,今天特意去学习了新的框架:mybatis.把之前用spring-jdbc写的内容换成了mybatis框架搭建的内容. 首先你要到mybatis的官网去下mybatis的jar包:mybatis-3.2.7.jar.由于我是在spring的基础上去搭建mybatis所以还要去弄一个mybatis-spring-1.2.2.jar, 这个连接的包好像在spring官方是找不到的,需要自己去网上找. 进入正题.首先在src