网站首页 > 技术文章 正文
mybatis作为持久层框架,已经在各企业使用较为广泛,发一部分笔记,欢迎笔友一起探讨
1. DAO Data Access Object 数据访问对象
2. myBatis:支持普通的sql查询,存储过程和和高级映射的优秀持久层框架
3. trim的作用
trim元素的主要功能是可以在自己包含的内容前加上某些前缀,也可以在其后加上某些后缀,与之对应的属性是prefix和suffix;可以把包含内容的首部某些内容覆盖,即忽略,也可以把尾部的某些内容覆盖,对应的属性是prefixOverrides和suffixOverrides;正因为trim有这样的功能,所以我们也可以非常简单的利用trim来代替where元素的功能
4. choose ..when..otherwise 相当于java中的switch,执行了一个就停止了,默认执行default里面的
5.where (主要是用来简化sql语句中where条件判断的,能智能的处理 and or 条件
6.if 做条件判断,字段拼接
7.set元素主要是用在更新操作的时候,它的主要功能和where元素其实是差不多的,主要是在包含的语句前输出一个set,然后如果包含的语句是以逗号结束的话将会把该逗号忽略,如果set包含的内容为空的话则会出错。有了set元素我们就可以动态的更新那些修改了的字段
8.foreach主要用在构建in条件中,它可以在sql语句中进行一个迭代集合。foreach元素的属性主要有item,index,collection,open,separator,close,例
<select id="dynamicForeachTest" resultType="Blog">
select * from t_blog where id in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
上述的collection的值为list,对应的Mapper是这样的
public List<Blog> dynamicForeachTest(List<Integer> ids);
如果collection的值是array,则参数类型是array
9.<![CDATA[ ]]>标记避免Sql中与xml规范相冲突的字符串对xml映射文件的合法性造成影响
10.rownum和rowid都是伪列,但是两者的根本是不同的,rownum是根据sql查询出的结果给每行分配一个逻辑编号,所以你的sql不同也就会导致最终rownum不同,但是rowid是物理结构上的,在每条记录insert到数据库中时都会有一个唯一的物理记录
11.mybatis中in的用法,${}是直接插入一个不做任何修改的字符串到SQL语句中
${}和#{}最简单的区别就是${}解析穿过来的参数值不带单引号,#{}解析传过来参数带单引号
yyyy-mm-dd hh24:mi:ss.ff 年-月-日 时:分:秒.毫秒
12.创建同义词:
create synonym V_PHAM_INFO_AREA_DESP for DMS.V_PHAM_INFO_AREA_DESP ;
是为了在不同用户中也可以访问
13 #{} 和${}的区别
#{} 是编译SQL语句再取值,能够很大方式防止SQL注入
${} 是取值后编译SQL语句,无法防止SQL在注入,一般用于传入数据库对象,例如传入表名
一般能用#{}的就别用${}
猜你喜欢
- 2024-10-16 mybatis各阶段的详解(mybatis 总结)
- 2024-10-16 Mybatis 集合and数组参数传递与注解增删改查
- 2024-10-16 Mybatis工作流程、架构以及配置说明
- 2024-10-16 mybatis常用 动态sql使用总结(干货分享)
- 2024-10-16 mybatis-plus 使用(mybatisplus in)
- 2024-10-16 Java避坑记录(java技巧)
- 2024-10-16 如何深度理解mybatis?(如何深度理解企业估值)
- 2024-10-16 Mybatis配置文件XML全貌详解,再不懂我也没招了
- 2024-10-16 Mybatis入门(Mybatis入门程序UserTest类中@test爆红)
- 2024-10-16 MyBatis之动态sql(mybatis动态sql语句)
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)