Mybatis概述及框架搭建

  • mybatis概述:  一个持久层操作框架.

Mybatis与hibernate 使用区别:

Hibernate :  可以高度的对jdbc实现封装. 不用编写sql,即可映射操作数据库. 针对复杂的多表关系, 可以方便关联操作. 场景: 当业务实体之间关系关联操作时,hibernate擅长处理. 不擅长: 复杂的业务关联关系.

示例: OA.政府档案,数据管理系统.

 

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

 

Mybatis :  其实针对jdbc的完美封装, 保留了jdbc的sql编写方式. 优化了参数绑定,返回值封装等缺点.学习成本低.

示例:  网上电商, 金融项目,

 

主体架构:

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

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

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

DB(数据库)

 

 

  • 第一个mybatis程序编写:

步骤: 1. 创建项目,导入框架.

2.SqlMapConfig配置文件,编写数据库的连接配置.

3.测试数据库连接是否正常.

4.编写Mapper.xml文件中的动态sql.

5.测试sql执行操作是否正常.

 

 

  • mybatis框架如何实现dao层编写:

如何实现dao层编写:

Dao层采用面向接口的方式实现开发:  方便分层开发调用.

步骤: 1.提供接口.

2.给接口绑定Mapper.xml实现.

3.给service层提供dao层的接口引用.

 

  • 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”

  1. 查询返回单个对象:

resultType=”com.hfxt.bean.Student”

  1. 查询返回对象集合时

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中,采用子查询的方式或连接查询的方式实现

在封装<resultMap>中, 采用<collection>标签体现即可.

如果子查询:

<collection   property="" column="" javaType=""select="" >

注: 需要提供子查询: select.

如果连接查询:

<collection property="" ofType="" javaType="">

<id column="" property="" />

<result  column="" property="" />

</collection>

区别:

一对多 : 使用时,正常使用即可.

多对多 : 切记: 子查询需要两表连接, 连接查询时: 需要三表连接.

一对一 : <association>代替。其他类似于一对多.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值