mybatis之第一个mybatis程序(二)

通过接口编程来实现mybatis之第一个mybatis程序(一)中的功能。

1、在src下新建一个com,gong,mybatis.dao的包,在里面新建一个EmployeeDao.java(注意是接口)

package com.gong.mybatis.dao;

import com.gong.mybatis.bean.Employee;

public interface EmployeeDao {
    public Employee getEmpById(Integer id);
}

2、更改EmployeeMapper.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">
<mapper namespace="com.gong.mybatis.dao.EmployeeDao">
<!--
namespace:名称空间;指定为接口的全类名
public Employee getEmpById(Integer id);
 -->
    <select id="getEmpById" resultType="com.gong.mybatis.bean.Employee">
        select id,last_name lastName,email,gender from tbl_employee where id = #{id}
    </select>
</mapper>

这里需要修改的地方有两个:

  • 让namespace中为EmployeeDao接口的全类名
  • 让id的名称与EmployeeDao中的方法名一致

这样就将EmployeeDao中的getEmpById方法与EmployeeMapper.xml中的进行了绑定

3、修改TestMybatis.java中的方法

package com.gong.mybatis.test;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import com.gong.mybatis.bean.Employee;
import com.gong.mybatis.dao.EmployeeDao;

public class TestMybatis {

    public SqlSessionFactory getSqlSessionFactory() throws IOException {
        String resource = "mybatis-config.xml";
        InputStream is = Resources.getResourceAsStream(resource);
        return new SqlSessionFactoryBuilder().build(is);
    }

    @Test
    public void test() throws IOException {
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
        SqlSession openSession = sqlSessionFactory.openSession();
        //获取sqlSession实例,能够直接执行已经映射好的sql语句
        try {
            Employee employee = openSession.selectOne("com.gong.mybatis.EmployeeMapper.getEmpById",1);
            System.out.println(employee);
        }finally {
            openSession.close();
        }
    }

    @Test
    public void test01() throws IOException {
        // 1、获取sqlSessionFactory对象
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
        // 2、获取sqlSession对象
        SqlSession openSession = sqlSessionFactory.openSession();
        try {
            // 3、获取接口的实现类对象
            //会为接口自动的创建一个代理对象,代理对象去执行增删改查方法
            EmployeeDao mapper = openSession.getMapper(EmployeeDao.class);
            Employee employee = mapper.getEmpById(1);
            System.out.println(mapper.getClass());
            System.out.println(employee);
        } finally {
            openSession.close();
        }

    }

}

首先将公有的代码提取出来为单独的一个方法。

然后新加一个test01方法,并进行相关代码的编写,最后进行单元测试,在控制台输出:

说明基于接口编程是成功的。

总结:

(1)接口式编程

  • 原生: Dao ====> DaoImpl
  • mybatis: Mapper ====> xxMapper.xml

(2)SqlSession代表和数据库的一次会话;用完必须关闭;
(3)SqlSession和connection一样她都是非线程安全。每次使用都应该去获取新的对象。
(4)mapper接口没有实现类,但是mybatis会为这个接口生成一个代理对象。
(5)两个重要的配置文件:

  • mybatis的全局配置文件:包含数据库连接池信息,事务管理器信息等...系统运行环境信息
  • sqll映射文件

 

原文地址:https://www.cnblogs.com/xiximayou/p/12208887.html

时间: 2024-08-29 05:50:12

mybatis之第一个mybatis程序(二)的相关文章

mybatis 的第一个 HelloWorld 程序学习

1.准备工作: a.在 MYSQL 中新建一个 mybatis 数据库,并且创建一个 table,在这个表格中录入一条记录. 注:我使用的是 SQLyog,你们也可以使用命令行直接创建库和表. 2.在 eclipse 中创建一个 java 工程: - 创建一个名为 Employee 的 bean 类,并且在这个工程的路径下创建一个 lib 文件夹,用于存放需要的 jar 包. (需要的 jar 包为 mybatis-3.4.1.jar .mysql-connector-java-5.1.37-b

JavaSE学习 第一个java程序(二)

安装和配置好java环境后 1.新建一个后缀为java文档例如我们新建Hello.java 在文件中我们定义一个class public class Hello{     public static void main(String[] args){         System.out.println("Hello Java!");     } } 2.通过cmd的javac和java运行该程序 2.1.用javac编译新建的java文件 编译成功后会生成一个Hello.Class

避免老年痴呆,每日一个小程序(二)

接上篇,今天的小程序:编写程序detab,将输入中的制表符替换成适当数目的空白符(使空白充满到下一制表符停止位).假定制表符停止位的位置是固定的,比如在每个n列的位置上.n应为变量或符号参数吗?--为避免空格与tab显示难以区分,这里使用指定长度的‘*’号填充tab符号. #include <stdio.h> /*将输入的制表符替换为适当数量的‘*’ */ #define N 4 //制表符的停止位 #define MAXLENGTH 1000 //输入行最大长度 int getLine(ch

第一个MyBatis程序(博客初写者)

第一个Mybatis程序 一.环境: 1.JDK1.8 2.MYSQL5.7 3.IDEA 4.MAVEN 3.63 二.Mybatis认识: 1.查看官方文档 https://mybatis.org/mybatis-3/zh/index.html 2.查看百度百科 https://baike.so.com/doc/5582692-5795562.html MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设

第一个MyBatis程序

最近研究了一些MyBatis技术,虽然工作中还未用到,但是觉得了解一下也是不错的.这里记录了第一个简单的Demo程序,防止自己忘记. 第一步需要配置Mybatis-config.xml文件.注意:这里使用了2种方式对实体类进行了映射.在<Mapper>中,第一个User对象用XMl格式进行映射,第二个Category用注解CategoryMappper格式进行映射. <?xml version="1.0" encoding="UTF-8"?>

【Mybatis】Mybatis入门概述及第一个Mybatis实例实现增删改查

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 一.简介 1.什么是MyBatis MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索.MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录.(类似

Mybatis_reveiw之Mybatis官方的一个很简单的Demo

上学的时候,一个老师讲了个故事,这个故事的大意是,我们有很多种方式去削苹果,第一种方式,使用指甲刀,第二种方式,使用机床,第三种方式,使用手摇的那种削平果小工具.我们当然都能够完成这个简单的需求,但是使用指甲刀削出来的苹果一定比较坑坑洼洼,不够美观,而且可能会让人感觉到有点没啥食欲.使用机床呢?可能会造成大量的浪费,原本一个美观大方的苹果变成了只能啃几口的正方形.第三个,因为是专门为了削苹果皮而设计的,理论上是最合适用来解决削苹果这个问题的解决方案. 一个好的架构,其实要做的事情是非常简单的,除

攻城狮在路上(壹) Hibernate(二)--- 第一个hibernate程序

1.直接通过JDBC API持久化实体域对象: A.java.sql常用接口和类: DriverManager:驱动程序管理器,负责创建数据库连接. Connection:代表数据库连接. Statement:负责执行SQL语句. PreparedStatement:负责执行SQL语句,具有预定义SQL语句的功能. ResultSet:代码SQL查询语句的查询结果集. 2.常用的ORM中间件: Hibernate\Mybatis\Toplink\Torque\ObjectRelationBrid

基于Maven + SSM (Spring、SpringMVC、Mybatis)构建一个简单的测试项目

最近在公司实习期间的培训交流中有机会接触到SSM,然后自己花费1周的时间投入学习.谈不上深刻理解其中原理,所以没有涉及理论知识,只是浅层次的学习如何使用,在此将学习过程记录整理出来,一方面自己备用:另一方面,分享出来和做技术的各位讨论交流. 现阶段的我还做不到知行合一,所以决定先学会用,然后再去深究原理.若有不足以及错误之处,望多多包涵.指教,谢谢. 废话不多说,直接开干! 1.开发环境搭建 推荐博客地址: MyEclipse+Tomcat+MAVEN+SVN项目完整环境搭建 2.Maven W