Mybatis常用标签及属性小结
一、常用标签、动态Sql
select标签:
<select id="findUserById" parameterType="int" resultMap="userResultMap"> <include refid="sqlMsg"><property name="id" /></include> </select> <sql id="sqlMsg"> SELECT * FROM User WHERE ID = #{id}</sql> <resultMap id="userResultMap" type="User"> <id property="id" column="user_id" /> <result property="username" column="user_name"/> <result property="password" column="hashed_password"/> </resultMap>
insert标签:
<insert id="addUser"> insert into User (id,name) values (#{id},#{name}) </insert>
update标签:
<update id="updateUser"> update User set username = #{username}, password = #{password} where id = #{id} </update>
delete标签:
<delete id="deleteUser"> delete from User where id = #{id} </delete>
if标签:
<select id="findUser" > SELECT * FROM User WHERE state = 0 <if test="name != null and name!=''"> AND name = #{name} </if> </select>
choose、when、otherwise(类似于switch)标签:
<select id="findUser" > SELECT * FROM User WHERE state = 0 <choose> <when test="name != null"> AND name like #{name} </when> <when test="age != null"> AND age = #{age} </when> <otherwise> AND name like '' </otherwise> </choose> </select>
trim、where标签:
<select id="getUser" resultType="user"> select * from user <trim prefix="where" prefixOverrides="and"> <if test="lastName != null"> name = #{name} </if> <if test="age != null"> and age = #{age} </if> <if test="phone != null"> and phone = #{phone} </if> </trim> </select>
foreach标签:
<select id="queryUsers" > select * from user where id in <foreach collection="array" item="item" open="(" separator="," close=")" index="index"> #{item} </foreach> </select>
bind标签:
<!--使用bind元素进行模糊查询--> <select id="queryUserByName" resultType="com.MyUser" parameterType= "com.MyUser"> select * from user <trim prefix="where" prefixOverrides="and"> <if test="name != null">] <bind name="bindName" value="'%' + name + '%'"/> name like #{bindName} </if> </trim> </select>
selectKey标签:
<insert id="insert"> <selectKey keyProperty="id" resultType="int" order="BEFORE"> <!-- Oracle中用Sequence获取主键 --> <if test="_databaseId == 'oracle'"> select seq_users.nextval from dual </if> <!-- Mysql直接用sql查询最大主键 --> <if test="_databaseId == 'mysql'"> select(select max(u.id)+1 from t_user u) </if> </selectKey> insert into t_user values (#{id}, #{name}) </insert>
typeAliases标签
<typeAliases> <typeAlias alias="myAuthor" type="com.bean.Author"/> <typeAlias alias="myUser" type="com.bean.User"/> <typeAlias alias="myCar" type="com.bean.Car"/> <typeAlias alias="myHouse" type="com.bean.House"/> </typeAliases> <select id="selectUser" lang="myUser"> SELECT * FROM user </select>
二、常用标签属性
select标签属性:
id 必选属性,绑定Sql语句与Mapper接口中的方法,。 parameterType 传入参数的类全限定名或别名。MyBatis 可以通过类型处理器(TypeHandler)推断出具体传入语句的参数,默认值为未设置(unset)。 resultType 返回结果的类全限定名或别名。返回的是集合,则设置为集合包含的类型。 resultMap 对外部 resultMap 的命名引用。resultType 和 resultMap 之间只能同时使用一个。 flushCache 设为 true 后,只要语句被调用,会导致本地缓存和二级缓存被清空,默认值(对select):false。 useCache 设为 true 后,将会导致本条语句的结果被二级缓存缓存起来,默认值:对 select 元素为 true。 timeout 等待数据库返回请求结果的秒数。默认值为未设置(unset)(依赖数据库驱动)。 fetchSize 给驱动的建议值,让驱动程序每次批量返回的结果行数等于这个设置值。默认不设置(unset)(依赖驱动)。 statementType 可选 STATEMENT、PREPARED、CALLABLE。让 MyBatis 分别使用 Statement、PreparedStatement、CallableStatement,默认:PREPARED。 resultSetType 可选 FORWARD_ONLY、SCROLL_SENSITIVE、SCROLL_INSENSITIVE 或 DEFAULT(等价于 unset),默认值为 unset (依赖数据库驱动)。 databaseId 如果配置了数据库厂商标识(databaseIdProvider),MyBatis 会加载不带 databaseId 属性和带有匹配当前数据库 databaseId 属性的所有语句;如果带和不带的语句都有,不带的会被忽略。 resultOrdered 仅针对嵌套结果 select 语句: 若为 true,将会假设包含了嵌套结果集或分组,返回一个主结果行时,不会产生对前面结果集的引用。获取嵌套结果集的时不至于内存不够,默认:false。 resultSets 仅适用于多结果集的情况。返回多个结果集并赋予每个结果集一个名称,多个名称之间以逗号分隔。
insert、update、delete标签属性:
id 必选属性,绑定Sql语句与Mapper接口中的方法,。 parameterType 传入参数的类全限定名或别名。MyBatis 可以通过类型处理器(TypeHandler)推断出具体传入语句的参数,默认值为未设置(unset)。 flushCache 设为 true 后,只要语句被调用,会导致本地缓存和二级缓存被清空,默认值:(对 insert、update 和 delete 语句)true。 timeout 等待数据库返回请求结果的秒数。默认值为未设置(unset)(依赖数据库驱动)。 statementType 可选 STATEMENT、PREPARED、CALLABLE。让 MyBatis 分别使用 Statement、PreparedStatement、CallableStatement,默认:PREPARED。 databaseId 如果配置了数据库厂商标识(databaseIdProvider),MyBatis 会加载不带 databaseId 属性和带有匹配当前数据库 databaseId 属性的所有语句;如果带和不带的语句都有,不带的会被忽略。 useGeneratedKeys (仅insert、update)会令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键,默认值:false。 keyProperty (仅insert、update)指定能够唯一识别对象的属性,用 getGeneratedKeys 的返回值或 insert 语句的 selectKey 子元素设置它的值,默认:未设置(unset)。可用逗号分隔多个属性名。 keyColumn (仅insert、update)设置生成键值在表中的列名,当主键列不是表中的第一列的时候,必须设置。如果生成列不止一个,可用逗号分隔多个属性名。
trim标签属性:
prefix 拼接前缀。 suffix 拼接后缀。 prefixOverrides 去除sql语句前面的关键字或者字符。 suffixOverrides 去除sql语句后面的关键字或者字符。
foreach标签属性:
collection 表示迭代集合的名称,可以使用@Param注解指定。 item 必选参数,集合中元素迭代时的别名。 index 在list和数组中,index是元素的序号,在map中,index是元素的key。 open foreach代码的开始符号,一般是(和close=")"合用。 close foreach代码的关闭符号,一般是)和open="("合用。 separator 元素之间的分隔符,separator=","会自动在元素中间用“,“。
selectKey标签属性:
keyProperty 返回目标结果的key。 resultType 结果的类型。 order 设置为BEFORE或AFTER,设置为BEFORE,会先选择主键设置keyProperty,然后执行插入语句;设为AFTER,先执行插入语句,然后设置selectKey元素。 statementType 和前面的相同,MyBatis 支持 STATEMENT、PREPARED、CALLABLE语句的映射类型,分别代表PreparedStatement、CallableStatement 类型。
到此这篇关于Mybatis常用标签及属性的文章就介绍到这了,更多相关Mybatis常用标签内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Spring Boot源码实现StopWatch优雅统计耗时
这篇文章主要为大家介绍了Spring Boot源码实现StopWatch优雅统计耗时,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-07-07Spring AOP 后置通知修改响应httpstatus方式
这篇文章主要介绍了Spring AOP 后置通知修改响应httpstatus方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-12-12Java构造方法 super 及自定义异常throw合集详解用法
异常是程序中的一些错误,但不是所有错误都是异常,且错误有时候是可以避免的,super可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类,构造器也叫构造方法、构造函数,是一种特殊类型的方法,负责类中成员变量(域)的初始化2021-10-10javax.validation.constraints如何校验参数合法性
本文将深入探讨javax.validation.constraints的基本用法和高级应用,帮助读者更好地理解和运用这个强大的校验框架,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-07-07idea创建JAVA Class时自动生成头部文档注释的方法
这篇文章主要介绍了idea创建JAVA Class时自动生成头部文档注释的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-12-12
最新评论