MyBatis基本使用及XML配置

这篇具有很好参考价值的文章主要介绍了MyBatis基本使用及XML配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述

MyBatis是一款优秀的持久层框架,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程,减少了代码的冗余,减少程序员的操作,可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 实体类 【Plain Old Java Objects,普通的 Java对象】映射成数据库中的记录。

github地址

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

依赖

<dependencies>
    <!-- Mybatis核心 -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.7</version>
    </dependency>
    <!-- junit测试 -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
    <!-- MySQL驱动 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.3</version>
    </dependency>
</dependencies>

mybatis配置文件

创建mybatis配置文件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>
    <environments default="development">
        <environment id="development">
            <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>
    <!--写好的sql映射文件(EmployeeMapper.xml)注册到全局配置文件(mybatis-config.xml)中-->
    <mappers>
        <mapper resource="xxxMapper.xml"/>
    </mappers>
</configuration>

sql映射文件

sql映射文件xxxMapper.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="com.xxx.mybatis.xxxMapper">
<!--namespace:名称空间
id:唯一标识
resultType:返回值类型
#{id}:从传递过来的参数中取出ID值
-->
    <select id="selectXxx" resultType="com.xxx.mybatis.bean.Employee">
        select id,last_name lastName,gender,email from xxx where id=#{id}
    </select>
</mapper>

基本使用

  1. 根据xml配置文件(全局配置文件)创建一个SqlSessionFactory对象

  1. sql映射文件。配置了每一个sql,以及sql的封装规则等

  1. 将sql映射文件注册在全局配置文件中

  1. 写代码

  1. 根据全局配置文件得到SqlSessionFactory

  1. 使用sqlSession工厂,获取到sqlSession对象使用他来执行增删改查

一个sqlSession就是代表和数据库的一次会话,用完关闭

  1. 使用sql的唯一标识来告诉MyBatis执行哪个sql,sql都是保存在sql映射文件中的

public class MyBatisTest {

    @Test
    public void test() throws IOException{
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //2.获取sqlSession实例,能直接执行已经映射的sql语句
        SqlSession openSession = sqlSessionFactory.openSession();
        //第一个参数 sql语句的唯一标识符 第二个参数 执行sql 语句要用的参数
        try {
            Xxx xxx = openSession.selectOne("com.xxx.mybatis.xxxMapper.selectXxx", 1);
            System.out.println(xxx);
        }finally {
            openSession.close();
        }
    }
}

接口式编程

创建Dao接口

public interface XxxMapper {

    public Xxx getXxxById(Integer id);
}

基本使用

public class MyBatisTest{

    public SqlSessionFactory getSqlSessionFactory() throws IOException{
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        return new SqlSessionFactoryBuilder().build(inputStream);

    }
    @Test
    public void test01() throws IOException {
        //1.获取sqlSessionFactory对象
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
        //2.获取sqlSession对象
        SqlSession openSession = sqlSessionFactory.openSession();
        try {
            //3.获取接口的实现类对象
            //会为接口自动的创建一个代理对象,代理对象去执行增删改查方法,将接口与xml进行绑定
            XxxMapper mapper = openSession.getMapper(XxxMapper.class);
            Xxx xxx = mapper.getXxxById(1);
            System.out.println(mapper.getClass());
            System.out.println(xxx);
        }finally {
            openSession.close();
        }
    }
}

重要的配置文件

  • mybatis的全局配置文件:包含数据库连接池信息,事务管理器信息,系统运行环境信息

  • sql映射文件:保存了每一个sql语句的映射信息

XML 配置

属性(properties)

这些属性可以在外部进行配置,并可以进行动态替换。你既可以在典型的 Java 属性文件中配置这些属性,也可以在 properties 元素的子元素中设置。例如:

  • resource:引入类路径下的资源

  • url:引入类路径或者磁盘路径下的资源

<properties resource="dbconfig.properties"></properties>

设置好的属性可以在整个配置文件中用来替换需要动态配置的属性值。比如

<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>

dbconfig.properties

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

设置(settings)

 <!--settings包含很多重要的设置项
        setting:用来设置每一个设置项
            name:设置项的名字
            value:设置项的取值
    -->
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
mapUnderscoreToCamelCase,是否开启驼峰命名自动映射,即从经典数据库列名 A_COLUMN 映射到经典 Java 属性名 aColumn,默认为false

类型别名(typeAliases)

类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。

 <!--typeAliases:别名处理器:可以为我们的Java类型起别名
            别名不区分大小写-->
    <typeAliases>
        <!--typeAlias:为某个Java类型起别名
            type:指定要起别名的类型全类名;默认别名就是类名小写:employee
            alias:指定新的别名-->
        <typeAlias type="com.xxx.mybatis.bean.Employee" alias="emp"/>

        <!--package:为某个包下的所有类批量起别名
            name:指定报名(指定为当前包以及下面所有的后代包的每一个类都起一个默认别名(类名小写))-->
        <package name="com.xxx.mybatis.bean"/>

        <!--批量起别名的情况下,使用@Alias注解为某个类型指定新的别名-->
    </typeAliases>
@Alias("emp")
public class Employee {
}

类型处理器(typeHandlers)

MyBatis 在设置预处理语句(PreparedStatement)中的参数或从结果集中取出一个值时, 都会用类型处理器将获取到的值以合适的方式转换成 Java 类型。

https://mybatis.org/mybatis-3/zh/configuration.html#typeHandlers

插件(plugins)

MyBatis 允许你在映射语句执行过程中的某一点进行拦截调用。

https://mybatis.org/mybatis-3/zh/configuration.html#plugins

环境配置(environments)

  <!--environments:环境们,mybatis可以配置多种环境 default指定使用某种环境。可以达到快速切换
            environment:配置一个具体的环境信息:必须有两个标签 id(代表当前环境的唯一标识)
            transactionManager:事务管理器;
                type:事务管理器的类型:JDBC(JDBCTransactionFactory)|MANAGED(Managed)
                    自定义事务管理器:实现JDBCTransactionFactory接口,type指定为全类名
            dataSource:数据源
                type:数据源类型;UNPOOLED|POOLED|JNDI
                自定义数据源:实现DataSourceFactory接口,type是全类名

                 -->
    <environments default="test">
        <environment id="test">
            <transactionManager type=""></transactionManager>
            <dataSource type=""></dataSource>
        </environment>

数据库厂商标识(databaseIdProvider)

MyBatis 可以根据不同的数据库厂商执行不同的语句,这种多厂商的支持是基于映射语句中的 databaseId 属性。 MyBatis 会加载带有匹配当前数据库 databaseId 属性和所有不带 databaseId 属性的语句。 如果同时找到带有 databaseId 和不带 databaseId 的相同语句,则后者会被舍弃。 为支持多厂商特性,只要像下面这样在 mybatis-config.xml 文件中加入 databaseIdProvider 即可

<!--databaseIdProvider,支持数据库厂商的,
              type="DB_VENDOR":VendorDatabaseIdProvider
                  作用就是得到数据库厂商的标识(驱动),mybatis就能根据数据库厂商标识来执行不同的sql
                  MySQL,Oracle,SQL,Server,xxx;
                  -->
    <databaseIdProvider type="DB_VENDOR">
        <!--为不同的数据库厂商起别名-->
        <property name="MySQL" value="mysql"/>
        <property name="Oracle" value="oracle"/>
        <property name="SQL Server" value="sqlserver"/>
    </databaseIdProvider>
    <select id="getEmpById" resultType="com.frx01.mybatis.bean.Employee" databaseId="mysql">
        select id,last_name lastName,gender,email from tbl_employee where id=#{id}
    </select>

映射器(mappers)

定义 SQL 映射语句,首先我们需要告诉 MyBatis 到哪里去找到这些语句。 在自动查找资源方面,Java 并没有提供一个很好的解决方案,所以最好的办法是直接告诉 MyBatis 到哪里去找映射文件。 你可以使用相对于类路径的资源引用,或完全限定资源定位符(包括 file:/// 形式的 URL),或类名和包名等。文章来源地址https://www.toymoban.com/news/detail-773986.html

  <!--mappers:将sql映射注册到全局配置中-->
    <mappers>
        <!--mapper:注册一个sql映射
                resource:引用类路径下的sql映射文件
                    mybatis/mapper/EmployeeMapper.xml
                url:引用网络路径或磁盘路径下的sql映射文件
                注册接口
                class:引用(注册)接口
                    1.有sql映射文件,映射文件名必须和接口同名,并且放在与接口同一目录下;
                    2.没有sql映射文件,所有的sql都是利用注解 写在接口上
                    推荐:
                        比较重要的,复制的Dao接口我们来写sql映射文件
                        不重要,简单的Dao接口为了开发快速可以使用注解
                -->
        <!--<mapper resource="EmployeeMapper.xml"/>-->
        <!--<mapper class="com.frx01.mybatis.dao.EmployeeMapperAnnotation"/>-->

        <!--批量注册 要把Mapper.xml与dao层放在一个包下-->
        <package name="com.xxx.mybatis.dao"/>
    </mappers>

到了这里,关于MyBatis基本使用及XML配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mybatis—XML配置文件、动态SQL

    学习完Mybatis的基本操作之后,继续学习Mybatis—XML配置文件、动态SQL。 Mybatis的开发有两种方式: 注解 XML 之前学习的基本操作都是基于注解开发。使用Mybatis的注解方式,主要是来完成一些简单的增删改查功能。如果需要实现复杂的SQL功能,建议使用XML来配置映射语句,也就

    2024年02月06日
    浏览(41)
  • Spring Boot入门(09):如何使用MyBatis的XML配置方式实现MySQL的增删改查操作?

            想要快速高效地开发Java Web应用程序,选择使用Spring Boot和MyBatis无疑是明智之举。本篇文章将教你使用MyBatis的XML配置方式,结合MySQL数据库,实现常见的增删改查操作,让你的应用程序更加实用和强大。跟随本文一起来探索MyBatis在Spring Boot中的力量吧!        

    2024年02月11日
    浏览(70)
  • MyBatis-config.xml配置文件

            mybatis的核心配置文件(mybatis-config.xml),比如配置jdbc连接信息,注册mapper等等,我们需要对这个配置文件有详细的了解。 官网地址有详细介绍 mybatis – MyBatis 3 | 配置         在通常的情况下,我们会将jdbc的配置信息,写在一个外部文件,然后引入到mybatis-co

    2024年02月03日
    浏览(41)
  • Spring Boot入门(09):使用MyBatis的XML配置方式访问MySQL实现增删改查 | 超级详细,建议收藏

            想要快速高效地开发Java Web应用程序,选择使用Spring Boot和MyBatis无疑是明智之举。本篇文章将教你使用MyBatis的XML配置方式,结合MySQL数据库,实现常见的增删改查操作,让你的应用程序更加实用和强大。跟随本文一起来探索MyBatis在Spring Boot中的力量吧!        

    2024年02月13日
    浏览(46)
  • 系列四、全局配置文件mybatis-config.xml

    mybatis全局配置中的文件非常多,主要有如下几个:  properties(属性) settings(全局配置参数) typeAliases(类型别名) typeHandlers(类型处理器) objectFactory(对象工厂) plugins(插件) environments(环境集合属性对象) environment(环境集合属性子对象) transactionManager(事务管理

    2024年02月06日
    浏览(48)
  • SpringBoot与MyBatis零XML配置集成和集成测试

    原文地址:https://ntopic.cn/p/2023070801/ 源代码先行: Gitee本文介绍的完整仓库:https://gitee.com/obullxl/ntopic-boot GitHub本文介绍的完整仓库:https://github.com/obullxl/ntopic-boot 在Java众多的ORM框架里面,MyBatis是比较轻量级框架之一,既有数据表和Java对象映射功能,在SQL编写方面又不失原生

    2024年02月12日
    浏览(54)
  • Javaweb之Mybatis的XML配置文件的详细解析

    Mybatis的开发有两种方式: 注解 XML 使用Mybatis的注解方式,主要是来完成一些简单的增删改查功能。如果需要实现复杂的SQL功能,建议使用XML来配置映射语句,也就是将SQL语句写在XML配置文件中。 在Mybatis中使用XML映射文件方式开发,需要符合一定的规范: XML映射文件的名称

    2024年01月24日
    浏览(55)
  • MyBatis的使用(XML映射文件)

    MyBatis基于注解开发简单便捷,但是弊端是失去SQL语句的灵活性,不能根据实际情况产生不同的SQL语句 MyBatis除了支持注解开发以外,还支持一种开发方式:XML映射文件,将SQL语句写到XML映射文件中,基于更多种的选择可以让SQL变得更加灵活 1.开发方式 1.和基于注解开发方式一

    2024年02月08日
    浏览(40)
  • 【JaveWeb教程】(27)Mybatis的XML配置文件与Mybatis动态SQL 详细代码示例讲解

    Mybatis的开发有两种方式: 注解 XML 使用Mybatis的注解方式,主要是来完成一些简单的增删改查功能。如果需要实现复杂的SQL功能,建议使用XML来配置映射语句,也就是将SQL语句写在XML配置文件中。 在Mybatis中使用XML映射文件方式开发,需要符合一定的规范: XML映射文件的名称

    2024年02月01日
    浏览(46)
  • 在springboot中配置mybatis(mybatis-plus)mapper.xml扫描路径的问题

    我曾经遇到过类似问题: mybatis-plus的mapper.xml在src/main/java路径下如何配置pom.xml和application.yml_idea 把mapper文件放到java下如何配置_梓沂的博客-CSDN博客 当时只是找到解决问题的办法,但对mybatis配置来龙去脉并未深入了解,所以再次遇到问题还是受此困扰。 重新复习mybatis plus和

    2024年02月10日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包