早期MyBatis开发与接口式Mybatis开发的简介

一、早期版本的myBatis使用

导jar包
            1、配置mybatis.xml的配置文件
                1)、需要加载数据库配置文档

    <properties resource="db.properties" />

2)、配置数据源,数据库连接池、处理事务方式

 <environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<!-- 链接数据库 的数据池 -->
<dataSource type="POOLED">
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="url" value="${jdbc.url}" />
<property name="driver" value="${jdbc.driver}" />
</dataSource>
</environment>
</environments>

3)、配置映射文件 即xml中配置的sql语句文件 文件位置需要使用/ 不能使用 .

 <mapper url="file:///var/mappers/AuthorMapper.xml"/>
<mapper resource="org/mybatis/builder/PostMapper.xml"/>
<mappers>
<mapper resource="com/da/wei/mapper.xml"/>
</mappers>

2、配置映射mapper.xml

  <mapper namespace="com.cn.mybatis.mapper.EmployeeMapper">
<!-- 命名空间使用将要映射执行方法的接口文件 在此处,原始的方法中,命名空间的作用并不明显-->
<!-- 查询所以字段信息 -->
<select id="selectAllEmployee" resultType="com.cn.mybatis.entity.Employee">
SELECT emp_id AS empId,emp_name AS empName,emp_gender AS empGender,emp_email AS empEmail FROM employee
</select>
<!-- 通过id号查询员工信息 -->
<select id="selectEmployeeById" resultType="com.cn.mybatis.entity.Employee" parameterType="java.lang.Integer">
SELECT emp_id AS empId,emp_name AS empName,emp_gender AS empGender,emp_email AS empEmail
FROM employee WHERE emp_id = #{empId}
</select>
</mapper>

   3、执行sql操作
                执行步骤:
                    1、配置资源文件
                    2、设置输入流
                    3、通过输入流创建会话工厂
                         new SqlSessionFactoryBuilder().build(iS);
                    4、通过会话工厂创建会话
                        sqlSessionFactory.openSession();
                    5、通过会话执行sql
                        sqlSession.selectOne("com.cn.mybatis.mapper.EmployeeMapper.selectEmployeeById",1);
                        其中第一个参数是映射过去的参数,即需要执行的方法体的全限定名
                        第二个是参数,需要与设置的值类型(方法体的参数类型统一)
                        这里可以直接强转到想获得的类型,默认为Object                       
                        sqlSession.selectList("com.cn.mybatis.mapper.EmployeeMapper.selectAllEmployee",Employee.class);
                        这里查询返回list 可以通过使用类类型设置返回值的类型,可是不能使用参数

              6、关闭会话
                  sqlSession.close();

   private static SqlSessionFactory getSqlSessionFactory(){
//1、配置资源文件
String source = "mybatis.xml";
//2、设置输入流
InputStream iS = null;
//3、创建会话工厂
SqlSessionFactory sqlSessionFactory = null;
try {
//4、将配置文件以流的方式读入
iS = Resources.getResourceAsStream(source);
//5、根据配置文件创建会话工场
sqlSessionFactory = new SqlSessionFactoryBuilder().build(iS);
return sqlSessionFactory;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public static void test01(){
SqlSessionFactory sqlSessionFactory = null;
SqlSession sqlSession = null;
//获取会话工厂
sqlSessionFactory = getSqlSessionFactory();
if(sqlSessionFactory!=null){
//6、由会话工程创建会话
sqlSession = sqlSessionFactory.openSession();
//7、由会话执行sql
Employee employee = sqlSession.selectOne("com.cn.mybatis.mapper.EmployeeMapper.selectEmployeeById",1);
System.out.println(employee);
System.out.println("==============标准割==============");
List<Employee> listEmployee = sqlSession.selectList("com.cn.mybatis.mapper.EmployeeMapper.selectAllEmployee",Employee.class);
// System.out.println(listEmployee);
for(Employee emp : listEmployee){
System.out.println(employee);
} //sqlSession.selectList("com.cn.mybatis.mapper.EmployeeMapper.selectAllEmployee", rowBounds)
sqlSession.close(); 
}
}

早期版本的myBatis其执行的过程为,    
            1、在使用时,通过引用资源mybatis.xml,创建会话工厂
            2、业务执行时,加载mybatis的配置文件
                在mybatis中加载数据库的配置文件db.properties文件,进行数据库数据源配置,同时进行数据连接池,数据库事务管理的配置。
            3、在mybatis中加载sql映射文件mapper.xml
            4、会话工厂创建会话,通过创建出来的会话进行功能调用
                调用时,其中的statement参数需要执行,执行方法的全限定名。
            5、使用过后进行会话的关闭。

二、接口式版本开发

   接口版本配置基本一致

    1、mybatis.xml配置
                其中映射使用的mapper.xml需要指定到对应的包下
            2、mapper.xml配置
                按照开发规范,这里需要将mapper的名字配置与接口方法同名且在同一包下。
                    且命名空间此时用有效需要设置,其值是对应的mapper.xml的接口文件全限定名。
            3、使用

      在调用时不再是以前的那种statement的配置方式了
                通过创建出来的会话,通过获取映射的方式,获取mapper方法接口的代理对象,使用其代理对象进行方法体的直接调用
                //由会话工程创建会话
                sqlSession = sqlSessionFactory.openSession();
                //通过会话获取方法->代理对象
                EmployeeMapper employeeMapper = sqlSession.getMapper(com.cn.mybatis.mapper.EmployeeMapper.class);
                List<Employee> listEmployee = employeeMapper.selectAllEmployee();
                Employee employee = employeeMapper.selectEmployeeById(4);

以上两种方式的比较:

  1、接口方式的sql语句mapper.xml的需要按照规范,与接口方法放在同包下,且保持同名。
                    早期方法只需要在mybatis下指定对应的地址即可
                接口的方式更加规范和易读,可以提高开发效率。    
            2、接口方法在调用时,接口采用通过会话工厂创建代理对象的方式,使用代理对象调用接口中的方法使之实现。
                    早期方法使用会话直接使用,使用会话的方法指定对应的statement(方法的全限定名)进行sql操作。
                接口方式由于直接调用方法,因此可以对参数进行检验验证。

早期MyBatis开发与接口式Mybatis开发的简介的更多相关文章

  1. 通过自动回复机器人学Mybatis 笔记:接口式编程

    [接口式编程]尚未遇见Spring --> 代码量反而增加 1.增加约定,减少犯错的可能(不用直接去写字符串 修改点1:命名空间 修改点2:增加接口,方法名与配置文件中的id对应 package ...

  2. 通过自动回复机器人学Mybatis笔记:接口式编程

    [接口式编程]尚未遇见Spring --> 代码量反而增加 1.增加约定,减少犯错的可能(不用直接去写字符串 修改点1:命名空间 修改点2:增加接口,方法名与配置文件中的id对应 package ...

  3. MyBatis的接口式编程Demo

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

  4. 《PHP开发APP接口》笔记

    PHP开发APP接口 [TOC] 课程地址 imooc PHP开发APP接口 学习要点 APP接口简介 封装通信接口方法 核心技术 APP接口实例 服务器端 -> 数据库|缓存 -> 调用 ...

  5. spring和mybatis的整合开发(基于MapperScannerConfigurer的整合开发(适用于复杂项目,接口较多的情况))

    在实际项目中,Dao层会包含很多接口,这样会导致spring配置文件过于臃肿.这时就需要采用扫描包的形式来配置mybaits中的映射器. 采用MapperScannerConfigurer来实现. M ...

  6. spring和mybatis的整合开发(基于MapperFactoryBean的整合开发(方便简单不复杂))

    MapperFactoryBean是mybati-spring团队提供的一个用于根据mapper接口生成mapper对象的类. 在spring配置文件中可以配置以下参数: 1.mapperInterf ...

  7. mybatis学习(三)——接口式编程

    对于上一节中的查询我们还可以通过接口的方式进行编程,开发环境和上一节一样 1.全局配置文件mybatis_config.xml(和上一节一样) <?xml version="1.0&q ...

  8. MyBatis开发Dao的原始Dao开发和Mapper动态代理开发

    目录 咳咳...初学者看文字(Mapper接口开发四个规范)属实有点费劲,博主我就废了点劲做了如下图,方便理解: 原始Dao开发方式 1. 编写映射文件 3.编写Dao实现类 4.编写Dao测试 Ma ...

  9. SSM框架之Mybatis(3)dao层开发

    Mybatis(3)dao层开发 以实现类完成CRUD操作 1.持久层dao层接口的书写 src\main\java\dao\IUserDao.java package dao; import dom ...

随机推荐

  1. if __name__ == '__main__' 如何正确理解

    今天有个初学Python 的朋友问我这个问题,他说在网上好多回答他都不太理解.所以这里我来做说一下,希望能把这个问题说明白. 先举一个例子:假设我们有一个add.py文件,里面的代码是这样: def ...

  2. json-server mock数据

    前言: 项目开发中,影响项目进程的常常是由于在前后端数据交互的开发流程中停滞,前端完成静态页面的开发后,后端迟迟未给到接口.而现在,我们就可以通过根据后端接口字段,建立一个REST风格的API接口,进 ...

  3. 全面理解SSD和NAND Flash

    Flash Memory又叫做闪存,是一种非易失性存储器.非易失性是指断电之后数据不会丢失,这里就涉及到断电保护(后面详细讲解). 总体思路 1.NAND Flash的用途. 2.NAND Flash ...

  4. spring 的单例模式

    singleton---单例模式 单例模式,在spring 中其实是scope(作用范围)参数的缺省设定值每个bean定义只生成一个对象实例,每次getBean请求获得的都是此实例 单例模式分为饿汉模 ...

  5. business meeting

    Metting are all about discussions . discussion expression 开始会议 Let's get started We need to discuss. ...

  6. UESTC 30 &&HDU 2544最短路【Floyd求解裸题】

    最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  7. App 组件化/模块化之路——Android 框架组件(Android Architecture Components)使用指南

    面对越来越复杂的 App 需求,Google 官方发布了Android 框架组件库(Android Architecture Components ).为开发者更好的开发 App 提供了非常好的样本. ...

  8. 实现wpf的值转换器

    从数据库取出来的数据是1,2,3,4,5,不过要显示在控件上的,是1,2,3,4,5对应的string值,怎么办?wpf提供了很好的实现方法,那就是值转换器,我们需要做的是: 1.定义值转换类,继承I ...

  9. win10*64+vs2015+opencv3.0工程模板配置

    参考网上的资料,自己再次整合一下,为新手提供个方便,也为自己备份. 一.下载安装opencv3.0 1.首先下载opencv3.0的包(windows版本的) 2.安装opencv,路径自己选好,自动 ...

  10. java实现网页爬虫

    接着上面一篇对爬虫需要的java知识,这一篇目的就是在于网页爬虫的实现,对数据的获取,以便分析. -----> 目录:   1.爬虫原理 2.本地文件数据提取及分析 3.单网页数据的读取 4.运 ...