学习MyBatis
MyBatis使用generate自动生成DAO实体类与对应的mapper.xml
这个是昨天还是前天的学习内容了,这周末再写~现在在上班不方便,周末回家学习!
MyBatis的映射文件——mapper.xml相关语法
mapper.xml映射文件中定义了操作数据库的相关SQL语句(理解为语句,是一些xml标签等),在映射文件中有很多顶级元素:
cache:给定命名空间的缓存配置
cache-ref:其他命名空间缓存配置的引用
resultMap :是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象
parameterMap:目前很多参考都说废弃了,那就不记录啦
sql:可被其他语句引用的可重用语句块。
insert:映射插入语句
update:映射更新语句
delete:映射删除语句
select:映射查询语句
select
select查询语句是mybatis中最常用的一个,一般很多操作都是从数据库查询然后在前端渲染,所以对比起来insert、update、delete的语句比重会少一点。(个人理解),一个简单的select片段如下:
<select id="selectById" parameterType="int" resultType="hashmap">
SELECT * FROM person WHERE id = #{id}
</select>
这个语句接收一个int
或Integer
的参数,传参的形式为#{parameter}
,返回一个hashmap
的对象,键是列名,值是列对应结果集的值。(不过我看现在都不写parameterType这个属性了)
每一个命名空间中id
都是唯一的,所以在代码中可以使用这个id
来引用这条语句。
insert、update、delete
这三个都是对表中数据进行更改的,包括:插入、更新和删除
insert例子
<insert id="insertAuthor">
insert into Author (id,username,password,email,bio)
values (#{id},#{username},#{password},#{email},#{bio})
</insert>
一般数据库都配置了自动生成主键,所以在insert
语句里需要将useGeneratedKeys
属性设置为true
,然后将keyProperty
属性设置到对应的主键上就行:
<insert id="insertAuthor" useGeneratedKeys="true" keyProperty="id">
insert into Author (username,password,email,bio)
values (#{username},#{password},#{email},#{bio})
</insert>
update例子
<update id="updateAuthor">
update Author
set username = #{username},
password = #{password},
email = #{email},
bio = #{bio}
where id = #{id}
</update>
delete例子
<delete id="deleteAuthor">
delete from Author where id = #{id}
</delete>
在语句中还有其他的功能,比如where
、foreach
、if
等,这些以后再写。