MyBatis映射示例

resultMap 返回结果的映射



resultMapid是这个映射的名字,可在查询语句中引用表示此查询返回该结果:


t

ype是模型对象的类名,也可以写成别名(简化作用)



简化成别名时,需要先注册别名:


resultMap内部

<id>标签表示该查询中涉及的主键的映射关系

<result>标签表示普通数据属性或字段的映射关系

property表示数据模型类中的属性名


column表示数据表中的字段名


<select> 表示使用select语句查询数据的方法

id属性与Dao中的方法相同!

resultMap表示返回结果(因为返回的数据对象可能很复杂,因些需要单独设置映射)

parameterType表示传入参数类型(利用HashMap可以传入一组参数)


SQL语句中的标签

JSTL非常相似

<trim>一行的意思是此处会生成一个Where子句(prefix规定的)

如果该子句在组合过程中产生了多作的AND|OR,则trim会把多作的去掉

以保证SQL语句的正确性

<if>会测试相应的条件是否成立,成立则if中的表达式进入SQL语句,否则忽略

通过<if>可以动态拼接SQL表达式!


${ } 与 #{ } 两者有很大的区别!

${ }是替换性质的,如sortProperty的值将会出现在 ${ sortProperty } 的位置

因此有SQL注入的风险

#{ }会变成SQL语句中的 ? 参数,? 参数没有注入风险。

 

如果传入到<select>中的数据是SQL语句的字段名或运算符、关键字,则只能使用${ }

因为使用 #{ } 会变成 ? ,将会造成SQL语法错误

order by ? ? 是错误的,因为order by后面应该跟


列名 之后是 排序方向的关键字 ,不能是 ?


<insert> 表示插入数据的方法

如果数据库中有自增Id,而且还希望在插入数据之后获得新插入的Id值,则需要添加

useGeneratedKeys=”true” keyProperty=”主键名”

执行成功后,可以通过


student.getStudentId() 获取主键值,也就是主键值会填充到传入的对象中   更新数据


删除数据

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted on 2017-11-19 15:56  杨先森的博客  阅读(227)  评论(0编辑  收藏  举报

导航