`

mybatis入门

 
阅读更多
一、 介绍

MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java POJOsPlain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

二、 环境搭建

mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包。这些软件工具均可以到各自的官方网站上下载。

下载:http://mybatis.github.io/

1. 新建web工程

New  -  dynamic web project  - mybatis

2. 添加mybatis   jar

添加mybatis包和mysql数据jar

3. 配置mybatis配置文件

classpath下新建:Configuration.xml

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

 

节点介绍

properties —— 定义配置外在化

settings —— 一些全局性的配置

typeAliases ——定义类别名,简化xml文件的配置

typeHandlers —— 定义类型处理,也就是定义java类型与数据库中的数据类型之间的转换关系

objectFactory

plugins —— Mybatis的插件,插件可以修改Mybatis内部的运行规则

environments —— 配置Mybatis的环境 

environment 

transactionManager —— 事务管理器

事务:JDBC/MANAGER

 

 

dataSource —— 数据源

TYPE: POOLED|UNPOOLED|JNDI

POOL:

UNPOOLED:

JNDI:

 

databaseIdProvider

mappers —— 指定映射文件或映射类配置映射文件

  <mappers>

<mapper>映射文件的路径</mapper>

< /mappers>

 

4. 配置映射文件

在映射的类路径下:

New 类名-Mapper.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:类的全限定名

cache – 配置给定模式的缓存

cache-ref – 从别的模式中引用一个缓存

resultMap – 这是最复杂而却强大的一个元素了,它描述如何从结果集中加载对象

sql – 一个可以被其他语句复用的SQL 

insert – 映射INSERT 语句

update – 映射UPDATE 语句

delete – 映射DELEETE 语句

select  -  映射SELECT语句

三、 实现CUDR

简单的增删改查

 

<insert id=add parameterType=UserEntity>

INSET INTO 表名 (字段1,字段2)values(

#{1},#{2})

</insert>

 

<update id=update parameterType=UserEntity>

UPDATE 表名 SET 字段名1#{1},字段名2#{2}

WHERE id=#{}

</update>

<delete id=delete parameterType=int>

DELETE FROM 表名 WHERE id=#{id}

</delete>

<select  id=queryall resultType="UserEntity">

SELECT 要查询的字段名 FROM 表名

</selet>

四、 关联数据查询

 

五、 动态SQL语句

1. selectKey

2. if

3. if+where

4. if+set

5. if+trim

6. trim代替set

7. choose(when/otherwise)

8. foreach

 

 

六、 代码生成工具

七、 数据分页

<select id=page  resultType=UserEntity  paramterType=params>

SELECT 要查询的字段 FROM 表名 LIMIT #{pageNo},${pageSize}

</select>

Params:必须是maps

八、 cache缓存

MyBatis 包含一个强在的、可配置、可定制的缓存机制。MyBatis 3 的缓存实现有了许多改进,既强劲也更容易配置。默认的情况,缓存是没有开启,除了会话缓存以外,它可以提高性能,且能解决全局依赖。开启二级缓存,你只需要在SQL 映射文件中加入简单的一行:<cache/>

 

这句简单的语句的作用如下:

1. 所有在映射文件里的select 语句都将被缓存。

2. 所有在映射文件里insert,update delete 语句会清空缓存。

3. 缓存使用“最近很少使用”算法来回收

4. 缓存不会被设定的时间所清空。

5. 每个缓存可以存储1024 个列表或对象的引用(不管查询出来的结果是什么)。

6. 缓存将作为“读/写”缓存,意味着获取的对象不是共享的且对调用者是安全的。不会有其它的调用

7. 者或线程潜在修改。

九、 集成Spring

十、 MyBaties的优点与缺点

优点:

1. 易于上手和掌握。

2. sql写在xml里,便于统一管理和优化。

3. 解除sql与程序代码的耦合。

4. 提供映射标签,支持对象与数据库的orm字段关系映射

5. 提供对象关系映射标签,支持对象关系组建维护

6. 提供xml标签,支持编写动态sql。

 

缺点:

 

1. sql工作量很大,尤其是字段多、关联表多时,更是如此。

2. sql依赖于数据库,导致数据库移植性差。

3. 由于xml里标签id必须唯一,导致DAO中方法不支持方法重载。

4. 字段映射标签和对象关系映射标签仅仅是对映射关系的描述,具体实现仍然依赖于sql。(比如配置了一对多Collection标签,如果sql里没有join子表或查询子表的话,查询后返回的对象是不具备对象关系的,即Collection的对象为null)

5. DAO层过于简单,对象组装的工作量较大。

6.  不支持级联更新、级联删除。

7. 编写动态sql时,不方便调试,尤其逻辑复杂时。

8 提供的写动态sql的xml标签功能简单(连struts都比不上),编写动态sql仍然受限,且可读性低。

9. 使用不当,容易导致N+1的sql性能问题。

10. 使用不当,关联查询时容易产生分页bug。

11. 若不查询主键字段,容易造成查询出的对象有“覆盖”现象。

12. 参数的数据类型支持不完善。(如参数为Date类型时,容易报没有get、set方法,需在参数上加@param)

13. 多参数时,使用不方便,功能不够强大。(目前支持的方法有map、对象、注解@param以及默认采用012索引位的方式)

14. 缓存使用不当,容易产生脏数据。

 

总结:

mybatis 的优点其实也是mybatis的缺点,正因为mybatis使用简单,数据的可靠性、完整性的瓶颈便更多依赖于程序员对sql的使用水平上了。sql写在 xml里,虽然方便了修改、优化和统一浏览,但可读性很低,调试也非常困难,也非常受限,无法像jdbc那样在代码里根据逻辑实现复杂动态sql拼接。 mybatis简单看就是提供了字段映射和对象关系映射的jdbc,省去了数据赋值到对象的步骤而已,除此以外并无太多作为,不要把它想象成 hibernate那样强大,简单小巧易用上手,方便浏览修改sql就是它最大的优点了。

mybatis 适用于小型且程序员能力较低的项目和人群使用,对于中大型项目来说我并不推荐使用,如果觉得hibernate效率低的话(实际上也是使用不当所 致,hibernate是实际上是不适用于拥有高负载的工程项目),还不如直接用spring提供的jdbc简单框架(Template),同样支持对象 映射。

十一、 SqlSessionFactory

测试:Reader reader = Resources.getResourceAsReader("Configuration.xml");

SqlSessionFactory factory= new SqlSessionFactoryBuilder().build(reader);

示例:

返回一个集合:

Factory.openSesion.select(com.lsw.mybatis.entity.UserEntity.queryAll);

分享到:
评论

相关推荐

    MyBatis入门到精通

    这篇“MyBatis入门到精通”的学习资料是针对初学者设计的,旨在帮助新手快速掌握MyBatis的基本用法和高级特性。 1. **MyBatis简介** MyBatis是由Clinton Begin创建的开源项目,它是一个基于Java的持久层框架,消除...

    0772-Mybatis入门

    Mybatis入门

    mybatis入门案例 mybatis入门案例

    mybatis入门案例mybatis入门案例mybatis入门案例mybatis入门案例mybatis入门案例mybatis入门案例mybatis入门案例mybatis入门案例mybatis入门案例mybatis入门案例mybatis入门案例mybatis入门案例mybatis入门案例...

    MyBatis入门.pdf

    MyBatis入门 MyBatis是一个优秀的持久层框架,使用XML将SQL与程序解耦,便于维护。MyBatis学习简单,执行高效,是JDBC的延伸。MyBatis提供了数据库增删改查的便捷操作,极大提高了开发效率、统一的编码规则、利于...

    mybatis入门程序

    【标题】"mybatis入门程序"是一个针对初学者的教程,旨在引导他们进入SSM(Spring、SpringMVC和MyBatis)框架的学习。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,极大地简化了Java开发...

    4.2mybatis入门教程(一)

    【MyBatis 入门教程】 MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使你更好地将注意力集中在你的...

    mybatis 入门文档

    ### MyBatis 入门知识点概述 #### 一、MyBatis 概念与特点 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis...

    mybatis入门实例

    综上所述,"mybatis入门实例" 包含了 MyBatis 的核心概念和基本使用方法,通过对单表的 CRUD 操作,帮助初学者快速理解和掌握 MyBatis 的工作原理和实践技巧。在这个实例中,你可以看到从配置到实际操作的全过程,...

    mybatis入门例子

    这个入门例子是针对初次接触 MyBatis 的学习者设计的,旨在通过简单的步骤和清晰的配置,帮助他们快速理解 MyBatis 的基本工作原理和核心特性。数据库环境选择了 Oracle,Oracle 是一款功能强大且广泛使用的商业级...

    Mybatis入门JavaSE案例

    在这个"Mybatis入门JavaSE案例"中,我们将深入理解Mybatis的基本配置、DAO层的注解方式以及XML配置方式。 首先,让我们来了解Mybatis的配置过程。Mybatis的配置文件(mybatis-config.xml)是整个框架的入口,它包含...

    MyBatis入门程序

    这个"MyBatis入门程序"是为初学者设计的,旨在帮助他们快速理解并开始使用MyBatis。在这个程序中,我们将探讨几个关键知识点,包括MyBatis的基本架构、配置、映射文件以及如何连接MySQL数据库。 1. **MyBatis基本...

    第一个mybatis程序 mybatis入门

    【标题】"第一个mybatis程序 mybatis入门" 涉及到的是MyBatis框架的基础使用,这是一个轻量级的Java持久层框架,它简化了与数据库交互的过程,提供了强大的映射功能。以下是对MyBatis入门的详细解析: 1. **MyBatis...

    Mybatis入门程序实现增删改查

    本入门程序旨在帮助初学者掌握Mybatis的基本使用,包括如何进行数据库的增删改查操作。下面我们将深入探讨这个主题。 首先,我们来了解Mybatis的核心概念: 1. **SqlSessionFactory**: 这是Mybatis的主要入口点,...

    mybatis入门项目代码

    【标题】"mybatis入门项目代码"涉及到的是MyBatis框架的基础使用教程,这是一个轻量级的持久层框架,用于简化Java开发中的数据库操作。MyBatis允许开发者编写SQL语句,将数据库查询与应用程序逻辑紧密地结合起来,...

    mybatis入门示例项目

    在本入门示例项目中,我们将深入理解MyBatis的基本使用方法,包括数据库交互、映射文件配置、配置文件加载、Junit测试以及日志记录。 1. 数据库SQL语句:MyBatis的核心功能之一就是将Java对象与数据库中的SQL语句...

    mybatis入门实战之一

    在"mybatis入门实战之一"中,我们将深入探讨MyBatis的基础知识,包括它的安装配置、基本用法以及如何进行简单的增删改查操作。这个实战教程特别适合初学者,因为它涵盖了开发过程中常用的工具如log日志记录和Maven...

    Mybatis 入门到理解篇

    4. Mybatis的基础知识:Mybatis入门需要掌握一些基础的知识,包括配置文件的编写、Java接口的定义、SQL语句的编写等。其中,配置文件主要包括数据库连接信息、SQL语句等。 5. Mybatis与Hibernate的比较:Hibernate...

    MyBatis入门到精通配套资源

    MyBatis是一款强大的Java持久层框架,它实现了SQL与Java代码的解耦,极大地提高了开发效率。本资源包是专为初学者至进阶者设计的一套完整的MyBatis学习资料,旨在帮助开发者全面理解并掌握MyBatis的核心概念和技术。...

    Mybatis入门案例IDEA最新版本

    ### Mybatis框架入门知识点详解 #### 一、框架与Mybatis概述 1. **框架定义**: - **广义定义**:框架是一种系统性的、可重用的设计方案,表现为一组抽象组件及其交互方法。 - **狭义定义**:框架是可由应用...

    mybatis入门级资源

    本资源集合是针对MyBatis入门学习者设计的,涵盖了MyBatis的基本概念、核心功能以及实际应用。 首先,我们需要了解MyBatis的基本概念。MyBatis是一个基于Java的持久层框架,它提供了灵活的SQL映射机制,将SQL语句与...

Global site tag (gtag.js) - Google Analytics