码迷,mamicode.com
首页 > 其他好文 > 详细

MyBatis(一) —— 环境搭建

时间:2019-06-11 22:05:32      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:result   list   实现   方式   print   app   rac   ora   uil   

一 什么是 MyBatis?

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。(官方解释)

二 为什么使用MyBatis?

1. MyBatis简单实用

   MyBatis使用难度相对简单,仅仅需要导入jar包,配置Config的xml文件,以及实现mapper映射文件的编写,就可以使用。

2. MyBatis简化了JDBC代码的实现

   在Web开发中,大量冗余复杂的持久层方法的实现大大提高了编程时的工作量,采用MyBatis时仅仅需要使用编写dao接口方法,已经在Mapper.XML中配置编写SQL语句即可

3. MyBatis实现了数据持久层的松耦合

   MyBatis中,第二点减少代码开发倒并非重要,因为C3P0等线程池的使用,已经足够降低代码量了,而框架的使用重点在于第三点,实现了数据持久层与业务层的分离,我们可以在不改变Java代码的前提下,对持久层的很多东西进行改变,至于那些东西可以改变,即不需要改动dao层的所有持久层操作都可以改变。如: environment(MySQL,Oracle)的切换,SQL语句的改写(表明,操作等,但是不可以修改参数,返回值等dao层固定的内容,如果修改则需要修改dao)等。。。

三 MyBatis的环境配置

1.Jar包的使用

技术图片

 Jar包主要分为四类(由于直接导入的是新版本,所以有些包不认识,也没用到)

  必须使用的包是:

  动态代理的jar包:asm,cglib,javassist等    

  日志包:log4j相关 commons-logging包

   mybatis核心包:mybatis包

   sql连接包:mysql-connector- java

2.MyBatis配置文件

 (1)MyBatis配置文件没有固定位置,因为会使用流的形式手动读取该XML文件,所以不固定位置,不过建议放在src目录下,另外同理配置文件名同样不需要固定。

 (2)DTD的使用,DTD本身只是一种语法规则检测器,用于检测你的语法是否合理,以及为你做一些语法补充,这是必要的,无论是Config文件还是mapper文件都是必要的,至于怎么添加

   http://www.mybatis.org/mybatis-3/zh/index.html 在中文官方网页中有示例,直接复制就好,不过config应该复制config的,mapper复制mapper的,两者语法不通

   配置文件DTD:

<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

映射文件DTD:

<!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
(3)文件的配置

技术图片

所有配置都放在configuration中

必须具备的是:

(1)<environments></>:用于配置环境,内部每种环境都使用<environment></>来构成,至少有一个, default属性用于选择当前环境,不过我这里只有一个MySQL的环境,必须。

(2)<environment>中使用JDBC的方式配置属性,不过每种属性的名称早已定义好,且必须使用driver,url,username,password。value值可以直接手动输入,不过我使用的是使用properties文件来松耦合,

使用properties的话,需要使用<properties>标签,声明properties文件位置。

(3)<setting>用于设置Mybatis的相关配置,不过开始不需要使用,不是必须。

(4)<mappers>标签,内部使用<mapper>标签来声明映射文件的位置,确保能够找到,不是必须,但是如果要使用映射文件,必须。  

3.在Java中使用MyBaties

技术图片

这里是一个封装工具类,用于完成一个SqlSession的创建

而SqlSession的实例就是我们SQL语句的执行者

创建步骤为:

(1)使用Resources的getResourceAsStream方法将配置文件读取成Input流,注意的是,这里的Resources应该是ibaties的类

(2)使用SqlSessionFactoryBuilder来创建SqlSession工厂,此处使用工厂模式,不懂自行百度。

(3)再使用工程,执行openSession方法来创建SqlSession,这里就得到了我们想要的sql执行者

(4)另外,由于流的产生,所以需要异常处理,且工具包的使用,不建议讲异常抛出(题外话)

(5)由于SqlSession是一个重型资源,所以不建议使用单例模式一直保存一个SqlSession,且在每次使用结束后建议关闭sqlSession

四 映射文件的配置与使用

1.映射文件的配置

技术图片

(1)映射文件可以单独完成数据持久层操作,不需要dao与daoImpl的实现就可以完成操作,但是使用不便以及可读性差等原因不在spring中使用,不过这里就当个例子。

(2)映射文件可以看做一个类,mapper中的namespace(命名空间)可以看做一个类的完整路径,前者代表包usermapper看做类名,每一个select或则update等操作都可以看做是一个方法,id是方法名,parameterType则是参数值(不过值得注意的时,再不使用dao的情况下,仅仅只能使用一个参数【object】或则基本类型,多个参数是则使用map存放),resultType则代表返回值类型。

(3)update,insert以及delete等操作,返回值为01的boolean星,不需要定义,但是select必须定义返回值,另外,如果返回值为一个list时,并不是返回一个list,因为mysql查询依旧是指针一样逐条查询,所以返回bean类型就好了。

(4)在标签内部完成SQL语句的编写,对于未知值则可以使用#{}或则${}代替,内部名称,可以是bean类的属性名,可以是,map的key值,可以是@Param定义的变量值,也可以是0等值,根据你传参内容不定,不过${}使用的是拼接sql语句的方式,不建议使用,而#{}使用的是preperedStatement的方式预编译,具有安全性。

2.SqlSession的使用

技术图片

(1)delete,insert,update不用多说,直接调用就好,第一个参数为上文中namespace(包+类)+id(方法名),第二个参数为传入的参数,有且只有一个。不过MyBatis对于SQL命令是以事务的方式存在的,这三步操作,由于牵涉到数据的变更,所以需要手动调用commit方法提交,而查询不需要。

(2)select操作分为select,selectList,selectMap,这就不用多说了,返回结果不同,select仅仅只能返回一条(一个对象),而list,map则可以返回多条。

(3)list时,需要的resultType必须是bean类,但是map既可以是bean类,也可以是map类型

 

 

 

 

  



 

MyBatis(一) —— 环境搭建

标签:result   list   实现   方式   print   app   rac   ora   uil   

原文地址:https://www.cnblogs.com/qqwhsj/p/11006389.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!