初学mybatis的xml版的一些感受

经过十几小时的代码洗礼,对mybatis的有了一定的认识
发现执行流程
首先要有个entity,在mappers里定义需要的功能,server定义调用功能,serverImpl调用
mapping实现操作,一个mapping对应一个mapper.xml
在一个mapper.xml里,通常要在
myvatis-config.xml里配置别名

通过 把xml和mapper类关联起来 一定要驼峰命名

sql操作时,增删改查有对应的标签,id为方法名,绝对不可以重复
parameterType为带参方法的参数类型
useGenerateKeys="true"可设置自增
keyProperty=“studentId”设置studentId为主键
resultType为返回值类型

UPDATE springtest.t_student SET student_name = #{studentName}, hometown =#{hometown}, birthday =#{birthday} WHERE student_id = #{studentId} 以此为例, #{}获取值,等号坐标是数据表列名,即column 等号右边为Student对象的属性名,即paramete r 操作集合时,方法的参数要这样,加注解 public int batchDelete(@Param("idList") List idList) { return studentMapper.batchDelete(idList); } 使用集合时,collection后为定义好的参数名 #{item} 分页查询可用limit限制

返回值类型有两种,resultMap和resultType
resultType是存在的entity,而resultMap是组合的
id同样唯一.properly为属性名,column为列名






resultMap里的对象属性定义,property为属性名,javaType为对象类型



#{}和${}的区别
selec * from #{table};
解析后为 select * from “test”;
select * from ${table};
解析后是:
select * from test;

#类似jdbc中的PreparedStatement,对于传入的参数,在预处理阶段会使用?代替,比如:
select * from student where id = ?;

待真正查询的时候即在数据库管理系统中(DBMS)才会代入参数。
KaTeX parse error: Expected 'EOF', got '#' at position 56: …e id = 2; 1、能使用#̲{}的地方应尽量使用#{} 2…{}则可能导致sql注入成功。
所谓sql注入,就是指把用户输入的数据拼接到sql语句后面作为sql语句的一部分执行,例如:

xml映射文件中,除了常见select/update/insert/delete标签之外,还有哪些标签?
<resultMap/parameterMap/sql/include/selectKey>、动态sql 的9个标签[trim/where/set/foreach/if/choose/when/otherwise/bind—其中sql为sql片段标签,通过include标签引入sql片段,selectKey为不支持自增的主键生成策略标签]

为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?
Hibernate 属于全自动 ORM 映射工具,使用 Hibernate 查询关联对象或者关联集合对象
时,可以根据对象关系模型直接获取,所以它是全自动的。而 Mybatis 在查询关联对象或
关联集合对象时,需要手动编写 sql 来完成,所以,称之为半自动 ORM 映射工具。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值