Mybatis之xml配合接口开发,更体现面向对象

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;
    }
}

测试这里就不再演示了!谢谢观看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值