MyBatis

本文介绍了MyBatis,一个优秀的Java持久层框架,它支持自定义SQL、存储过程和高级映射。文章详细阐述了如何搭建MyBatis环境,包括配置文件配置和注解配置的方法,以及环境搭建中的注意事项,旨在帮助读者快速入门。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概述

MyBatis 是一款优秀的持久层框架,Java语言开发的,它支持定制化 SQL、存储过程以及高级映射。Mybatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。Mybatis可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(普通的JavaBeans)为数据库中的记录。它使用了ORM思想实现了结果集的封装。

ORM:Object Relational Mapping 对象关系映射。简单地说,就是把数据库表和实体类及实体类的属性对应起来,让我们可以操作实体类就实现操作数据库表。实体类中的属性和数据库表的字段名保持一致。

二、环境搭建

2.1 使用配置文件配置

具体步骤:

  • 第一步:创建Maven工程,并导入坐标
  • 第二步:创建实体类和dao的接口
  • 第三步:创建Mybatis的主配置文件 SqlMapConfig.xml
  • 第四步:创建映射配置文件 UserDao.xml
第一步:创建Maven工程

在这里插入图片描述

导入坐标,pom.xml文件:
<!--打包方式-->
<packaging>jar</packaging>

<dependencies>
    <!--使用mybatis,也需要导入mysql驱动jar包-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.5</version>
    </dependency>
    <!--mysql驱动-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.15</version>
    </dependency>
</dependencies>
第二步:创建实体类和dao的接口

src/main/java/com/king/dao目录下创建接口UserDao
src/main/java/com/king/domain目录下创建实体类User

第三步:创建Mybatis的主配置文件 SqlMapConfig.xml

在资源目录src/main/resources目录下创建SqlMapConfig.xml
SqlMapConfig.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">
<!--mybatis的主配置文件-->
<configuration>
    <!--配置环境-->
    <!--default是定义选择的默认值,命名没有强制要求,但是必须与environment标签的id值一致。-->
    <environments default="mysql">
        <!--配置mysql的环境-->
        <environment id="mysql">
            <!--配置事务类型-->
            <transactionManager type="JDBC"></transactionManager>
            <!--
            配置数据源(连接池),取值有3个
            POOLED:
            -->
            <dataSource type="POOLED">
                <!--配置连接数据库的4个基本信息-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql//localhost:3306/day01"/>
                <property name="username" value="root"/>
                <property name="password" value="88888888"/>
            </dataSource>

        </environment>
    </environments>

    <!--
    指定映射配置文件的文件,映射配置文件指的是每个dao独立的配置文件
    resource 是指定resource资源目录下的路径
    -->
    <mappers>
        <mapper resource="com/king/dao/UserDao.xml"/>
    </mappers>
</configuration>
第四步:创建映射配置文件 UserDao.xml

根据主配置文件mapper标签指定的resource路径,在资源目录resources下创建对应的文件。第三步中mapper标签指定的resource=resource="com/king/dao/UserDao.xml",那么在资源目录resources创建三级目录+文件:com/king/dao/UserDao.xml
UserDao.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">

<!--namespace 和 id 组合才能定位到sql语句-->
<!--namespace是UserDao的全限定类名-->
<mapper namespace="com.king.dao.UserDao">
    <!--
    配置查询所有
    id:是dao方法的名称,不能随便写!
    标签内是sql语句
    resultType:指定id方法的返回值类型
    -->
    <select id="findAll" resultType="com.king.domain.User">
        SELECT * FROM user
    </select>
</mapper>

映射配置文件中,namespace 和 id 属性的作用:
mybatis需要通过namespace找到指定的dao类,再通过id定位到方法需要执行的sql语句。
即:com.king.dao.UserDao类的findAll方法要执行 SELECT * FROM user 语句

文件目录:
在这里插入图片描述
2、环境搭建的注意事项

  • 第一:创建 UserDao.xml 和 UserDao.java 时,名称是为了和我们之前的知识保持一致。在Mybatis中,它把持久层的操作接口名称和映射文件叫做:Mapper。所以 UserDao 和 UserMapper是一样的。
  • 第二:在idea中创建目录Directory时,它和包package是不一样的。
    • 包package:com.king.dao 是三级目录
    • 目录Directory:com.king.dao 是一级目录。
    • 所以,如果使用Directory创建三级目录,需要分三次来创建。
  • 第三:Mybatis的映射配置文件UserDao.xml的位置必须和dao包结构相同。
  • 第四:映射配置文件的 mapper 标签 namespace 属性的取值,必须是 dao 接口的全限定类名!
  • 第五:映射配置文件的操作配置,id 属性的取值必须是 dao 接口的方法名!

总结:如此配置Mybatis环境的好处:
当我们遵从了第三、四、五点之后,在开发中就无需再写dao的实现类!!!

2.2 使用注解配置,简化配置

以下都是在 2.1 使用配置文件配置 基础上进行操作!

①修改SqlMapConfig.xml

<mappers>
	// 使用class属性指定被注解dao类的全限定类名
	<mapper class="com.king.dao.UserDao"/>
</mappers>

②删除dao类的映射配置文件:resources/com/king/dao/UserDao.xml
③给dao类方法添加注解,指定sql语句

public interface UserDao {
    @Select("SELECT * FROM user")
    List<User> findAll();
}

三、入门

测试dao方法:

//1.读取配置文件
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");

//2.创建SqlSessionFactory工厂
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);

//3.使用工厂生产SqlSession对象
SqlSession session = factory.openSession();

//4.使用SqlSession创建Dao接口的代理对象
UserDao userDao = session.getMapper(UserDao.class);

//5.使用代理对象执行方法
List<User> users = userDao.findAll();
for (User user : users) {
    System.out.println(user);
}

//6.释放资源
session.close();
in.close();
内容概要:本文深入探讨了Kotlin语言在函数式编程和跨平台开发方面的特性和优势,结合详细的代码案例,展示了Kotlin的核心技巧和应用场景。文章首先介绍了高阶函数和Lambda表达式的使用,解释了它们如何简化集合操作和回调函数处理。接着,详细讲解了Kotlin Multiplatform(KMP)的实现方式,包括共享模块的创建和平台特定模块的配置,展示了如何通过共享业务逻辑代码提高开发效率。最后,文章总结了Kotlin在Android开发、跨平台移动开发、后端开发和Web开发中的应用场景,并展望了其未来发展趋势,指出Kotlin将继续在函数式编程和跨平台开发领域不断完善和发展。; 适合人群:对函数式编程和跨平台开发感兴趣的开发者,尤其是有一定编程基础的Kotlin初学者和中级开发者。; 使用场景及目标:①理解Kotlin中高阶函数和Lambda表达式的使用方法及其在实际开发中的应用场景;②掌握Kotlin Multiplatform的实现方式,能够在多个平台上共享业务逻辑代码,提高开发效率;③了解Kotlin在不同开发领域的应用场景,为选择合适的技术栈提供参考。; 其他说明:本文不仅提供了理论知识,还结合了大量代码案例,帮助读者更好地理解和实践Kotlin的函数式编程特性和跨平台开发能力。建议读者在学习过程中动手实践代码案例,以加深理解和掌握。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值