0

0

Mybatis是什么?Mybatis的相关内容介绍

不言

不言

发布时间:2018-10-12 14:44:06

|

3134人浏览过

|

来源于博客园

转载

本篇文章给大家带来的内容是关于mybatis是什么?mybatis的相关内容介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

MyBatis简介

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。

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

MyBatis参考资料官网

http://www.mybatis.org/mybatis-3/zh/index.html

MyBatis下载地址

https://github.com/mybatis/mybatis-3

MyBatis的优势

  • 开源的优秀的持久层框架

  • SQL语句与代码分离

  • 面向配置的编程

  • 良好支持复杂数据映射

  • 动态SQL

MyBatis开发步骤

1.添加需要的jar包

1)mybatis-3.3.0 核心包(如果需要日志操作,可以导入依赖包)

2)数据库驱动(mysql-connector-java-5.1.22-bin)

2.创建数据库,添加测试数据

create table `tal_employee` (
    `id` int (11),
    `last_name` varchar (360),
    `email` varchar (300),
    `gender` char (9)
);
INSERT INTO `tal_employee` (`id`, `last_name`, `email`, `gender`) VALUES('1','韩信','hanxin@gemail.com','男');
INSERT INTO `tal_employee` (`id`, `last_name`, `email`, `gender`) VALUES('2','LiBaihH','libai@gemail.com','男');
INSERT INTO `tal_employee` (`id`, `last_name`, `email`, `gender`) VALUES('3','孙尚香','sunshangxiang@gemail.com','女');
INSERT INTO `tal_employee` (`id`, `last_name`, `email`, `gender`) VALUES('4','安琪拉','anqila@gemail.com','女');
INSERT INTO `tal_employee` (`id`, `last_name`, `email`, `gender`) VALUES('5','Hello','Hello@gemail.com','男');
INSERT INTO `tal_employee` (`id`, `last_name`, `email`, `gender`) VALUES('6','Miya','Miya@gemail.com','男');
3.创建实体类
public class Employee {
    private Integer id;
    private String lastName;
    private String email;
    private String gender;
    //此处省略get set toString。。。
}
4.创建实体类映射配置文件




    
    
5.创建mybatis主配置文件



    
    
        
        
            
            
            
            
                
                
                
                
            
        
    
    
    
        
    

获取SqlSessionFactory对象

private SqlSessionFactory sqlSessionFactory;
    @Before
    public void init() throws IOException{
        //读取mybatis主配置文件
        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
        /**
         * 实例化SqlSessionFactory
         * 如果没有指定默认环境,可以在这里指定使用的环境ID,比如我先在有个DEV环境
         * sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream,"DEV");
         * 我这里已经使用了默认环境所以我就不用这种方式创建了
         */
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    }

访问数据库

获取SqlSession对象,作用于与数据库的一次回话作用于与数据库的一次回话

SqlSession session = sqlSessionFactory.openSession();

获取所有员工记录

EmployeeMapper就是我们实体类映射文件的命名空间,findAll就是我们select标签的ID

List employees = session.selectList("EmployeeMapper.findAll");
        for (Employee employee : employees) {
            System.out.println(employee);
        }

访问结果:

Employee [id=1, lastName=null, email=hanxin@gemail.com, gender=男]
Employee [id=2, lastName=null, email=libai@gemail.com, gender=男]
Employee [id=3, lastName=null, email=sunshangxiang@gemail.com, gender=女]
Employee [id=4, lastName=null, email=anqila@gemail.com, gender=女]
Employee [id=5, lastName=null, email=Hello@gemail.com, gender=男]
Employee [id=6, lastName=null, email=Miya@gemail.com, gender=男]

在这里我们访问数据库是正常的,为什么lastName为空呢?

解决表字段与类属性名不对应

原因:应为我们这里实体类上的属性叫做lastName与数据库列last_name名字不对应所以获取的值为空

解决方案1:将实体类映射文件的中select标签中的取别名

解决方案2:在mybatis主配置文件中配置驼峰式命名,需要将配置排在前面否则XML报错


    
    

使用方案2我们类中属性lastName会匹配数据库字段last_name

使用日志查看SQL语句等

良精Wap企业网站管理系统 1.2
良精Wap企业网站管理系统 1.2

什么是企业WAP网站,企业3G网站 企业WAP网站一般是指展示企业形象,介绍企业产品的WAP手机网站或者3G手机网站,让客户可以通过手机就能了解一个企业的大体情况和产品内容,从而更广泛的宣传企业,赢得更多的客户关注度!一般企业WAP网站包括:公司介绍,产品介绍,企业新闻动态,服务范围介绍,留言板,企业招聘信息等内容,如果有特殊要求,我们也会按照客户的要求定做。 企业为何要建设手机WAP网站,3

下载

首先我们需要添加mybatis依赖包

添加log4j.properties

#设置输出级别和输出位置
log4j.rootLogger=debug,Console
#设置控制台相关的参数
log4j.appender.Console=org.apache.log4j.ConsoleAppender  
log4j.appender.Console.layout=org.apache.log4j.PatternLayout  
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n  
#设置MyBatis的输出内容
log4j.logger.java.sql.ResultSet=INFO  
log4j.logger.org.apache=INFO  
log4j.logger.java.sql.Connection=DEBUG  
log4j.logger.java.sql.Statement=DEBUG  
log4j.logger.java.sql.PreparedStatement=DEBUG

这样我们就可以使用log4j来查看我们的sql语句啊,传入的参数啊。。等等

MyBatis的配置文件

  • 通过前面简单的MyBatis案例,大家应该了解到了MyBatis框架的基本结构,和Hibernate一样,MyBatis包含了一个核心配置文件和映射文件。

  • 核心配置文件(mybatis-config.xml):包含了对Mybatis的核心配置,包含连接池信息,事务,加载映射文件,参数设置等配置。

  • 映射文件(EmployeeMapper.xml):主要实现实体对象对数据库的映射,关联关系,Sql语句等。

核心配置文件

标签 说明

配置环境

一些外部属性,这些属性可以被替换

Mybatis中极为重要的调整设置,会改变Mybatis的默认行为。

为Java类型设置一个别名,它只和xml配置有关。

映射器,加载MyBatis的映射文件。

插件,Mybatis允许用户在映射的某一点进行拦截。

环境配置

  1. Mybatis可以通过

    配置多种环境,比如开发环境、测试环境和生产环境等。

  2. 不过要记住,尽管可以配置多个环境,但是SqlSessionFactory对象只能加载一个。如果你需要同时连接多个数据库,需要创建多个SqlSessionFactory实例。

事务管理

在 MyBatis来进行事务的设置,其中有两种类型的事务管理器。

  1. JDBC:这个配置就是直接使用了 JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务范围。

  2. MANAGED:这个配置几乎没做什么。它从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。 默认情况下它会关闭连接,然而一些容器并不希望这样,因此需要将 closeConnection 属性设置为 false 来阻止它默认的关闭行为。


    

如果你正在使用 Spring + MyBatis,则没有必要配置事务管理器, 因为 Spring 模块会使用自带的管理器来覆盖前面的配置。

数据源

使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。有三种数据源类型

  1. UNPOOLED:这个数据源的实现只是每次被请求时打开和关闭连接。

  2. POOLED:这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来, 避免了创建新的连接实例时所必需的初始化和认证时间。

  3. JNDI:使用JNDI在外部配置数据源。

properties标签

properties为外部属性,比如数据库连接信息可以配置到一个单独的properties文件中,然后在xml中进行引入。

添加一个db.properties文件

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=root

在mybatis主配置文件中引用



    
        
        
            
            
            
            
        
    

映射器

通常MyBatis中将映射关系(非必须)和SQL语句写入到映射文件中,在配置文件中需要手动进行加载映射文件。加载映射文件使用进行加载。Mybatis中有4种加载方式。

1.使用resource,加载classpath路径进行加载。


    

2.使用url路径进行加载。


    

3.使用calss进行加载,注解方式。



    

4.使用package进行加载,注解方式。



    

别名的使用

之前,我们在sql映射xml文件中的引用实体类时,resultType需要写上实体类的全类名(包名+类名),如下:

在mybatis主配置文件中加入


    

这样在resultType中就可以直接使用Employee类型了。这个别名是不区分大小写的。

相关专题

更多
高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

4

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

3

2026.01.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

10

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

33

2026.01.15

Java音频处理教程汇总
Java音频处理教程汇总

本专题整合了java音频处理教程大全,阅读专题下面的文章了解更多详细内容。

15

2026.01.15

windows查看wifi密码教程大全
windows查看wifi密码教程大全

本专题整合了windows查看wifi密码教程大全,阅读专题下面的文章了解更多详细内容。

42

2026.01.15

浏览器缓存清理方法汇总
浏览器缓存清理方法汇总

本专题整合了浏览器缓存清理教程汇总,阅读专题下面的文章了解更多详细内容。

7

2026.01.15

ps图片相关教程汇总
ps图片相关教程汇总

本专题整合了ps图片设置相关教程合集,阅读专题下面的文章了解更多详细内容。

9

2026.01.15

ppt一键生成相关合集
ppt一键生成相关合集

本专题整合了ppt一键生成相关教程汇总,阅读专题下面的的文章了解更多详细内容。

6

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号