Mapper里的sql语句注解

一、


TAB_USER.ID,TAB_USER.NAME,AGE,SEX,ADDRESS


R.ID R_ID,R.NAME R_NAME,R.USERID

这两个相当于把需要的字段举例出来,以便后面使用。

比如,根据id使用它,相当于粘贴里面的内容信息一样。



二、









jdbcType="NVARCHAR" />
jdbcType="INTEGER" />


这里的代码就是对数据库里的字段名和类的属性不一致时做处理,里面的collection就是User里有role集合。组合关系嘛。


三、做非空判断--使用,把where写成主要还是当条件不满足时不会出现语法错误。比如:select * from TAB_USER where ;



四、


这里用到trim:

trim 属性
                prefix:前缀覆盖并增加其内容
                suffix:后缀覆盖并增加其内容
                prefixOverrides:前缀判断的条件
                suffixOverrides:后缀判断的条件

通俗点讲,prefixOverrides是个标记,prefix这个就是专门覆盖那个标记的。同理。比如上句,where就是替换and或者or的。

下面的这个更容易理解。


INSERT INTO TAB_USER


ID,


NAME,


AGE,


SEX,


ADDRESS,




#{userId,jdbcType=INTEGER,javaType=java.lang.Integer},


#{userName,jdbcType=NVARCHAR,javaType=java.lang.String},


#{age,jdbcType=INTEGER,javaType=java.lang.Integer},


#{sex,jdbcType=CHAR,javaType=java.lang.Character},


#{address,jdbcType=NVARCHAR,javaType=java.lang.String},



正确的ADDRESS,后面不需要逗号了。但是我这里有,suffixOverrides=“,”找到这个逗号,suffix=")" 将其替换成")"。这样就代码正确了。


五、select * from 表名 where  xx in ()这种语法结构的使用:


一般Dao层传过来的是个集合list,separator是分隔符,item="item"i,tem是集合中的元素对象。


六、标签,这个在这里不是注释的意思。是说明这段代码是纯文本。比如像这个>(大于号),<(小于号)在这里就是表示大于号小于号的意思。不是表示尖括号<>的一半。



七、当查询的时候两个类属性名完全相同时,



比如我的,角色role类有id,user类也有id。如果使用上面的第二个介绍,按正常想都是:

参考第二个:



jdbcType="NVARCHAR" />
jdbcType="INTEGER" />

这里面的column="R_ID"应该写成column="id"才是吧。但是这样不出来的。出来的这个id是user的id。所以我就在定义

的时候给他取了个别名。后面就用的是别名了。刚才注意到了没有呢。。。
R.ID R_ID,R.NAME R_NAME,R.USERID


八、主键生成策略:






select seq_emp.nextval as bId from dual

INSERT INTO EMP

BID,EMPNAME,AGE,SEX,CREATETIME,SALARY,

 
#{bId},#{empName},#{age},#{sex},#{createTime},#{salary}


注意bid在哪里出现就应该不出错了。就不详细说,没意思。





SELECT SYS_GUID() FROM DUAL

INSERT INTO STUDENT 

STUID,STUNAME,


#{stuId},#{stuName},



九、



INSERT INTO EMP

BID,EMPNAME,AGE,SEX,CREATETIME,SALARY,

SELECT seq_emp.nextval, e.* FROM

SELECT 
#{item.empName},#{item.age},#{item.sex},#{item.createTime},#{item.salary}
FROM DUAL

e

你可能感兴趣的:(mapper)