简介
在本章开始之前,先导入章节一中的入门项目,创建好数据库并导入数据,具体sql文件在项目地址中。
深入MyBatis源码之前,需要做的就是要了解MyBatis 是怎样使用的,带着使用过程中出现的问题再到源码中学习了解,会比单纯看源码深刻些。 下面开始了解MyBatis 的日常使用。
对于MyBatis 的使用,这里采用学生管理系统来简单演示MyBatis 的用法和解决使用过程中的问题。
一、select、insert, update 和 delete的映射标签使用
1.1 查询学生列表
Mapper接口
public interface StudentMapper {
List<Student> list();
}
映射文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.hdj.mybatis.example.dao.StudentMapper">
<!--resultType 结果集映射类型
注意,如果返回的是集合,那应该设置为集合包含的类型,而不是集合本身的类型。
-->
<select id="list" resultType="cn.hdj.mybatis.example.entity.Student">
select * from student
</select>
</mapper>
1.2 添加学生
Mapper接口
public interface StudentMapper {
//添加学生
int addStudent(Student student);
//批量添加学生
int addStudentBatch(List<Student> students);
}
映射文件 ```xml <?xml version=”1.0” encoding=”UTF-8” ?> <!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--
将会传入这条语句的参数的类全限定名或别名。 这个属性是可选的,因为 MyBatis 可以通过类型处理器(TypeHandler)推断出具体传入语句的参数,默认值为未设置(unset)。
推荐写上
{} :
- 使用 #{} 参数语法时,MyBatis 会创建 PreparedStatement 参数占位符
- 并通过占位符安全地设置参数(就像使用 ? 一样)。
- 这样做更安全,更迅速,通常也是首选做法
如果要获取内嵌对象属性,使用链式调用,如: obj1.obj2Name.properties
—>
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,SCLASS) VALUES (#{sno},#{sname},#{ssex},#{sbirthday},#{sclass});
<insert id="addStudentBatch" parameterType="cn.hdj.mybatis.example.entity.Student">
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,SCLASS)
VALUES
<foreach item="item" collection="list" separator=",">
(#{item.sno}, #{item.sname}, #{item.ssex}, #{item.sbirthday},#{item.sclass})
</foreach>
</insert>
<a name="nZrA4"></a>
#### 1.3 更新学生
- 接口
```java
public interface StudentMapper {
//更新学生
int updateStudent(Student student);
}
- 映射文件
<update id="updateStudentById" parameterType="cn.hdj.mybatis.example.entity.Student">
update STUDENT
set
SNAME = #{sname},
SSEX = #{ssex},
SBIRTHDAY = #{sbirthday},
SCLASS = #{sclass}
where SNO = #{sno}
</update>
疑问:
项目地址
https://github.com/h-dj/Mybatis-Learning