mapper的属性
简单的示例如下:
<mapper namespace="com.maven.sssm.Dao">
</mapper>
namespace的值就是dao接口的完整路径,就这个demo而言namespace 就是Dao.java的完整路径.。
select查询语句
查询语句是 MyBatis 中最常用的元素之一,简单的示例如下:
<select id="selectPerson" parameterType="int" resultType="hashmap">
SELECT * FROM PERSON WHERE ID = #{id}
</select>
selectPersion是这个语句的名字,在调用是通过id来调用。parameterType="int"是指接收一个int类型的参数,resultType="hashmap"是指返回一个hashmap类型的对象。
#{id}是指传递的参数的名字为id,使用#{}可以获取id的值。
select的常用属性有如下三个:
属性 | 描述 |
---|---|
id | 语句的名字,命名空间的唯一标识符,可以用来被引用这个语句 |
parameterType | 将会传入这条语句的参数类的完全限定名或别名。这个属性是可选的,因为 MyBatis 可以通过 TypeHandler 推断出具体传入语句的参数,默认值为 unset(依赖驱动)。 |
resultType | 从这条语句中返回的期望类型的类的完全限定名或别名。注意如果是集合情形,那应该是集合可以包含的类型,而不能是集合本身。使用 resultType 或 resultMap,但不能同时使用。 |
对于select而言,查询到了数据往往不值一条,故在调用接口文件中可以使用List<>作为返回值,但是在mapper文件中的返回类型还应该是bean类型的。
insert, update 和 delete
示例:
<insert id="insertAuthor">
insert into Author (id,username,password,email,bio)
values (#{id},#{username},#{password},#{email},#{bio})
</insert>
<update id="updateAuthor">
update Author set
username = #{username},
password = #{password},
email = #{email},
bio = #{bio}
where id = #{id}
</update>
<delete id="deleteAuthor">
delete from Author where id = #{id}
</delete>
mybatis允许增删改直接定义以下类型的返回值:Integer、Long、Boolean(包装类和基本类都可以),只需要在调用时修改方法的返回值即可,不用在mapper中做属性的改变。
insert在添加时,添加属性useGeneratedKeys=“true”即可自动返回一个自增的主键值,以keyProperty属性的方式返回。
在传入多个参数时mybatis会做特殊处理,会封装成一个map,在mapper中使用#{param1}、#{param2}去取值,或者在传参时在接口的参数前加上@Parma(“别名”),在mapper中调用时就可以直接使用#{别名}进行取值了。