Mapper中的数据变更语句insert,update和delete 非常相似,小博 老师先给大家看一下他们的结构:
元素的属性见下表:
属性
描述
id
在命名空间中唯一的标识符,可以被用来引用这条语句。
parameterType
将会传入这条语句的参数类的完全限定名或别名。
parameterMap
这是引用外部parameterMap的已经被废弃的方法。使用内联参数映射和parameterType属性。
flushCache
将其设置为true,不论语句什么时候被带哦用,都会导致缓存被清空。默认值:false。
timeout
这个设置驱动程序等待数据库返回请求结果, 并抛出异常时间的最大等待值。默认不设置(驱动自行处理)。
statementType
STA TEMENT,PREPARED或CALLABLE的一种。这会让MyBatis使用选择使用Statement,PreparedStatement或CallableStatement。默认值:PREPARED。
useGeneratedKeys
(仅 对insert有 用)这 会 告 诉MyBatis使 用JDBC的getGeneratedKeys方法来取出由数据(比如:像MySQL和SQL Server这样的数据库管理系统的自动递增字段)内部生成的主键。默认值:false。
keyProperty
(仅对insert有用)标记一个属性,MyBatis会通过getGeneratedKeys或者通过insert语句的selectKey子元素设置它的值。默认: 不设置。
keyColumn
(仅对insert有用)标记一个属性,MyBatis会通过getGeneratedKeys或者通过insert语句的selectKey子元素设置它的值。默认: 不设置。
如下所示,是一个Insert、Update、Delete的简单例子:
上面的例子中,Insert的时候,把id也设置进去了。如果数据库支持自动生成主键(比如 MySQL 和 SQL Server) ,可以设置 useGeneratedKeys=”true”,而且设置 keyProperty 为经做好的目标属性上。例如,如果上面的 Boweifeng表已经把 id 列设置为自增长,那么Insert语句可以修改为: