MyBatis 的CRUD 功能
### 增加对象
1. 在Mapper接口中增加添加方法
2. 在子配置文件中增加 方法与sql映射关系
- 增加参数与SQL参数的映射关系> 注意:Mapper接口方法名是ID不能重复,不能重载方法,所有的Mapper接口中的方法名都不能重复!
参考代码:
interface DeptMapper{
//增加方法
void addDept(Dept dept);
}
//DeptMapper.xml 文件
//增加接口方法与sql的对应关系
// 增加参数与SQL参数的对应关系
<insert id="addDept"
parameterType="cn.tedu.entity.Dept">
insert into dept (...) values(#{deptNo},#{dname},#{loc})
</insert>
### 删除对象
1. 添加删除方法
2. 增加删除的对应规则
代码:
interface DeptMapper{
void deleteDept(Dept dept);
}
//修改配置文件 DeptMapper.xml
<delete id="deleteDept"
parameterType="cn.tedu.entity.Dept">
delete from dept where deptNo=#{deptNo}
</delete>
### 查找对象的方法
1. 修改Mapper接口,添加查找方法
2. 修改Mapper.xml,添加查找方法和SQL映射关系
代码:
interface DeptMapper{
//...
Dept findDeptById(Integer deptNo);
}
//在DeptMapper.xml 中添加映射关系
<select id="findDeptById"
resultType="cn.tedu.entity.Dept"
parameterType="java.lang.Integer">
select deptNo, dname, loc from Dept
where deptNo=#{deptNo}
</select>
> resultType 是结果集行映射的类型
> 注意:MyBatis的Mapper接口方法参数只能有一个
### 更新对象的方法
代码:
interface DeptMapper{
//...
void updateDept(Dept dept);
}
//DeptMapper.xml添加映射关系
<update id="updateDept"
parameterType="cn.tedu.entity.Dept">
update dept set dname=#{dname},
loc=#{loc} where deptNo=#{deptNo}
</update>
### 查询部分列作为结果
代码:
interface DeptMapper{
//...
List<Map<String, Object>> findDeptAll();
}
//DeptMapper
<select id="findDeptAll"
resultType="java.util.Map">
select dname as "dname",
loc as "loc" from dept
</select>
### SqlSession直接执行SQL
> SqlSession 直接提供了CRUD方法,可以直接根据sql的ID执行sql语句。其中SQL ID是在Mapper.xml 中定义的SQL ID。
> 执行结果与Mapper接口执行结果一样。
> 这种方式为程序员执行SQL提供了多种选择。