侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

Mybatis的深入学习

2023-11-21 星期二 / 0 评论 / 0 点赞 / 35 阅读 / 7768 字

在学习了mybatis的基本用法后,感觉其中的一些小的细节用法没有彻底了解,于是重新看了下帮助的文档,了解了一些他的细节上的用法,初学者,大神看出有不对的地方可以指出。 属性

在学习了mybatis的基本用法后,感觉其中的一些小的细节用法没有彻底了解,于是重新看了下帮助的文档,了解了一些他的细节上的用法,初学者,大神看出有不对的地方可以指出。


属性

描述

id

在命名空间中唯一的标识符,可以被用来引用这条语句。

parameterType

将会传入这条语句的参数类的完全限定名或别名。

parameterMap

这是引用外部 parameterMap 的已经被废弃的方法。使用内联参数

映射和 parameterType 属性。

flushCache

将其设置为 true,不论语句什么时候被带哦用,都会导致缓存被清

空。默认值:false

timeout

这个设置驱动程序等待数据库返回请求结果,并抛出异常时间的最

大等待值。默认不设置(驱动自行处理)。

statementType

STATEMENT,PREPARED 或 CALLABLE 的一种。这会让 MyBatis

使用选择使用 StatementPreparedStatement 或 CallableStatement

默认值:PREPARED

useGeneratedKeys

( 仅 对 insert 有 用 ) 这 会 告 诉 MyBatis 使 用 JDBC 的

getGeneratedKeys 方法来取出由数据(比如:像 MySQL 和 SQL

Server 这样的数据库管理系统的自动递增字段)内部生成的主键。

默认值:false

keyProperty

(仅对 insert 有用)标记一个属性,MyBatis 会通过 getGeneratedKeys

或者通过 insert 语句的 selectKey 子元素设置它的值。默认:不设置。


下面就是 insertupdate 和 delete 语句的示例:

<insert i d="insertAuthor" parameterType="domain.bl og.Author">

insert into Author (id,username,password,email,bio)

values (#{id},#{username},#{password},#{email},#{bio})

</insert>

<update i d="updateAuthor" parameterType="domain.bl og.Author">

update Author set

username = #{username},

password = #{password},

email = #{email},

bio = #{bio}

where id = #{id}

</update>

<delete i d="deleteAuthor” parameterType="int">

delete from Author where id = #{id}

</ delete>

如前所述,插入语句有一点多,它有一些属性和子元素用来处理主键的生成。

首先,如果你的数据库支持自动生成主键的字段(比如 MySQL 和 SQL Server),那么

你可以设置 useGeneratedKeys=true,而且设置 keyProperty 到你已经做好的目标属性上。

例如,如果上面的 Author 表已经对 id 使用了自动生成的列类型,那么语句可以修改为:

<insert i d="insertAuthor" parameterType="domain.bl og.Author"

useGeneratedKeys=”true” keyProperty=”i d”>

insert into Author (username,password,email,bio)

values (#{username},#{password},#{email},#{bio})

</insert>


 

 

 

 

 

 

MyBatis 有另外一种方法来处理数据库不支持自动生成类型,或者可能 JDBC 驱动不支

持自动生成主键时的主键生成问题。

这里有一个简单(甚至很傻)的示例,它可以生成一个随机 ID(可能你不会这么做,

但是这展示了 MyBatis 处理问题的灵活性,因为它并不真的关心 ID 的生成):

<insert i d="insertAuthor" parameterType="domain.bl og.Author">

<selectKey keyProperty="i d" resultType="int" order="B EFORE">

select CAST(RANDOM()*1000000 as INTEGER) a from SYSIBM.SYSDUMMY1

</selectKey>

insert into Author

(id, username, password, email,bio, favourite_section)

values

(#{id}, #{username}, #{password}, #{email}, #{bio},

#{favouriteSection,jdbcType=VARCHAR}

)

</insert>

在上面的示例中,selectKey 元素将会首先运行,Author 的 id 会被设置,然后插入语句

会被调用。这给你了一个简单的行为在你的数据库中来处理自动生成的主键,而不需要使你

 Java 代码变得复杂。

selectKey 元素描述如下:

<selectKey

keyProperty="id"

resultType="int"

order="BEFORE"

statementType="PREPARED">


广告 广告

评论区