Mbatis select update delete insert 标签属性大全

<select
  id="selectUser" //与 PersonMapper.java 接口对应的方法
  parameterType="int" //传入的参数格式
  resultType="hashmap" //返回的数据类型,当返回多个参数的时候,建议使用 resultMap
  resultMap="userResultMap" //返回的数据类型,相当于对 resultType="hashmap" 的封装。resultType、resultMap两者只能存在一个
  parameterMap="deprecated" //已经废弃,现在使用 resultType 和 resultType
  flushCache="false" //是否清空缓存,默认为false
  useCache="true" //是否二级缓存,默认值:对 select 元素为 true。
  timeout="10000" //等待数据库返回请求结果的秒数
  fetchSize="256" 
  statementType="PREPARED" // STATEMENT,PREPARED 或 CALLABLE 的一个。这会让 MyBatis 分别使用 Statement,PreparedStatement 或 CallableStatement,默认值:PREPARED。
  ...>
  
<insert
  id="insertUser"
  parameterType="com.test.model.User"
  flushCache="true"
  statementType="PREPARED"
  timeout="20"
  keyProperty=""      //(仅对 insert 和 update 有用)唯一标记一个属性,MyBatis 会通过 getGeneratedKeys 的返回值或者通过 insert 语句的 selectKey 子元素设置它的键值,默认:unset。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。
  useGeneratedKeys="" //(仅对 insert 和 update 有用)这会令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键(比如:像 MySQL 和 SQL Server 这样的关系数据库管理系统的自动递增字段),默认值:false。
  keyColumn="" //(仅对 insert 和 update 有用)通过生成的键值设置表中的列名,这个设置仅在某些数据库(像 PostgreSQL)是必须的,当主键列不是表中的第一列的时候需要设置。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。
  >

<update
  id="updateUser"
  parameterType="com.test.model.User"
  flushCache="true"
  statementType="PREPARED"
  timeout="20">

<delete
  id="deleteUser"
  parameterType="com.test.model.User"
  flushCache="true"
  statementType="PREPARED"
  timeout="20">

 注意点:

默认情况下,mybatis 的 update 操作返回值是记录的 matched 的条数,并不是影响的记录条数。 

如果希望操作明确的返回受影响的记录条数,我们对我们的数据库连接配置稍做修改,添加 useAffectedRows 字段:
url:jdbc:mysql://localhost:3306/mindspan?useAffectedRows=true
 

注释:

1.Statement、PreparedStatement和CallableStatement都是接口(interface)。 
2.Statement继承自Wrapper、PreparedStatement继承自Statement、CallableStatement继承自PreparedStatement。 
3. 
Statement接口提供了执行语句和获取结果的基本方法; 
PreparedStatement接口添加了处理 IN 参数的方法; 
CallableStatement接口添加了处理 OUT 参数的方法。 
4. 
a.Statement: 
普通的不带参的查询SQL;支持批量更新,批量删除; 
b.PreparedStatement: 
可变参数的SQL,编译一次,执行多次,效率高; 
安全性好,有效防止Sql注入等问题; 
支持批量更新,批量删除; 
c.CallableStatement: 
继承自PreparedStatement,支持带参数的SQL操作; 
支持调用存储过程,提供了对输出和输入/输出参数(INOUT)的支持; 

Statement每次执行sql语句,数据库都要执行sql语句的编译 , 
最好用于仅执行一次查询并返回结果的情形,效率高于PreparedStatement。 

PreparedStatement是预编译的,使用PreparedStatement有几个好处 
1. 在执行可变参数的一条SQL时,PreparedStatement比Statement的效率高,因为DBMS预编译一条SQL当然会比多次编译一条SQL的效率要高。 
2. 安全性好,有效防止Sql注入等问题。 
3.  对于多次重复执行的语句,使用PreparedStament效率会更高一点,并且在这种情况下也比较适合使用batch; 
4.  代码的可读性和可维护性。  

猜你喜欢

转载自blog.csdn.net/qq_41154871/article/details/88668504
今日推荐