mybatis框架浅谈

一.什么是mybatis
mybatis是apache下的一个持久层框架,以前叫ibatis,底层是用jdbc编写.
二.mtbatis的作用
操作数据库进行增删改查.
三.mybatis的用法:
1.四个规则:
①输入映射:就是SQL语句可以传入哪些类型的参数;
②输出映射:就是sql语句返回值可以有哪些类型;
③传入参数类型使用parameterType属性来指定
④sql语句执行返回结果类型使用resultType来指定
2.占位符#{}和拼接符${}
①.占位符#{}:起到转为的作用,一般都使用占位符
如果传入的参数是Integer.String.Double.Boolean等简单类型,那么#{}中的变量名称可以随便起名, 如果传入的是pojo类型.那么#{}中的变量名称必须是pojo中的属性.属性.属性......
②.拼接符${}:起到字符串原样拼接的作用,一般只在like模糊查询的时候配合使用.
如果传入的参数是Integer.String.Double.Boolean等简单类型,那么${}中的变量名称必须是value. 如果传入的是pojo类型.那么${}中的变量名称必须是pojo中的属性.属性.属性......
注意:使用${}有造成SQL注入额的风险
四.hibernate和mybatis的区别
hibernate:是一个完全的orm框架,比较复杂,学习成本高.在传统企业,外包公司使用比较多;
mybatis:不是一个完全的ORM框架,只是对jdbc的轻量级封装,mybatis简单,学习成本低.效率快,在互联网中应用比较多;

五.两种开发模式简介
1.原生dao开发方式:需要编写接口和实现类.
2.动态代理开发方式:只需要编写接口和映射文件,不需要实现类,mybatis在云行的时候自动替我们生成实现类,用完后直接销毁,生成的文件也保存在内存中,
动态代理开发规则:
①要求映射文件中namespace必须等于接口的全路径名称
②要求映射文件中id必须等于接口的方法名称
③要求映射文件中parameterType指定的类型必须等于接口方法的传入参数类型
④要求映射文件中resultType指定的类型必须等于接口方法的返回值类型.


六.输入映射和输出映射
1.输入映射(就是sql语句需要传入那些类型的参数)
map:不使用;
简单类型:String,double,integer,float等
#{}占位符中的变量法可以随便起
${}拼接符中变量必须是value
pojo:
#{}占位符中变量必须是pojo中的属性.属性.属性...
${}拼接符中变量必须是pojo中的属性.属性.属性...
2.输出映射(就是SQL语句的结果集可以有哪些类型)
①.map:不使用;
②.简单类型:String,double,integer,float等
③.pojo和list:不管返回的是单个对象还是对象集合,都要写pojo类的全路径名称
resultType(自动映射):
要求映射的pojo对象的属性必须等于数据库中查到的列名,这样才可以将指定列的数据自动映射到对应的pojo属性中.
resultMap(手动映射):
手动指定查询的列名和pojo中对应的属性名的关系.

3.动态sql(在实际查询中,SQL语句的条件个数不定,所以需要动态拼接)
if:用于传入参数判断
sql:用于封装sql查询条件
include:用于使用封装的查询条件
where:
①可以给我们的SQL语句中加入where关键字
②可以去掉第一个参数的and关键字,保证SQL语句的正确性
foreach:遍历集合, 拼接到sql语句当中

4.关联查询
一对一:
a.使用自动映射resultType:由于联合查询多张表数据,所以将查询结果自动映射在原有的pojo中会无法接收,需要封装一个大而全的pojo来接受所有查询结果数据
b.使用手动映射resultMap:可以在一个对象中封装另一个对象,然后再映射文件中使用association标签来指定映射单个对象的关系.
一对多:
只能使用手动映射resultMap,在resultMap中用collection标签指定结合关系.

5.mybatis逆向工程
作用:mybatis官方推出的逆向工程,连接数据库后根据表生成pojo,mapper接口和映射文件(单表的增删改查)

注意:mybatis逆向工程生成的文件对原有的是追加而不是覆盖...




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值