一.实现面向接口编程

  具体操作方法如下:

    第一:编写一个接口(IUser.java)

      接口暂时为空接口,接口文件包路径:com.gusi.demo.idao.IUser

    第二:修改映射文件(User.xml)

      将namespace属性值改为上面定义接口的类的全名称com.gusi,demo.idao.IUser。然后将每个sql语句的id记录下来,接受参数类型记录下来,以及返回类型记录下来

  

 <mapper namespace="com.gusi.demo.idao.IUser">  

    <resultMap type="com.gusi.demo.pojo.User" id="UserResult">  
     <id column="id" jdbcType="INTEGER" property="id"/>  
     <result column="username" jdbcType="VARCHAR" property="username"/>  
     <result column="password" jdbcType="VARCHAR" property="password.encrypted"/>  
     <result column="administrator" jdbcType="BOOLEAN" property="administrator"/>  
   </resultMap>  
  
  <select id="find" parameterType="long" resultMap="UserResult">  
11     SELECT * FROM user WHERE id = #{id:INTEGER}  
  </select>  
</mapper>  

    第三:给上面的每一个sql语句在接口类IUser.java中添加一个接口方法

      接口方法的返回类型就为上面记录的返回类型:com.gusi.demo.poji.User类型,当然这个地方也支持java基本类型和String类型

      接口方法的名称就为上面记录sql语句的id:find,这个id在同一个namespace下是唯一的

      接口方法的请求参数就为上面记录的参数类型:long,当然这个地方是支持javaBean类型的参数类型

 package com.gusi.demo.idao;  
public interface IUser{  
    public com.gusi.demo.pojo.User find(long id);//这就是对应的接口方法之一  
}  

    第四:测试接口

 SqlSession sqlSession = sqlSessionFactory.getSqlSession();//获得一个sqlSession  
//以前代码写法如下:  
//User user = sqlSession.selectOne("User.find",1L);  
//改为面向接口编程:  
IUser iUser = sqlSession.getMapper(IUser.class);//通过sqlSession获取对应注册接口  
User user = iUser.find(1L);//直接调运接口方法就可以获得对应的User对象  

mybatis面向接口的编程的更多相关文章

  1. Mybatis面向接口式编程

    Mybatis面向接口编程 1.xml文件书写格式 <?xml version="1.0" encoding="UTF-8" ?> <!DOC ...

  2. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(3)-面向接口的编程

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(3)-面向接口的编程 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)  (1)框架搭建    (2):数据 ...

  3. Java 面向接口的编程

    面向接口的编程 什么是面向接口编程呢?我个人的定义是:在系统分析和架构中,分清层次和依赖关系,每个层次不是直接向其上层提供服务(即不是直接实例化在上层中),而是通过定义一组接口,仅向上层暴露其接口功能 ...

  4. MyBatis的接口式编程Demo

    很久没细看过MyBatis了,时间一长就容易忘记. 下面是一个接口式编程的例子. 这里的例子一共分为4步: 1 首先要有一个namespace为接口的全类名的映射文件,该例中是 IMyUser.xml ...

  5. JAVA面向接口的编程思想与具体实现

    面向对象设计里有一点大家已基本形成共识,就是面向接口编程,我想大多数人对这个是没有什么觉得需要怀疑的.        问题是在实际的项目开发中我们是怎么体现的呢? 难道就是每一个实现都提供一个接口就了 ...

  6. MyBatis源码解析【7】接口式编程

    前言 这个分类比较连续,如果这里看不懂,或者第一次看,请回顾之前的博客 http://www.cnblogs.com/linkstar/category/1027239.html 修改例子 在我们实际 ...

  7. Kotlin编写Processing程序(使用函数式编程思维和面向接口方式)

    写一例Kotlin编写的Processing程序,充分调用函数式编程思维和面向接口的编程思维,供自己和读者参考学习. 初衷 想要实现一行行的文字排版功能,每一行作为一个单位,可制定显示的位置.大小.文 ...

  8. mybaits接口式编程

    Mybatis是接口式编程实现对.xml中sql语句的执行,其过程如下(取自慕课网视频<通过自动回复机器人学Mybatis---加强版>): 1.加载配置信息2.通过加载配置信息加载一个代 ...

  9. javascript设计模式学习之十七——程序设计原则与面向接口编程

    一.编程设计原则 1)单一职责原则(SRP): 这里的职责是指“引起变化的原因”:单一职责原则体现为:一个对象(方法)只做一件事. 事实上,未必要在任何时候都一成不变地遵守原则,实际开发中,因为种种原 ...

随机推荐

  1. Selenium Web 自动化 - 项目持续集成(进阶)

    Selenium Web 自动化 - 项目持续集成(进阶) 2017-03-09 目录 1 背景及目标2 环境配置  2.1 SVN的安装及使用  2.2 新建Jenkins任务3 过程分析 1 背景 ...

  2. gulp自动化压缩合并、加版本号解决方案

    虽然网上有很多的 gulp 构建文章,但是很多都已经随着 gulp 插件的更新无法运行了.因此,我写了这个比较简单的构建方案. 如果还不熟悉 gulp 的插件,可以阅读上一篇文章:精通gulp常用插件 ...

  3. 又见Bug

    文章转载自「开发者圆桌」一个关于开发者入门.进阶.踩坑的微信公众号 作为一名开发者,如何解决遇到的问题.异常或Bug,是开发者必须要面对的,尽管问题很多,情况复杂,但还是有方法和技巧可寻的. 问题无非 ...

  4. 【解题报告】pojP1436 Horizontally Visible Segments

    http://poj.org/problem?id=1436 题目大意:有n条平行于x轴的线段,每条线段有y坐标,如果两条线段有一段x坐标数值相等,且中间没有其它线段阻隔,则称这两条线段"照 ...

  5. http自动跳转https小记

    因近期跌代更新ios/android后,由于担心ios https从17年起限制的问题,故目前我们将http更改为https,但既然支持https,故想将服务器直接更新为https,将原http请求自 ...

  6. 牛顿迭代法(Newton's Method)

    牛顿迭代法(Newton's Method) 简介 牛顿迭代法(简称牛顿法)由英国著名的数学家牛顿爵士最早提出.但是,这一方法在牛顿生前并未公开发表. 牛顿法的作用是使用迭代的方法来求解函数方程的根. ...

  7. MyBatis:学习笔记(1)——基础知识

    MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数 ...

  8. Java实现非递归删除目录

    最近在学C#的文件系统, 发现C#的文件系统貌似比java的东西少一点, 居然连删除目录都直接做好封装了, 想到学java的时候还要自己写递归删除, 好像没写过非递归的,就在网上查了下, 关于非递归删 ...

  9. 将基因组数据分类并写出文件,python,awk,R data.table速度PK

    由于基因组数据过大,想进一步用R语言处理担心系统内存不够,因此想着将文件按染色体拆分,发现python,awk,R 语言都能够非常简单快捷的实现,那么速度是否有差距呢,因此在跑几个50G的大文件之前, ...

  10. Linux之uniq命令

    uniq - report or omit repeated lines  省去重复的行 参数: -i  忽略大小写字符的不同 -c  对重复的行进行记数 注意:uniq命令只会对相邻的重复的行进行去 ...