ibatisPlus插件 映射文件

文章简介

映射文件
dao
数据库

  • 映射文件
    1.#和$符号:
#:简单来说"#"在编译时使用"?"占位符标记,可以有效防止参数注入,相当于我们使用JDBC操作时的PreparedStatement。
$:直接把参数拼接到SQL中执行相当于JDBC操作时的Statement
扩展:
#:先编译后取值,编译后有双引号,可以防止sql注入
$:先取值后编译,编译后无双引号,不能防止sql注入
      一般用于传递表名,字段名,group by

总结:能用#就不用$

参考文章1
参考文章2
2.mybatis什么时候用resulttype 什么时候用resultmap
参考文章1
3.Oracle函数

concat():只能连接两个字符
select concat('aa','bb') from test;
     concat('aa','bb')
     aabb
  • dao
    前提:①

    注意:Map是来封装每条记录的字段,查出来肯定有多条,接着看方法的返回值类型,是否装得下查出来数据。(比如说如果查出来只有一条,用map来封装,这时方法返回值类型可以是map或一个对象,因为足够来存储这条记录).

    在这里插入图片描述
    ③如果你用的是ibatisplus插件,且需分页,可以用它自带的Page来封装这个List,如:
    在这里插入图片描述
    还有第二种方法:在dao层,直接用Page
    去接收配置文件的List:如:
    在这里插入图片描述
  • 数据库
    1.函数
    ①一般公司数据库表会拿字符串或者Date类型来标识时间。如表是用Date的话:
格式转换:
把Date转字符串:
TO_CHAR(f.UPLOAD_TIME, 'yyyy-mm-dd')
把字符串转Date:
 to_date(#{startDate},'yyyy-mm-dd HH24:mi:ss')


在这里插入图片描述
当SQL语句为insert或者update时,如果其变量含有null值,会报错,因为如果参数为null mybatis会默认设置类型为jdbcType.OTHER,所以要指定类型。避免这张情况。
参考文章1
2.语句
①select后可加子查询,即表里面没有这个字段的,类似count(),avg()等

查询出每个部门的编号,名称,位置,部门人数,平均工资:
SELECT d.deptno,d.dname,d.loc,
  (SELECT  COUNT(empno) FROM emp WHERE emp.deptno=d.deptno GROUP BY deptno) con,
  (SELECT AVG(sal) FROM emp WHERE emp.deptno=d.deptno GROUP BY deptno) avgsal
FROM dept d

参考文章1

③写sql语句方式:两种形式,三种写法

其中两种形式是指:

1.基于 xml 文件。

2.基于注解开发。
   @Select 
   @SelectProvider
三种写法是指除了 xml 的形式外,注解又有两种不同的写法,它们的实现原理也略有不同,拿 Select 语句举例,就有两种注解 @Select、@SelectProvider 。
基于注解的一种@select为什么有时要用script 包裹?  基于 @Select 注解的方式开发时, mybatis 会通过反射获取到注解里面的 SQL ,而这些 SQL 需要一些比较复杂功能,比如判断条件是否为空时,可以用 script 标签包裹起来。

参考文章1

个人认为:当在执行映射文件的查询sql语句后,会先用resultMap做映射封装,然后看你的 配的resultType或resultMap属性的值,然后用这个来封装刚刚封装好的数据。只有一条记录封装一次,多条封装多次。(值得注意的是查询是有一条记录或多条,所以dao对应的方法返回值类型要与他对应,或者用一个对象来接受他也行)

文件路径配置:/和\是一样的
参考文章1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值