Mybatis实体类的映射⽂件中select,insert语句使⽤
id:在命名空间中唯⼀的标识符,可以被⽤来引⽤这条语句。
parameterType:设置传⼊这条语句的参数的数据类型,如
resultType:设置从这条语句中返回数据的类型。注意如果返回的是集合,那应该设置为集合包含的类型,⽽不是集合本⾝。可以使⽤
resultType 或 resultMap,但不能同时使⽤。
select
1)查询某个表的所有记录
<select id="queryall" resultType="st.Person">
select * from person
</select>
2)根据某个字段的值查询
① 直接查询
传⼊的参数值通过#{id}传递给sql语句(id可⾃定义为其他的名字)
<!-- 根据id查⽤户 -->
<select id="querypersonbyid" parameterType="int" resultType="st.Person">
select * from person where id = #{id}
</select>
② 模糊查询
原⽣⽅法:like "%${value}%" 注意使⽤的是$并且参数名只能⽤value,否则会报错
<!-- 模糊查询 -->
<select id="querypersonbyname" parameterType="String" resultType="st.Person">
select * from person where name like "%${value}%"
</select>
mysql数据库:like CONCAT('%',#{name},'%') 这⾥是使⽤CONCAT进⾏拼接,name可以为其他名字
<select id="querypersonbyname" parameterType="String" resultType="st.Person">
insert语句字段顺序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}, #{ail}, #{item.bio})
</foreach>
</insert>
对于不⽀持⾃动⽣成类型的数据库或可能不⽀持⾃动⽣成主键的 JDBC 驱动,MyBatis 有另外⼀种⽅法来⽣成主键。
selectKey 元素中的语句将会⾸先运⾏,person 的 id 会被设置,然后插⼊语句会被调⽤。这可以提供给你⼀个与数据库中⾃动⽣成主键
类似的⾏为,同时保持了 Java 代码的简洁。
<insert id="insertperson" parameterType="st.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 类型。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论