深入浅出mybatis之入门使用

写在前面

mybatis是一个持久层框架,可以支持SQL定制和存储过程,实现数据库记录到Java POJO对象之间的映射。 所以说,mybatis是一个ORM框架。 这个ORM可以通过2种方式实现:xml配置,java注解。 使用mybatis可以大大提高数据库应用程序的编写效率,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。 既然mybatis有这么强大的功能,那么如何使用它呢?以及mybatis具体有哪些核心元素和特性呢?

如何使用mybatis

mybatis主要是解决数据库应用程序的中POJO对象与数据库记录之前的映射关系的。 也就是说,只要是涉及关系型数据库的应用编程,都可以使用mybatis作为持久层开发组件。 而多数与数据库打交道的应用程序通常都是B/S架构,如Java Web应用程序;另外,Spring作为Java世界中非常流行的容器框架,所以通常mybatis存在2种应用场景: 其一:在Java Web应用中与Spring框架集成在一起使用,将mybatis中的相关组件交给Spring进行管理; 其二:在普通的数据库应用程序中使用mybatis,此时mybatis的相应组件需要由程序员自己管理;


在使用mybatis之前,需要对其进行一些基础配置,具体包括: 1.properties 属性 2.settings 设置 3.typeAliases 类型别名 4.typeHandlers 类型处理器 5.objectFactory 对象工厂 6.plugins 插件 7.environments 环境 ----environment 环境变量 --------transactionManager 事务管理器 --------dataSource 8.databaseIdProvider 数据库厂商标识 9.mappers 映射器


如上这些属性,有些是必须明确配置的,有些可以不用配置,mybatis已经提供了默认值。 具体来讲,environmentsmappers是必须配置的,其他的可以不用明确配置。 举个例子:mybatis-config.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">
<configuration>
    <properties resource="jdbc.properties"></properties>

    <settings>
        <!-- 指定 MyBatis 所用日志的具体实现,未指定时将自动查找。 -->
        <setting name="logImpl" value="LOG4J" />
        <!-- 是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN 到经典 Java 属性名 aColumn 
            的类似映射。 -->
        <setting name="mapUnderscoreToCamelCase" value="false" />
    </settings>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            
            <!-- 使用自定义的事务管理器: 自动提交事务 -->
            <!-- <transactionManager type="org.chench.test.mybatis.transaction.MyJdbcTransactionFactory" /> -->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}" />
                <property name="url" value="${url}" />
                <property name="username" value="${username}" />
                <property name="password" value="${password}" />
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <!-- 将SQL语句写在xml文件中 -->
        <mapper resource="org/chench/test/mybatis/mapper/TestMapper.xml" />

        <!-- 将SQL语句写在Java代码中, 这里有2种方式:  -->
        <!-- 方式一: 注册每一个映射器接口,需要明确注册每一个接口 -->
        <!-- 方式二: 指定映射器接口所在包,则该包下的所有映射器接口都会被注册 -->
        <!-- <mapper class="org.chench.test.mybatis.mapper.impl.TestMapper" /> -->
        <package name="org.chench.test.mybatis.mapper.impl"/>
    </mappers>
</configuration>

详细使用mybatis示例:https://gitee.com/cchanghui/test-mybatis.git

mybatis核心组件和特性

1.xml映射文件 2.动态SQL 3.映射器注解:在mybatis3上才可用 4.SQL语句构建器

【参考】 http://www.mybatis.org/mybatis-3/zh/index.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java3y

从零开始学TensorFlow【01-搭建环境、HelloWorld篇】

最近在学习TensorFlow的相关知识,了解了TensorFlow一些基础的知识,现在周末有空了,就写写一些笔记,记录一下自己的成长~

10510
来自专栏码匠的流水账

聊聊dubbo的DubboComponentScanRegistrar

本文主要研究一下dubbo的DubboComponentScanRegistrar

10300
来自专栏A周立SpringCloud

分享:手把手生成漂亮的静态文档说明页

最近经常被问 https://t.itmuch.com/doc.html 文档页是怎么制作的,考虑到步骤略复杂,写篇手记总结下吧。

14940
来自专栏leon的专栏

JavaScript嗅探执行神器-sniffer.js,你值得拥有!

这样,不管a.js文件多大,Wall.say('wall')都可以等到文件真正加载完后,再执行。

8730
来自专栏Java架构学习路线

4个点说清楚Java中synchronized和volatile的区别

1、Java语言为了解决并发编程中存在的原子性、可见性和有序性问题,提供了一系列和并发处理相关的关键字,比如synchronized、volatile、fina...

9000
来自专栏Java3y

带你搭一个SpringBoot+SpringData JPA的Demo

不知道大家对SpringBoot和Spring Data JPA了解多少,如果你已经学过Spring和Hibernate的话,那么SpringBoot和Spri...

13330
来自专栏luozhiyun的源码解析

源码分析--dubbo服务端暴露

服务暴露的入口方法是 ServiceBean 的 onApplicationEvent。onApplicationEvent 是一个事件响应方法,该方法会在收到...

7620
来自专栏luozhiyun的源码解析

10.源码分析---SOFARPC内置链路追踪SOFATRACER是怎么做的?

大家在看链路追踪之前可以先去看看官方的这篇文章SOFARPC 链路追踪剖析,有助于理解。

13430
来自专栏Java技术栈

confd + Nacos | 无代码侵入的配置变更管理

为什么要支持confd,老的应用配置管理模式是启动时读取配置文件,然后重新读取配置文件需要应用重启。

26140
来自专栏JavaEdge

Kafka实战(五) - Kafka的秘技"坂本"之争

如果不了解各个版本之间的差异和功能变化,怎么能够准确地评判某Kafka版本是不是满足你的业务需求呢?

21640

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励