Java框架MyBatis接口编程过程解析
作者:不成大牛不改名 发布时间:2022-09-18 07:47:04
标签:Java,MyBatis,接口,编程
要求:
1.配置文件的namespace名称空间指定为接口的全类名
2.配置文件中的id唯一标识与接口中的方法对应(返回值类型对应,方法名对应,参数个数和类型对应)
接口代码:
package com.bird.mybatis.dao;
import com.bird.mybatis.bean.Employee;
public interface EmployeeMapper {
public Employee getEmpById(Integer id);
}
对应配置文件代码:
<?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">
<!-- namespace:名称空间(若使用接口式编程,与EmployeeMapper接口全类名一致)
id:唯一标识(与接口中的方法名对应)
resultType:返回值类型(与对应方法的返回值对应)
#{id}:从传递过来的参数中取出id值
-->
<mapper namespace="com.bird.mybatis.dao.EmployeeMapper">
<select id="getEmpById" resultType="com.bird.mybatis.bean.Employee">
select id,last_name lastName,gender,email from tbl_employee where id = #{id}
</select>
</mapper>
测试代码:
/**
* MyBatis接口编程
* @throws IOException
*/
@Test
void test2() throws IOException {
//获取sqlSessionFactory对象
SqlSessionFactory ssf = getSqlSessionFactory();
//获取sqlSession对象
SqlSession openSession = ssf.openSession();
try {
//获取接口的实现类对象
EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
Employee empById = mapper.getEmpById(1);
System.out.println(empById);
}finally {
openSession.close();
}
}
/**
* 获取sqlSessionFactory对象
* @throws IOException
*/
public static SqlSessionFactory getSqlSessionFactory() throws IOException {
String resource = "mybatis-config.xml";
InputStream is = Resources.getResourceAsStream(resource);
return new SqlSessionFactoryBuilder().build(is);
}
总结:
1.接口编程:
原生接口: Dao ===> DaoImpl
MyBatis: Dao ===> Mapper.xml
2. SqlSession代表与数据库的一次会话,用完要关闭
3. SqlSession和Connection都是非线程安全的,所以每次都要获取新的对象,而不能写成成员变量
4.mapper接口没有实现类,但是MyBatis生成代理对象
来源:https://www.cnblogs.com/liujingche00/p/12286934.html


猜你喜欢
- Android webview在默认情况下是不支持网页中的文件上传功能的;如果在网页中有<input type="file&
- 前言等待总是让人感到焦急和厌烦的,特别是看不到进展的等待。所以为了不让用户痴痴地等,我们在进行某些耗时操作时,一般都要设计一个进度条或者倒计
- 本文实例为大家分享了Android实现图像切换器的具体代码,供大家参考,具体内容如下java代码:private int[] imageId
- 这个小游戏是我和我姐们儿的JAVA课程设计,也是我做的第一个JAVA项目,适合初学者,希望能帮到那些被JAVA课设所困扰的孩纸们~~~一、该
- 目录前言线程基础1、创建线程2、暂停线程3、线程等待4、线程终止C#中的lock关键字总结前言最近由于工作的需要,一直在使用C#的多线程进行
- 本文实例为大家分享了Android Scroller实现弹性滑动的具体代码,供大家参考,具体内容如下首先看下实现效果,可以看到当我们手指松开
- Android 图片选择可以达到的效果:1.第一个图片的位置放照相机,点击打开照相机2.其余的是显示全部存储的图片,点击一次是查
- 单独使用mybatis是有很多限制的(比如无法实现跨越多个session的事务),而且很多业务系统本来就是使用spring来管理的事务,因此
- 下截JNative组件jnative.sourceforge.net/ 到这里下载JNative开源项目,我下载的是1.3.2解压JNati
- 实现 bean 初始化、摧毁方法的配置与处理spring支持我们自定义 bean 的初始化方法和摧毁方法。配置方式可以通过 xml 的 in
- 断言的概念断言用于证明和测试程序的假设,比如“这里的值大于 5”。断言可以在运行时从代码中完全删除,所以对代码的运行速度没有影响。断言的使用
- 方法一:using System;using System.Collections.Generic;using System.Compon
- 今天可是遇到一个很简单的需求,但是却让我蛋疼了半天。滑动屏幕控制物体旋转,但是旋转的角度要在-60到60之间。乍一听这简直是小儿科啊。判断一
- 一、环境准备:(根据自己电脑配置来选择安装版本,我的电脑是64位,所以此处选择64位安装)JDK下载:JDK 1.8下载地址: http:/
- 在android开发中,有时候我们想获取手机的一些硬件信息,比如android手机的总内存和可用内存大小。这个该如何实现呢?通过读取文件&q
- 前言 我们都知道,finally在捕获异常的操作中,总是最
- 简介redis 多数据源主要的运用场景是在需要使用多个redis服务器或者使用多个redis库,本文采用的是fastdep依赖集成框架,快速
- 1、 初始化地图,在绘制时可先将地图进行初始化,用数组来存储关卡的位置,然后利用循环给地图中 关卡所在处赋予代表关卡的值。关键代码如下///
- 前言 安卓系统中,Button是程序和用户进行交互的一个重要控件,今天我们就来简单的对Button进行学习,其中Bu
- JNI,Java Native Interface,是 native code 的编程接口。JNI 使 Java 代码程序可以与 nativ