mybatis实战教程(mybatis in action)之二:以接口的方式编程

前面一章,已经搭建好了eclipse,mybatis,mysql的环境,并且实现了一个简单的查询。请注意,这种方式是用SqlSession实例来直接执行已映射的SQL语句:
session.selectOne("com.yihaomen.mybatis.models.UserMapper.selectUserByID", 1)
其实还有更简单的方法,而且是更好的方法,使用合理描述参数和SQL语句返回值的接口(比如IUserOperation.class),这样现在就可以至此那个更简单,更安全的代码,没有容易发生的字符串文字和转换的错误.下面是详细过程:

在src_user源码目录下建立 com.yihaomen.mybatis.inter 这个包,并建立接口类 IUserOperation , 内容如下:
程序代码 程序代码

package com.yihaomen.mybatis.inter;
import com.yihaomen.mybatis.model.User;

public interface IUserOperation {    
    public User selectUserByID(int id);
    
}

请注意,这里面有一个方法名 selectUserByID 必须与 User.xml 里面配置的 select 的id 对应(<select id="selectUserByID")

重写测试代码
程序代码 程序代码

public static void main(String[] args) {
        SqlSession session = sqlSessionFactory.openSession();
        try {
            IUserOperation userOperation=session.getMapper(IUserOperation.class);
            User user = userOperation.selectUserByID(1);
            System.out.println(user.getUserAddress());
            System.out.println(user.getUserName());
        } finally {
            session.close();
        }
    }

整个工程结构图现在如下:


运行这个测试程序,就可以看到结果了。

来源: http://www.yihaomen.com/article/java/304.htm


来自为知笔记(Wiz)


转载于:https://www.cnblogs.com/jeffen/p/6236302.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255674.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux内核分析06

进程的描述和进程的创建 一&#xff0c;进程的描述 进程控制块PCB——task_struct &#xff08;进程描述符&#xff09;&#xff0c;为了管理进程&#xff0c;内核必须对每个进程进行清晰的描述&#xff0c;进程描述符提供了内核所需了解的进程信息。 struct task_struct数据结…

【pyqt5学习】——pyqt5中.qrc资源文件的创建与编写

目录 一、说明 二、安装pyqt5以及相关工具&#xff08;pyqt5、pyuic、pqrcc&#xff09; 三、创建.ui文件 1、选中文件右键-external-pyqt5 打开GUI设计界面 2、创建一个界面&#xff08;内含四个等大label框&#xff09; 3、CTRLS保存 4、找到ui文件&#xff0c;右键--e…

zabbix3.0.4通过jmx监控tomcat

jdk下载页面http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htmlhttp://download.oracle.com/otn-pub/java/jdk/8u91-b14/jdk-8u91-linux-x64.rpm?AuthParam1462948138_871b75d4b1dd7155e8cbe4f23e5cd2cd脚本[rootNFS-WEB1 latest]# vim /e…

C#学习笔记——25个经典问题

1.静态成员和非静态成员的区别&#xff1f; 2.const 和 static readonly 区别&#xff1f; 3.extern 是什么意思&#xff1f; 4.abstract 是什么意思&#xff1f; 5.internal 修饰符起什么作用&#xff1f; 6.sealed 修饰符是干什么的&#xff1f; 7.override 和 o…

PHP的学习--RSA加密解密

PHP服务端与客户端交互或者提供开放API时&#xff0c;通常需要对敏感的数据进行加密&#xff0c;这时候rsa非对称加密就能派上用处了。 举个通俗易懂的例子&#xff0c;假设我们再登录一个网站&#xff0c;发送账号和密码&#xff0c;请求被拦截了。 密码没加密&#xff0c;那攻…

Swift学习

1、Swift网址 http://swiftdoc.org/ 2、 https://github.com/ipader/SwiftGuide 转载于:https://www.cnblogs.com/superbobo/p/5329876.html

【pyqt5学习】——最新版:配置external tools(designer、pyuic、pqrcc)

目录 1、pip install PyQt5 2、pip install pyqt5-tools 3、file-settings-tools-external tool 点击加号定义工具名字&#xff0c;名字随意便于区分即可 双击每一个工具名字&#xff0c;配置路径&#xff08;注意每一个exe的路径&#xff09; designer.exe pyuic.exe py…

Linux中vi命令详解

最近vi用的多&#xff0c;很多技巧不知道&#xff0c;备注一份&#xff0c; vi编辑器是所有Unix及Linux系统下标准的编辑器&#xff0c;它的强大不逊色于任何最新的文本编辑器&#xff0c;这里只是简单地介绍一下它的用法和一小部分指令。由于 对Unix及Linux系统的任何版本&…

C# 属性和字段

以下的文章是摘录的&#xff0c;作者已经不详了。之所以摘录&#xff0c;是因为这个概念很重要特别对于VFP程序员来说&#xff0c;这里构造属性就与vfp的方法完全不同。c#的属性融合了vfp的addproperty() 和属性的access method和assign method 。不一而足使用属性&#xff0c…

SEO优化---学会建立高转化率的网站关键词库

想要优化好一个网站&#xff0c;行业的分析&#xff0c;以及关键词的挖掘是必要的,有一定的关键词排名了,但是转化率和流量方面却很不理想这种情况大部分是只注重了有指数的关键词排名&#xff0c;而忽略了长尾关键词和一些没有指数但是可以带来巨大流量的关键词。 网站大部分的…

Monkey脚本编写

脚本优势&#xff1a;简单、快捷、不需要借助任何工具&#xff0c;可以做简单的性能测试 脚本缺点&#xff1a;只能简单实现坐标、按键等基本操作&#xff0c;无逻辑性 脚本格式&#xff1a; 脚本API&#xff1a; 例子&#xff1a; 打开浏览器&#xff0c;输入WWW.jikexueyuan.…

C#通过DllImport引入dll中的C++非托管类

首先从msdn了解到&#xff0c;DllImport是用来 将特性化方法由非托管动态链接库 (DLL) 作为静态入口点公开。 从以上语句我们可以理解出三点&#xff1a;1.C编写的非托管dll可以通过DllImport引入到C#中&#xff1b;2.引入到C#中的只能是C方法&#xff08;或者说函数&#xff0…

USB 设备类协议入门【转】

本文转载自&#xff1a;http://www.cnblogs.com/xidongs/archive/2011/09/26/2191616.html 一、应用场合USB HID类是比较大的一个类&#xff0c;HID类设备属于人机交互操作的设备。用于控制计算机操作的一些方面&#xff0c;如USB鼠标&#xff0c;USB键盘&#xff0c;USB游戏操…

lucene之Field属性的解释

Field类 数据类型 Tokenized是否分词 Indexed 是否索引 Stored 是否存储 说明 StringField(FieldName, FieldValue,Store.YES)) 字符串 N Y Y或N 这个Field用来构建一个字符串Field&#xff0c;但是不会进行分析&#xff0c;会将整个串存储在索引中&#xff0c;比如…

【机器视觉】——焦距计算物体实际尺寸计算

目录 1.基本概念 2.像素尺寸(piex)转为实际尺寸(mm) 3.焦距计算

Tableview中Dynamic Prototypes动态表的使用

Tableview时IOS中应用非常广泛的控件&#xff0c;当需要动态的添加多条不同的数据时&#xff0c;需要用动态表来实现&#xff0c;下面给出一个小例子&#xff0c;适用于不确定Section的数目&#xff0c;并且每个Section中的行数也不同的情况&#xff0c;适合新手。首先&#xf…

c# - 声明事件

1 事件是属于一个特定的类的&#xff0c;其本质是只能在此类中调用的委托。 从面向对象的角度出发&#xff0c;事件是对象对某个消息的响应&#xff0c;因此其声明必然只能在类的级别出现&#xff0c;且不可用static修饰。 2 事件其实和属性差不多&#xff0c;是一种特殊的方法…

appium 环境搭建 java

1 安装node.js 1.1 安装node.js http://nodejs.cn/download/ 1.2、下载后直接点击exe,按照提示一步一步的安装 1.3 安装成功后&#xff0c;运行cmd&#xff0c;输入node –v&#xff0c;如果安装成功&#xff0c;会输出如下版本信息 2 eclipse android开发环境搭建 2.1 用eclip…

【数据库bug修复】——Authentication plugin ‘caching_sha2_password‘ is not supported

目录 原因 连接数据库的时候出现这个问题的解决方法 创建数据库连接池时解决方法 原因 使用客户端链接mysql数据库&#xff0c;如果数据库版本高于8.0&#xff0c;可能出现以上问题&#xff0c;因为8.0以前默认使用mysql_native_password身份验证机制&#xff0c;8.0以后使用…

javascript引用bug带来的继承

<!DOCTYPE html> <html> <head lang"en"><meta charset"UTF-8"><title>继承</title> </head> <body> <script>function A(){this.abc 12;}A.prototype.show function(){alert(this.abc);}functio…