Mybatis----增删改查
1、在EmployeeMapper接口中添加方法
public interface EmployeeMapper {
public Employee getEmpById(Integer id);
public void addEmp(Employee employee);
public void updateEmp(Employee employee);
public void deleteEmp(Integer id);
}
2、配置xml
<select id="getEmpById" resultType="com.fenga.mybatis.bean.Employee">
select * from tbl_employee where id = #{id}
</select>
<!-- parameterType可以省略 -->
<insert id="addEmp" parameterType="com.fenga.mybatis.bean.Employee">
insert into tbl_employee(last_name,email,gender) values(#{lastName},#{email},#{gender})
</insert>
<update id="updateEmp">
update tbl_employee
set last_name=#{lastName},email=#{email},gender=#{gender}
where id=#{id}
</update>
<delete id="deleteEmp">
delete from tbl_employee where id=#{id}
</delete>
注意:如果在config的配置文件中有提示,在mapping配置文件中ctrl+/没有提示,且在<mapper/>和下一行出现错误提示,很有可能dtd配置出现了错误
3、测试
@Test
public void test2() throws IOException {
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
SqlSession openSession = sqlSessionFactory.openSession();
try {
//获取到的SqlSession不会自动提交数据
EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
/*添加
* Employee employee = new Employee(null, "jerry", "jerry@qq.com", "0");
* mapper.addEmp(employee);
*
*修改
* Employee employee = new Employee(1, "jack", "jack@qq.com", "0");
* mapper.updateEmp(employee);
*
* 删除
* mapper.deleteEmp(2);
*/
mapper.deleteEmp(2);
//s手动提交数据
openSession.commit();
}finally {
openSession.close();
}
}
参数处理:
(1)单个参数
mybatis不会做特殊处理;#{参数名}:取出参数
(2)多个参数
多个参数会被封装成一个map
key:param1...paramN,或者参数的索引
value:传入的参数值
#{}就是从map中获取指定的key的值;
命名参数:明确指定封装时的map的key:@Param("id')
多个参数会被封装成一个map
key:使用@Param注解指定的值
value:参数值
#{指定的key}取出对应的参数值
如果多个参数正好是我们业务逻辑的数据模型,我们就可以直接传入pojo:
#{属性名}:取出传入的pojo的属性值
如果多个参数不是业务模型中的数据,没有对应pojo,为了方便,我们也可以传入map
#{key}:出去map中对应的值
如果多个参数不是业务模型中的数据,但经常要使用,推荐来编写一个TO(Transfer Object)数据传输对象
Page{
int index;
int size;
}