一、
TAB_USER.ID,TAB_USER.NAME,AGE,SEX,ADDRESS
R.ID R_ID,R.NAME R_NAME,R.USERID
这两个
比如,根据id使用它,相当于粘贴里面的内容信息一样。
二、
这里的代码就是对数据库里的字段名和类的属性不一致时做处理,里面的collection就是User里有role集合。组合关系嘛。
三、做非空判断--使用
四、
这里用到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。如果使用上面的第二个介绍,按正常想都是:
参考第二个:
这里面的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