Mybatis快速入门

Mybatis前身是iBatis,其源于“Internet”和“ibatis”的组合,本质是一种半自动的ORM框架,除了POJO 和映射关系之外,还需要编写SQL语句; 

Mybatis快速入门 

1. 加入mybatis的依赖 
2. 添加mybatis的配置文件 
3. 场景介绍 
4. 编写实体类、mapper接口以及mapper xml文件; 
5. 编写实例代码 

 SqlSessionFactoryBuilder:读取配置信息创建SqlSessionFactory,建造者模式,方法级别生命周期; 

 SqlSessionFactory:创建Sqlsession,工厂单例模式,存在于程序的整个生命周期; 

SqlSession:代表一次数据库连接,可以直接发送SQL执行,也可以通过调用Mapper访问数据库;线程不安全,要保
证线程独享(方法级);

SQL Mapper:由一个Java接口和XML文件组成,包含了要执行的SQL语句和结果集映射规则。方法级别生命周期; 

 

resultType元素 

 resultType:当使用resultType做SQL语句返回结果类型处理时,对于SQL语句查询出的字段在相应的 pojo中必须有和它相同的字段对应,而resultType中的内容就是pojo在本项目中的位置。 

自动映射  

 前提:SQL列名和JavaBean的属性是一致的;

 使用resultType,如用简写需要配置typeAliases (别名);

如果列名和JavaBean不一致,但列名符合单词下划线分割,Java是驼峰命名法,则 mapUnderscoreToCamelCase可设置为true; 

 

resultMap元素 属性 

 resultMap 元素是 MyBatis 中最重要最强大的元素。它可以让你从 90% 的 JDBC ResultSets 数据提取代码中解放出
来,在对复杂语句进行联合映射的时候,它很可能可以代替数千行的同等功能的代码。 

 ResultMap 的设计思想是,简单的语句不需要明确的结果映射,而复杂一点的语句只需要描述它们的关系就行了。 

resultMap元素 子元素 

id – 一个 ID 结果;标记出作为 ID 的结果可以帮助提高整体性能 

 result – 注入到字段或 JavaBean 属性的普通结果 

association – 一个复杂类型的关联;许多结果将包装成这种类型 

  • 嵌套结果映射 – 关联可以指定为一个 resultMap 元素,或者引用一个 

 collection – 一个复杂类型的集合 

  • 嵌套结果映射 – 集合可以指定为一个 resultMap 元素,或者引用一个 

 

传递多个查询入参 

 使用map传递参数;可读性差,导致可维护性和可扩展性差,杜绝使用; 

 使用注解传递参数;直观明了,当参数较少一般小于5个的时候,建议使用; 

使用Java Bean的方式传递参数;当参数大于5个的时候,建议使用; 

 

insert标签相关属性 

selectKey元素 

 

sql元素和参数 

 sql元素:用来定义可重用的 SQL 代码段,可以包含在其他语句中; 

 参数:向sql语句中传递的可变参数 

    预编译 #{}:将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号,能够很大程度防止 sql注入; 

   传值    ${}:传入的数据直接显示生成在sql中,无法防止sql注入; 

    表名、选取的列是动态的,order by和in操作, 可以考虑使用$ 

 

动态sql元素 

 

批量操作 

通过foreach动态拼装SQL语句 

 使用BATCH类型的excutor 

 

Mybatis Generator (MBG) 代码生成器

运行MGB 

 

关联查询 

在关系型数据库中,我们经常要处理一对一 、 一对多的关系 。 例如, 一辆汽车需要有一个引擎,这是一对一的 关系。 一辆汽车有 4 个或更多个轮子,这是一对多的关系 。关联元素就是专门用来处理关联关系的; 

 关联元素  association      一对一关系  collection        一对多关系  discriminator   鉴别器映射 
 关联方式  嵌套结果:使用嵌套结果映射来处理重复的联合结果的子集  嵌套查询:通过执行另外一个 SQL 映射语句来返回预期的复杂类型 

 

缓存 一级缓存 

缓存 二级缓存 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值