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

早期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();

 1   private static SqlSessionFactory getSqlSessionFactory(){
 2       //1、配置资源文件
 3       String source = "mybatis.xml";
 4       //2、设置输入流
 5       InputStream iS = null;
 6       //3、创建会话工厂
 7       SqlSessionFactory sqlSessionFactory = null;
 8       try {
 9             //4、将配置文件以流的方式读入
10             iS = Resources.getResourceAsStream(source);
11             //5、根据配置文件创建会话工场
12            sqlSessionFactory = new SqlSessionFactoryBuilder().build(iS);
13            return sqlSessionFactory;
14              } catch (IOException e) {
15               // TODO Auto-generated catch block
16                e.printStackTrace();
17             }
18       return null;
19 }
20 public static void test01(){
21     SqlSessionFactory sqlSessionFactory = null;
22     SqlSession sqlSession = null;
23     //获取会话工厂
24     sqlSessionFactory = getSqlSessionFactory();
25     if(sqlSessionFactory!=null){
26         //6、由会话工程创建会话
27         sqlSession = sqlSessionFactory.openSession();
28         //7、由会话执行sql
29        Employee employee = sqlSession.selectOne("com.cn.mybatis.mapper.EmployeeMapper.selectEmployeeById",1);
30        System.out.println(employee);
31        System.out.println("==============标准割==============");
32        List<Employee> listEmployee = sqlSession.selectList("com.cn.mybatis.mapper.EmployeeMapper.selectAllEmployee",Employee.class);
33         //    System.out.println(listEmployee);
34         for(Employee emp : listEmployee){
35                 System.out.println(employee);
36           }           //sqlSession.selectList("com.cn.mybatis.mapper.EmployeeMapper.selectAllEmployee", rowBounds)
37          sqlSession.close(); 
38    }
39 }

早期版本的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操作。
                接口方式由于直接调用方法,因此可以对参数进行检验验证。

时间: 2024-10-24 12:26:46

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

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

摘自:https://www.cnblogs.com/yichunguo/p/11990961.html 目录 咳咳...初学者看文字(Mapper接口开发四个规范)属实有点费劲,博主我就废了点劲做了如下图,方便理解: 原始Dao开发方式 1. 编写映射文件 3.编写Dao实现类 4.编写Dao测试 Mapper动态代理方式 1.定义Mapper.xml(映射文件) 2.编写UserMapper.xml配置文件内容: 3.编写UserMapper(接口文件) 4.加载UserMapper.xml

MVC接口式开发 封装统一请求方法

由于公司需要用到接口式开发,所以所以业务逻辑都写在webapi ,web端主要做调用,为了使开发方便,特此封装出统一请求的方法,页面调用只需写接口地址就行,话不多说,直接上代码. 1 public class ProxyHandlerController : BaseController 2 { 3 // 4 // GET: /ProxyHandler/ 5 public ActionResult ProcessRequest() 6 { 7 try 8 { 9 var Request = Ht

MyBatis接口式编程

代码清单及总结 接口 /** * 这是一个接口 * @author guozhenZhao * @date 2018年7月16日 */ public interface EmployeeMapper { public Employee getEmployeeById(Integer id); } 全局配置文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC

Baseline Testing 开源(基于Python插件式结构开发)

[其他]入职37.com后写的一个东西,为了检查下服务器的一些安全配置.数量太多,手工不靠谱. [OSCHINA开源社区地址]http://www.oschina.net/p/baseline-testing 基于Linux的配置检查工具,采用插件式结构开发.开发语言使用的是python.开发者可以通过自行开发插件来扩展该工具,灵活性高.开发该工具的主要目的是因为刚入职,需要对几百台服务器进行检查.有需要的朋友可以对其进行插件扩展.在使用的过程当中,可以自己配置FTP,目前支持将结果上传到FTP

用户需求驱动式的开发方法

引言:开发者应该如何处理研发中的需求?在快速迭代的开发过程应该分为哪几个阶段?在一个快节奏的开发过程中,如何建立一个质量保障体系?七牛CEO许式伟在MDCC上的讲座<用户需求驱动式的开发方法>分享了他在开发过程中的一些心得. 许式伟:大家好,先自我介绍一下,我叫许式伟,刚才主持人大概也介绍了一下,最早在金山做WPS Office ,2007年在金山实验室主要做存储相关的技术研究,2008年底加入了百度做网页搜索,2009年.2011年在盛大做存储相关的,2007年到现在在七牛,这是整个的经历.

产品-项目型适配式系统开发之理念和设计

一.背景 在系统开发过程中,尤其是涉及到系统集成性软件开发过程中,我们经常会碰到类似这样的场景:团队中已经有一个产品化的软件系统,但该软件系统需要按照项目型进行实施,而每个项目由于面向不同客户在某一些产品组件上可能都会有其一定的独特性.这些特定的产品组件往往涉及到系统集成,由于集成技术和方案的不同而需要进行二次开发,如下图所示: 从上面的组件图中我们可以看到在产品系统中,部分产品组件(图中为产品组件A和B)的运行将依赖于系统集成组件,而系统集成组件的实现将视项目而定,图中的项目实现1.2和3分别

2、SpringBoot接口Http协议开发实战8节课(1-5)

1.SpringBoot2.xHTTP请求配置讲解 简介:SpringBoot2.xHTTP请求注解讲解和简化注解配置技巧 1.@RestController and @RequestMapping是springMVC的注解,不是springboot特有的 2.@RestController = @[email protected] 3.@SpringBootApplication = @[email protected][email protected] localhost:8080 Demo

前端全栈架构,组件式开发,响应式开发,全栈工程师架构,用户界面架构,企业级架构项目实战

我本是一名文科专业半路出家的前端开发人员,从最初只会切图和写CSS.Html到现在会写点JS,一路坑坑洼洼,也是经历了很多,从2010年开始就用WordPress开设了自己的博客,虽然内容零零散散的并不多,但是多多少少也留下了时光的缩影,一直希望自己有一个自留地.用Node.js做服务端替换WordPress是去年的一个想法,由于一直腾不出时间,所以拖到了现在.当然了WordPress作为全球用户量最广的开源博客程序,易用性等诸多好处无可厚非,光自己的博客在过去几年就用了很多套模板,也用它做过很

微信公众帐号开发教程第3篇-开发模式启用及接口配置

编辑模式与开发模式 微信公众帐号申请成功后,要想接收处理用户的请求,就必须要在"高级功能"里进行配置,点击"高级功能",将看到如下界面: 从上图中可以看到,高级功能包含两种模式:编辑模式和开发模式,并且这两种模式是互斥关系,即两种模式不能同时开启.那两种模式有什么区别呢?作为开发人员到底要开启哪一种呢?编辑模式:主要针对非编程人员及信息发布类公众帐号使用.开启该模式后,可以方便地通过界面配置"自定义菜单"和"自动回复的消息".