Mybatis实体类的映射文件中select,insert语句使用

id:在命名空间中惟一的标识符,能够被用来引用这条语句。java

parameterType:设置传入这条语句的参数的数据类型,如int,String......mysql

resultType:设置从这条语句中返回数据的类型。 注意若是返回的是集合,那应该设置为集合包含的类型,而不是集合自己。可使用sql

      resultType 或 resultMap,但不能同时使用。数据库

select数组

1)查询某个表的全部记录spa

<select id="queryall" resultType="com.test.Person">
	select * from person
</select>

 

2)根据某个字段的值查询blog

  ① 直接查询索引

    传入的参数值经过 #{id} 传递给sql语句(id可自定义为其余的名字)it

<!-- 根据id查用户 -->
<select id="querypersonbyid" parameterType="int" resultType="com.test.Person">
	select * from person where id = #{id}
</select>

  ② 模糊查询io

    原生方法:like "%${value}%"  注意使用的是 $ 而且参数名只能用 value,不然会报错

<!-- 模糊查询  -->
<select id="querypersonbyname" parameterType="String" resultType="com.test.Person">
	select * from person where name like "%${value}%"
</select>

    mysql数据库:like CONCAT('%',#{name},'%')  这里是使用CONCAT进行拼接,name能够为其余名字

<select id="querypersonbyname" parameterType="String" resultType="com.test.Person">
	select * from person where name like CONCAT('%',#{name},'%')
</select>

 

Insert

1)往表中插入一条记录

<insert id="insertAuthor">
    insert into Author (id,username,password,email,bio)
    values (#{id},#{username},#{password},#{email},#{bio})
</insert>

2)插入时主键自动生成

  首先,若是你的数据库支持自动生成主键的字段(好比 MySQL 和 SQL Server),那么你能够设置 useGeneratedKeys=”true”,而后再把 keyProperty 设置到目标属性上就 OK 了。

<insert id="insertAuthor" useGeneratedKeys="true" keyProperty="id">
    insert into Author (username,password,email,bio)
    values (#{username},#{password},#{email},#{bio})
</insert>

  若是你的数据库还支持多行插入, 你也能够传入一个 Author 数组或集合,并返回自动生成的主键。

<insert id="insertAuthor" useGeneratedKeys="true" keyProperty="id">
     insert into Author (username, password, email, bio) values
    <foreach item="item" collection="list" separator=",">
        (#{item.username}, #{item.password}, #{item.email}, #{item.bio})
    </foreach>
</insert>

  对于不支持自动生成类型的数据库或可能不支持自动生成主键的 JDBC 驱动,MyBatis 有另一种方法来生成主键。

  selectKey 元素中的语句将会首先运行,person 的 id 会被设置,而后插入语句会被调用。这能够提供给你一个与数据库中自动生成主键相似的行为,同时保持了 Java 代码的简洁。

<insert id="insertperson" parameterType="com.test.Person">
    <selectKey keyProperty="id" resultType="int" order="BEFORE">
        select LAST_INSERT_ID()
    </selectKey>
    insert into person(name,age,address,birthday)
    value(#{name},#{age},#{address},#{birthday})
</insert>        

  selectKey 元素描述以下:

<selectKey
  keyProperty="id"
  resultType="int"
  order="BEFORE"
  statementType="PREPARED">

  keyProperty:selectKey 语句结果应该被设置的目标属性。若是但愿获得多个生成的列,也能够是逗号分隔的属性名称列表。

  resultType:结果的类型。

  order:这能够被设置为 BEFORE 或 AFTER。若是设置为 BEFORE,那么它会首先生成主键,设置 keyProperty 而后执行插入语句。若是设置为AFTER,那么先执行插入语句,而后是 selectKey 中的语句 - 这和 Oracle 数据库的行为类似,在插入语句内部可能有嵌入索引调用。

  statementType:MyBatis 支持 STATEMENT,PREPARED 和 CALLABLE 语句的映射类型,分别表明 PreparedStatement 和 CallableStatement 类型。

相关文章
相关标签/搜索