第五天日志 2019.07.14

Mybatis

1. mybatis概述: 一个持久层操作框架.
Mybatis与hibernate 使用区别:
Hibernate : 可以高度的对jdbc实现封装. 不用编写sql,即可映射操作数据库. 针对复杂的多表关系, 可以方便关联操作. 场景: 当业务实体之间关系关联操作时,hibernate擅长处理. 不擅长: 复杂的业务关联关系.
示例: OA.政府档案,数据管理系统.

Jdbc : 其实所有的持久层框架都是以JDBC为基础,进行封装优化. 好处: 单个操作效率高. 缺点: 参数传递,返回值封装.

Mybatis : 其实针对jdbc的完美封装, 保留了jdbc的sql编写方式. 优化了参数绑定,返回值封装等缺点.学习成本低.
示例: 网上电商, 金融项目,

主体架构:
SqlMapConfig.xml(核心配置文件) : 体现SqlSessionFactory,SqlSession.

Mapper.xml(动态sql语句实现)

MappedStatement(方便动态加载sql,用于绑定参数,封装返回值).

DB(数据库)

  1. 第一个mybatis程序编写:
    步骤:
    1 创建项目,导入框架.
    2.SqlMapConfig配置文件,编写数据库的连接配置.
    3.测试数据库连接是否正常.
    4.编写Mapper.xml文件中的动态sql.
    5.测试sql执行操作是否正常.

  2. mybatis框架如何实现dao层编写:
    如何实现dao层编写:
    Dao层采用面向接口的方式实现开发: 方便分层开发调用.
    步骤: 1.提供接口.
    2.给接口绑定Mapper.xml实现.
    3.给service层提供dao层的接口引用.

  3. SqlMapConfig.xml核心配置文件和Mapper映射文件的编写:

4.1: 数据库操作的动态sql: 传参. 返回值.
传参: 1.单个基本类型参数传递.指定:
parameType=”java.lang.Integer”
2.单个引用类型:
parameType=”com.hfxt.bean.Student”
3.集合类型:
parameType=”java.util.ArrayList”
备注: 引用时必须采用list / array 充当引用.map集合直接根据key值实现引用.
4.注解方式:
test1(@Param(“name”) String name ,@Param(age) String age )

返回值处理:
1.基本类型数据值返回:
resultType=”java.lang.Integer”
2. 查询返回单个对象:
resultType=”com.hfxt.bean.Student”
3. 查询返回对象集合时
resultMap = “ RM_Stus ”; 需要定义集合模型进行封装.

4.2:动态sql的编写实现.
Sql : 用于抽取片段代码.
Include : 用于引入sql片段.
Where : 用于充当where关键字使用.当条件无论是否存在,都将作用.
Trim : 针对前缀与后缀做去除或增加.
If: 可用于条件判断等.
Foreach: 用于数据值的遍历.
Set : 用于充当set修改关键字.
Choose : 等值判断等.

补充: 在Mapper中编写动态sql时,防止出现大于小于符号,转义:

<![CDATA[ age > 20 ]]>

经典面试题: #{ 属性 } 获取参数值.并以字符串的形式进行使用.
使用: 就是?占位符传参的方式.
${ 属性 } 获取参数值.并以字符串的形式进行使用.
使用: 类似于字符串+号拼接的方式,

4.3: 关系映射操作:
相同点:

  1. 都需要在中体现关系.

  2. 在Mapper中,采用子查询的方式或连接查询的方式实现
    在封装中, 采用标签体现即可.
    如果子查询:
    <collection property="" column="" javaType="“select=”" >
    注: 需要提供子查询: select.
    如果连接查询:




    区别:
    一对多 : 使用时,正常使用即可.
    多对多 : 切记: 子查询需要两表连接, 连接查询时: 需要三表连接.
    一对一 : 代替。其他类似于一对多.

  3. mybatis与spring整合使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值