MyBatis-搭建MyBatis开发环境二(MyEclipse版)

原创 2016年05月30日 12:58:22

上一篇文章讲了如何搭建MyBatis开发环境,这篇主要补充下相关代码优化。
上一篇:MyBatis-搭建MyBatis开发环境一(MyEclipse版)

1、使用别名简化类路径配置

这里写图片描述

上一篇文章里这里我们使用的是类的完全包路径+类名类指定实体类类型,我们可以在mybatis-config.xml中配置别名来简化配置。

这里写图片描述

在mybatis-config.xml文件中添加如上配置,配置方式有俩种:
1、<typeAlias alias="Emp" type="com.bc.pojo.Emp"/>表示给指定类配置别名,别名为Emp。
2、<package name="com.bc.pojo"/>表示给指定包下所有类配置别名,别名为类名,比如在com.bc.pojo包下有Emp和Dept俩个实体类,那么别名就分别为Emp和Dept。

这样在EmpMapper.xml文件中,如下配置就可以使用别名来简化代码编写
这里写图片描述


2、SqlSessionFactory相关代码提取

这里写图片描述

如上代码所示,在上一篇文章中,我们每次写一个方法都要重复写入以上红框框内内容来获取SqlSession,实际上,对于SqlSessionFactory在程序中我们只需要创建一次,创建一个实例就够了,此时我们可以创建一个类将这些代码提取出来

public class MyBatisUtil {
    /**静态SqlSessionFactory对象,表示只有一个*/
    private static SqlSessionFactory factory;

    /**使用静态代码块初始化SqlSessionFactory*/
    static {
        try {
            InputStream is = Resources
                    .getResourceAsStream("mybatis-config.xml");
            factory = new SqlSessionFactoryBuilder().build(is);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**创建会话SqlSession*/
    public static SqlSession createSqlSession() {
        return factory.openSession();
    }

    /**关闭指定SqlSession会话*/
    public static void closeSqlSession(SqlSession sqlSession) {
        if(sqlSession != null)
            sqlSession.close();
    }
}

这样我们测试类代码就可以改为

public class EmpTest {

    private Logger logger = Logger.getLogger(OldEmpTest.class);

    @Test
    /**添加Emp测试*/
    public void addEmpTest() {
        SqlSession sqlSession = null;
        //要插入的Emp对象
        Emp emp = new Emp();
        emp.setEname("测试");
        emp.setDeptno(1);

        try {
            sqlSession = MyBatisUtil.createSqlSession();
            sqlSession.insert("com.bc.dao.EmpMapper.addEmp", emp);
            //5 提交事务
            sqlSession.commit();
        } catch (Exception e) {
            e.printStackTrace();
            //出现异常回滚事务
            sqlSession.rollback();
        } finally {
            //关闭会话
            MyBatisUtil.closeSqlSession(sqlSession);
        }
    }

    /**更新Emp测试*/
    public void updateEmpTest() {
        SqlSession sqlSession = null;
        //要更新的Emp对象
        Emp emp = new Emp();
        emp.setEmpno(65);
        emp.setEname("更新测试");

        try {
            sqlSession = MyBatisUtil.createSqlSession();
            sqlSession.update("com.bc.dao.EmpMapper.updateEmp", emp);
            //5 提交事务
            sqlSession.commit();
        } catch (Exception e) {
            e.printStackTrace();
            //出现异常回滚事务
            sqlSession.rollback();
        } finally {
            //关闭会话
            MyBatisUtil.closeSqlSession(sqlSession);
        }
    }

    /**查询Emp测试*/
    public void getEmpListTest() {
        SqlSession sqlSession = null;
        //查询结果集
        List<Emp> empList = new  ArrayList<>();

        try {
            sqlSession = MyBatisUtil.createSqlSession();
            empList = sqlSession.selectList("com.bc.dao.EmpMapper.getEmpList");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //关闭会话
            MyBatisUtil.closeSqlSession(sqlSession);
        }

        //遍历数据
        for (Emp emp : empList) {
            logger.debug(emp.getEname());
        }
    }

    /**删除Emp测试*/
    public void deleteEmpTest() {
        SqlSession sqlSession = null;
        //要删除的Emp对象
        Emp emp = new Emp();
        emp.setEmpno(65);

        try {
            sqlSession = MyBatisUtil.createSqlSession();
            sqlSession.delete("com.bc.dao.EmpMapper.deleteEmp", emp);
            //5 提交事务
            sqlSession.commit();
        } catch (Exception e) {
            e.printStackTrace();
            //出现异常回滚事务
            sqlSession.rollback();
        } finally {
            //关闭会话
            MyBatisUtil.closeSqlSession(sqlSession);
        }
    }
}

3、使用接口和getMapper简化调用方法代码

这里写图片描述

从以上代码的红红框处可以看到我们之前调用方法是从Mapper配置文件中调用,这种写法容易写错,我们可以使用接口的方式来优化这段代码。

这里写图片描述

如上图所示,我们新建一个接口,接口取名与xml保持一致,接口内方法名与xml内配置的方法名保持一致。

这里写图片描述

这样我们就配置好了接口,接下来我们就可以在代码中使用getMapper方法来调用我们配置好的方法。

测试类代码

public class EmpTest {

    private Logger logger = Logger.getLogger(OldEmpTest1.class);

    @Test
    /**添加Emp测试*/
    public void addEmpTest() {
        SqlSession sqlSession = null;
        //要插入的Emp对象
        Emp emp = new Emp();
        emp.setEname("测试");
        emp.setDeptno(1);

        try {
            sqlSession = MyBatisUtil.createSqlSession();
            //调用getMapper传入接口类型获取接口内方法
            sqlSession.getMapper(EmpMapper.class).addEmp(emp);
            //5 提交事务
            sqlSession.commit();
        } catch (Exception e) {
            e.printStackTrace();
            //出现异常回滚事务
            sqlSession.rollback();
        } finally {
            //关闭会话
            MyBatisUtil.closeSqlSession(sqlSession);
        }
    }

    /**更新Emp测试*/
    public void updateEmpTest() {
        SqlSession sqlSession = null;
        //要更新的Emp对象
        Emp emp = new Emp();
        emp.setEmpno(65);
        emp.setEname("更新测试");

        try {
            sqlSession = MyBatisUtil.createSqlSession();
            sqlSession.getMapper(EmpMapper.class).updateEmp(emp);
            //5 提交事务
            sqlSession.commit();
        } catch (Exception e) {
            e.printStackTrace();
            //出现异常回滚事务
            sqlSession.rollback();
        } finally {
            //关闭会话
            MyBatisUtil.closeSqlSession(sqlSession);
        }
    }

    /**查询Emp测试*/
    public void getEmpListTest() {
        SqlSession sqlSession = null;
        //查询结果集
        List<Emp> empList = new  ArrayList<>();

        try {
            sqlSession = MyBatisUtil.createSqlSession();
            empList = sqlSession.getMapper(EmpMapper.class).getEmpList();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //关闭会话
            MyBatisUtil.closeSqlSession(sqlSession);
        }

        //遍历数据
        for (Emp emp : empList) {
            logger.debug(emp.getEname());
        }
    }

    /**删除Emp测试*/
    public void deleteEmpTest() {
        SqlSession sqlSession = null;
        //要删除的Emp对象
        Emp emp = new Emp();
        emp.setEmpno(65);

        try {
            sqlSession = MyBatisUtil.createSqlSession();
            sqlSession.getMapper(EmpMapper.class).deleteEmp(emp);
            //5 提交事务
            sqlSession.commit();
        } catch (Exception e) {
            e.printStackTrace();
            //出现异常回滚事务
            sqlSession.rollback();
        } finally {
            //关闭会话
            MyBatisUtil.closeSqlSession(sqlSession);
        }
    }
}

这里写图片描述

版权声明:本文为博主原创文章,转载请注明出处。

Myeclipse中Mybatis Generator自动创建代码总结

声明:本文针对基础薄弱的小菜鸟编写,大神勿喷。 今天为了学习mybatis自动生成代码,折腾了两个小时,总算解决了,为此记录下来,希望大家日后少走弯路: mybatis-generator的使用方法常...
  • pengyufight
  • pengyufight
  • 2016年08月24日 15:23
  • 2811

MyBatis-搭建MyBatis开发环境一(MyEclipse版)

一、引入MyBatis及其相关jar包  1、mybatis-3.2.2.jar:mybatis的jar包  2、mysql-connector-java-5.1.0-bin.jar:MySQL数据库...
  • u013050731
  • u013050731
  • 2016年08月26日 15:15
  • 1284

MyBatis-搭建MyBatis开发环境一(MyEclipse版)

一、引入MyBatis及其相关jar包 1、mybatis-3.2.2.jar:mybatis的jar包 2、mysql-connector-java-5.1.0-bin.jar:MySQL数据库...
  • qq_32588349
  • qq_32588349
  • 2016年05月30日 09:52
  • 6513

myeclipse2014搭建springMVC+Mybatis+多数据源环境

1.新建web工程 2.添加spring支持 勾上spring persistence 3.配置文件新建源文件夹 applicationContext.xml移动到config...
  • steve_frank
  • steve_frank
  • 2015年09月28日 18:04
  • 2415

【MyBatis】3:MyBatis环境搭建及入门程序示例

MyBatis开发环境搭建:     1 创建Java Project         使用什么IDE无所谓,eclipse、myeclipse、idea等等都可以,jdk版本好像也没什么限制,只是...
  • u010929604
  • u010929604
  • 2016年07月30日 16:54
  • 1558

MyBatis-搭建MyBatis开发环境二(MyEclipse版)

上一篇文章讲了如何搭建MyBatis开发环境,这篇主要补充下相关代码优化。 上一篇:MyBatis-搭建MyBatis开发环境一(MyEclipse版)1、使用别名简化类路径配置上一篇文章里这里我们...
  • qq_32588349
  • qq_32588349
  • 2016年05月30日 12:58
  • 1598

mybatis自动生成myeclipse插件

  • 2017年11月23日 11:24
  • 2.76MB
  • 下载

MyBatis-搭建MyBatis开发环境一(MyEclipse版)

  • 2016年08月26日 15:25
  • 10KB
  • 下载

Myeclipse下搭建Spring Boot+Mybatis

1.进入命令行,切换到目标文件夹下,注意:此步不用创建项目的文件夹。2. 在命令行输入:mvn  archetype:generate  -DgroupId=公司名或公司域名  -DartifactI...
  • woai671
  • woai671
  • 2018年01月18日 11:40
  • 99

MyEclipse SSM(Spring+SpringMVC+MyBatis)框架搭建

1、maven引入需要使用的jar pom.xml 4.0.2.RELEASE 3.2.6 ...
  • hanwenyi520
  • hanwenyi520
  • 2016年07月04日 11:21
  • 4037
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MyBatis-搭建MyBatis开发环境二(MyEclipse版)
举报原因:
原因补充:

(最多只允许输入30个字)