Mybatis的对象关系映射,用反射技术配合接口开发,更灵活,也更能体现java语言的面向对象方法。
首先定义一个接口,方法有如下:
public interface Idept {
List<Dept> showAll();
int save(Dept dept);
int update(Dept dept);
int delete(Dept dept);
}
总配置文件请参考:http://blog.csdn.net/qq_36969411/article/details/78069153 里的第一部分xml文件
Idept.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">
<!--命名空间就是自定义的接口,该接口定义的方法与下面的各sql语句的id一直,并且一一对应,注意欧-->
<mapper namespace="com.mybatis.util.Idept">
<!--动态查询sql语句 之if-->
<select id="showAll" resultType="dept" parameterType="dept">
select d.deptno,d.dname,d.loc from dept d
</select>
<!-- 动态查询sql之 choose -->
<insert id="save" parameterType="dept">
insert into dept(deptno,dname,loc) values(#{deptno},#{dname},#{loc})
</insert>
<delete id="delete" parameterType="dept">
delete from dept where deptno = #{deptno}
</delete>
<!--动态更新sql 之set -->
<update id="update" parameterType="dept">
update dept d
<set>
<if test="dname != null">
d.dname = #{dname},
</if>
<if test="loc != null">
d.loc = #{loc}
</if>
</set>
where d.deptno = #{deptno}
</update>
</mapper>
dao层方法:
/************************mybatis方二:xml{javabaean,接口(更能体现面向对象的思想)}*****************************/
private SqlSession sqlSession1;
private Idept idept;
private SqlSession sqlSession2;
{
sqlSession1 = MybatisUtil.getSqlSession("mybatis_config.xml");
idept = sqlSession1.getMapper(Idept.class);
//sqlSession2 = MybatisUtil.getSqlSession("mybatis_config.xml", Idept.class);
}
/**
* 显示所有记录
* @return List<Dept>
*/
public List<Dept> showAll(){
List<Dept> list = idept.showAll();
return list;
}
/**
* 保存单条记录
* @param dept
* @return
*/
public int save(Dept dept){
int i = 0;
try {
i = idept.save(dept);
sqlSession1.commit();
} catch (Exception e) {
e.printStackTrace();
if(null != sqlSession1){
sqlSession1.rollback();
}
}
return i;
}
/**
* 更新单条记录
* @param dept
* @return
*/
public int update(Dept dept){
int i = 0;
try {
i = idept.update(dept);
sqlSession1.commit();
} catch (Exception e) {
e.printStackTrace();
if(null != sqlSession1){
sqlSession1.rollback();
}
}
return i;
}
/**
* 删除单条记录
* @param dept
* @return
*/
public int delete(Dept dept){
int i = 0;
try {
i = idept.delete(dept);
sqlSession1.commit();
} catch (Exception e) {
e.printStackTrace();
if(null != sqlSession1){
sqlSession1.rollback();
}
}
return i;
}
}
测试这里就不再演示了!谢谢观看。