Jadual Kandungan
1.添加需要的jar包" >1.添加需要的jar包
3.创建实体类" >3.创建实体类
4.创建实体类映射配置文件" >4.创建实体类映射配置文件
5.创建mybatis主配置文件" >5.创建mybatis主配置文件
核心配置文件
环境配置
事务管理
数据源
properties标签
映射器
别名的使用
Rumah Java javaTutorial Mybatis是什么?Mybatis的相关内容介绍

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

Oct 12, 2018 pm 02:44 PM
mybatis

本篇文章给大家带来的内容是关于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)
);
Salin selepas log masuk
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','男');
Salin selepas log masuk
3.创建实体类
public class Employee {
    private Integer id;
    private String lastName;
    private String email;
    private String gender;
    //此处省略get set toString。。。
}
Salin selepas log masuk
4.创建实体类映射配置文件
<?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="EmployeeMapper">
    <!-- 定义一个查询方法  resultType 返回值类型-->
    <select id="findAll" resultType="com.simple.mybatis.entitys.Employee">
        select * from tal_employee
    </select>
</mapper>
Salin selepas log masuk
5.创建mybatis主配置文件
<?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>
    <!-- 配置环境  default默认使用环境名字-->
    <environments default="development">
        <!-- 配置一个环境 -->
        <environment id="development">
            <!-- 使用事务JDBC事务管理器 -->
            <transactionManager type="JDBC" />
            <!-- 配置数据库连接 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
                <property name="username" value="root" />
                <property name="password" value="root" />
            </dataSource>
        </environment>
    </environments>
    <!-- 加载映射 -->
    <mappers>
        <mapper resource="com/simple/mybatis/entitys/EmployeeMapper.xml" />
    </mappers>
</configuration>
Salin selepas log masuk

获取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);
    }
Salin selepas log masuk

访问数据库

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

SqlSession session = sqlSessionFactory.openSession();
Salin selepas log masuk

获取所有员工记录

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

List<Employee> employees = session.selectList("EmployeeMapper.findAll");
        for (Employee employee : employees) {
            System.out.println(employee);
        }
Salin selepas log masuk

访问结果:

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=男]
Salin selepas log masuk

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

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

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

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

<select id="findAll" resultType="com.simple.mybatis.entitys.Employee">
        select id,last_name AS lastName,email,gender from tal_employee
</select>
Salin selepas log masuk
Salin selepas log masuk

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

<settings>
    <!-- 开启驼峰式命名规则 -->
    <setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
Salin selepas log masuk

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

使用日志查看SQL语句等

首先我们需要添加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
Salin selepas log masuk

这样我们就可以使用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 来阻止它默认的关闭行为。

<transactionManager type="MANAGED">
    <property name="closeConnection" value="false"/>
</transactionManager>
Salin selepas log masuk

如果你正在使用 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
Salin selepas log masuk

在mybatis主配置文件中引用

<properties resource="db.properties" />
<environments default="development">
    <environment id="development">
        <transactionManager type="JDBC" />
        <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>
Salin selepas log masuk

映射器

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

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

<mappers>
    <mapper resource="com/simple/mybatis/entitys/EmployeeMapper.xml"/>
</mappers>
Salin selepas log masuk

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

<mappers>
    <mapper url="file:///var/mappers/AuthorMapper.xml"/>
</mappers>
Salin selepas log masuk

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

<!– 加载class类-->
<mappers>
    <mapper class="使用注解的全类名"/>
</mappers>
Salin selepas log masuk

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

<!– 加载某个包下的所有class文件-->
<mappers>
    <package name="com.simple.mybatis.entitys"/>
</mappers>
Salin selepas log masuk

别名的使用

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

<select id="findAll" resultType="com.simple.mybatis.entitys.Employee">
        select id,last_name AS lastName,email,gender from tal_employee
</select>
Salin selepas log masuk
Salin selepas log masuk

在mybatis主配置文件中加入

<typeAliases>
    <typeAlias type=“com.simple.mybatis.entitys.Employee" alias="Employee"/>
</typeAliases>
Salin selepas log masuk

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

Atas ialah kandungan terperinci Mybatis是什么?Mybatis的相关内容介绍. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

iBatis vs. MyBatis: Mana satu yang lebih baik untuk anda? iBatis vs. MyBatis: Mana satu yang lebih baik untuk anda? Feb 19, 2024 pm 04:38 PM

iBatis vs. MyBatis: Mana yang patut anda pilih? Pengenalan: Dengan perkembangan pesat bahasa Java, banyak rangka kerja kegigihan telah muncul. iBatis dan MyBatis ialah dua rangka kerja kegigihan yang popular, kedua-duanya menyediakan penyelesaian capaian data yang mudah dan cekap. Artikel ini akan memperkenalkan ciri dan kelebihan iBatis dan MyBatis, dan memberikan beberapa contoh kod khusus untuk membantu anda memilih rangka kerja yang sesuai. Pengenalan kepada iBatis: iBatis ialah rangka kerja kegigihan sumber terbuka

Penjelasan terperinci tentang fungsi Set tag dalam teg SQL dinamik MyBatis Penjelasan terperinci tentang fungsi Set tag dalam teg SQL dinamik MyBatis Feb 26, 2024 pm 07:48 PM

Tafsiran teg SQL dinamik MyBatis: Penjelasan terperinci tentang penggunaan teg Set MyBatis ialah rangka kerja lapisan kegigihan yang sangat baik Ia menyediakan banyak teg SQL dinamik dan boleh membina pernyataan operasi pangkalan data secara fleksibel. Antaranya, tag Set ialah tag yang digunakan untuk menjana klausa SET dalam kenyataan UPDATE, yang sangat biasa digunakan dalam operasi kemas kini. Artikel ini akan menerangkan secara terperinci penggunaan teg Set dalam MyBatis dan menunjukkan kefungsiannya melalui contoh kod tertentu. Apakah itu Set tag Set tag digunakan dalam MyBati

Pelbagai cara untuk melaksanakan operasi pemadaman kelompok dalam MyBatis Pelbagai cara untuk melaksanakan operasi pemadaman kelompok dalam MyBatis Feb 19, 2024 pm 07:31 PM

Beberapa cara untuk melaksanakan pernyataan pemadaman kelompok dalam MyBatis memerlukan contoh kod khusus Dalam beberapa tahun kebelakangan ini, disebabkan oleh peningkatan jumlah data, operasi kelompok telah menjadi bahagian penting dalam operasi pangkalan data. Dalam pembangunan sebenar, kita selalunya perlu memadamkan rekod dalam pangkalan data secara berkelompok. Artikel ini akan menumpukan pada beberapa cara untuk melaksanakan pernyataan padam kelompok dalam MyBatis dan memberikan contoh kod yang sepadan. Gunakan teg foreach untuk melaksanakan pemadaman kelompok MyBatis menyediakan teg foreach, yang boleh melintasi set dengan mudah.

Analisis perbandingan fungsi dan prestasi JPA dan MyBatis Analisis perbandingan fungsi dan prestasi JPA dan MyBatis Feb 19, 2024 pm 05:43 PM

JPA dan MyBatis: Analisis Perbandingan Fungsi dan Prestasi Pengenalan: Dalam pembangunan Java, rangka kerja kegigihan memainkan peranan yang sangat penting. Rangka kerja kegigihan biasa termasuk JPA (JavaPersistenceAPI) dan MyBatis. Artikel ini akan menjalankan analisis perbandingan fungsi dan prestasi kedua-dua rangka kerja dan menyediakan contoh kod khusus. 1. Perbandingan fungsi: JPA: JPA ialah sebahagian daripada JavaEE dan menyediakan penyelesaian kegigihan data berorientasikan objek. Ia diluluskan anotasi atau X

Penjelasan terperinci tentang cara menggunakan penyata pemadaman kumpulan MyBatis Penjelasan terperinci tentang cara menggunakan penyata pemadaman kumpulan MyBatis Feb 20, 2024 am 08:31 AM

Penjelasan terperinci tentang cara menggunakan pernyataan pemadaman kumpulan MyBatis memerlukan contoh kod khusus Pengenalan: MyBatis ialah rangka kerja lapisan kegigihan yang sangat baik yang menyediakan fungsi operasi SQL yang kaya. Dalam pembangunan projek sebenar, kami sering menghadapi situasi di mana data perlu dipadamkan dalam kelompok. Artikel ini akan memperkenalkan secara terperinci cara menggunakan pernyataan pemadaman kumpulan MyBatis, dan melampirkan contoh kod tertentu. Senario penggunaan: Apabila memadamkan sejumlah besar data dalam pangkalan data, adalah tidak cekap untuk melaksanakan kenyataan padam satu demi satu. Pada ketika ini, anda boleh menggunakan fungsi pemadaman kelompok MyBatis

Penjelasan terperinci tentang cache peringkat pertama MyBatis: Bagaimana untuk meningkatkan kecekapan capaian data? Penjelasan terperinci tentang cache peringkat pertama MyBatis: Bagaimana untuk meningkatkan kecekapan capaian data? Feb 23, 2024 pm 08:13 PM

Penjelasan terperinci tentang cache peringkat pertama MyBatis: Bagaimana untuk meningkatkan kecekapan capaian data? Semasa proses pembangunan, capaian data yang cekap sentiasa menjadi salah satu fokus pengaturcara. Untuk rangka kerja lapisan kegigihan seperti MyBatis, caching ialah salah satu kaedah utama untuk meningkatkan kecekapan capaian data. MyBatis menyediakan dua mekanisme caching: cache peringkat pertama dan cache peringkat kedua. Cache peringkat pertama didayakan secara lalai. Artikel ini akan memperkenalkan mekanisme cache peringkat pertama MyBatis secara terperinci dan menyediakan contoh kod khusus untuk membantu pembaca memahami dengan lebih baik.

Menganalisis mekanisme caching MyBatis: bandingkan ciri dan penggunaan cache peringkat pertama dan cache peringkat kedua Menganalisis mekanisme caching MyBatis: bandingkan ciri dan penggunaan cache peringkat pertama dan cache peringkat kedua Feb 25, 2024 pm 12:30 PM

Analisis mekanisme caching MyBatis: Perbezaan dan aplikasi cache peringkat pertama dan cache peringkat kedua Dalam rangka kerja MyBatis, caching ialah ciri yang sangat penting yang boleh meningkatkan prestasi operasi pangkalan data dengan berkesan. Antaranya, cache tahap pertama dan cache tahap kedua adalah dua mekanisme caching yang biasa digunakan dalam MyBatis. Artikel ini akan menganalisis perbezaan dan aplikasi cache peringkat pertama dan cache peringkat kedua secara terperinci, dan memberikan contoh kod khusus untuk digambarkan. 1. Cache Tahap 1 Cache tahap 1 juga dipanggil cache setempat Ia didayakan secara lalai dan tidak boleh dimatikan. Cache tahap pertama ialah SqlSes

Pentafsiran parameter konfigurasi MyBatis Generator dan amalan terbaik Pentafsiran parameter konfigurasi MyBatis Generator dan amalan terbaik Feb 23, 2024 am 09:51 AM

MyBatisGenerator ialah alat penjanaan kod yang disediakan secara rasmi oleh MyBatis, yang boleh membantu pembangun menjana JavaBeans, antara muka Mapper dan fail pemetaan XML dengan pantas yang mematuhi struktur jadual pangkalan data. Dalam proses menggunakan MyBatisGenerator untuk penjanaan kod, penetapan parameter konfigurasi adalah penting. Artikel ini akan bermula dari perspektif parameter konfigurasi dan meneroka secara mendalam fungsi MyBatisGenerator.

See all articles