WEB基础--Mybatis

了解Mybatis

什么是Mybatis

市面上最流行的技术架构:SSM 他们代表了 Spring业务层框架,SpringMvc WEB层框架以及MyBatis数据库持久层框架。

MyBatis 作为一个数据库持久层框架,是基于ORM规范(对象关系映射) 。类似我们以前的JDBC 和 JPA。

为什么要学习Mybatis

这取决于市场的变化带动了技术的变更,当项目规模变大,用户体量增加,数据量增加,但是我们往往对数据的读写效率要求更高。JDBC的性能比较高但是用起来比较麻烦。JPA(不用写sql)开发速度快,但是由于自动生成SQL没法保证读写性能。 MyBatits作为一个半ORM框架它允许查询自己写SQL(只是把sql写到映射文件中XxxMapper.xml)。这样一来程序的性能就可以得到保证。同时MyBatis用起来也相对比较简单(比JPA要复杂一点,比JDBC简单)。

Mybatis与JDBC与JPA

Mybatis配置文件

Mybatis相关依赖

XML 复制代码
	<!-- mybatis核心包 -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.2.1</version>
    </dependency>
    <!-- mysql驱动包 -->
    <dependency>
         <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</artifactId>
         <version>5.1.26</version>
     </dependency>
     <!-- junit测试包 -->
     <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>4.12</version>
         <scope>test</scope>
     </dependency>
    <!-- https://mvnrepository.com/artifact/log4j/log4j -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>

Mybatis相关配置文件

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>
<!--    环境配置:数据库的配置环境(怎么连接数据库) ,
        可以配置多个环境对象 environment,多个数据库的连接配置,
        可以通过  default="development" 来切换默认的环境
-->
    <environments default="development">
        <environment id="development">
<!--            事务管理器,type="JDBC"使用JDBC的事务管理 "JdbcTransaction"  -->
            <transactionManager type="JDBC"/>
<!--            数据源配置 POOLED 连接池,对应 PooledDataSource-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>

<!--        <environment id="test">-->
<!--  		...	-->
<!--        </environment>-->
        
    </environments>
    <mappers>
        <mapper resource="hello/ProductMapper.xml"/>
    </mappers>
</configuration>

Mybatis常见用法

jdbc.properties

创建jdbc.properties文件

XML 复制代码
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///mybatis-hello
jdbc.username=root
jdbc.password=admin

使用jdbc.properties

XML 复制代码
<configuration>
<!--    加载properties-->
    <properties resource="jdbc.properties" />
    
<!--    链接数据库的配置环境-->
    <environments default="development">
<!--        开发环境-->
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

自动返回主键

mybatis的insert可以开启主键的自动返回,保存对象后,MyBatis会把对象的ID注入到对象中。

XML 复制代码
<insert id="insert" parameterType="com.mybatis.domain.Product"
            useGeneratedKeys="true" keyColumn="id" keyProperty="id">
    //...
</insert>    

给对象设置别名

在sql映射文件中我们在指定参数类型的时候使用的是实例类的全限定名,这没有什么问题,在MyBatis中可以为实体类取别名,在使用的时候可以通过别名来代表实体类。

在映射文件中(XxxMapper.xml),有时为了书写返回值和参数比较方便,会定义别名。就不用了写那么长了。

**内置别名:**当然系统以及给我们定义好了一些别名可以直接实现。可以把它叫做内置别名。

自定义别名:然后我们自己的类需要自己定义别名。

内置别名

自定义别名

定义自定义别名

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-->
    <properties resource="jdbc.properties" />
    
    <typeAliases>
        <typeAlias type="com.mybatis.domain.Product" alias="Product" />
<!--        <package name="com.mybatis.domain"/>-->
    </typeAliases>

使用自定义别名

XML 复制代码
<select id="getById" parameterType="long" resultType="Product">
    ...
</select>

写在最后

mybatis是一款常用的半ORM框架,在实际开发过程中也有着重要作用。本篇博文对mybatis做了简单的介绍以及一些简单的入门,相关的面试题笔者也在昨天进行了发布,感兴趣的朋友可以去看看。笔者小,中,大厂均有面试经历,每日分享JAVA全栈知识,希望能够与大家共同进步。

相关推荐
WeiXin_DZbishe3 小时前
基于springboot宠物领养系统-计算机毕设 附源码【课程设计】94217
vue.js·spring boot·python·django·php·课程设计
KIDULT°3 小时前
MySQL系列 (1):数据库原理
运维·数据库·mysql·云计算
kimnoic3 小时前
Python数据库学习心得:SQLite、MySQL、PostgreSQL优缺点
开发语言·python
我不是程序员三三3 小时前
透明加密软件偶发解密异常排错实录:文件时能打开时乱码
数据库·域智盾
snhna3 小时前
向量数据库深度实战:从 HNSW 到 pgvector、Milvus 选型与 RAG 落地
数据库·人工智能·python·postgresql·milvus
架构技术专栏3 小时前
Agent 工具调用:从工具声明到执行反馈
前端·人工智能·后端
vx_bisheyuange3 小时前
基于SpringBoot的体育商品推荐系统
spring boot·毕业设计
天行健,君子而铎3 小时前
数据分类分级的范式转换:从规则匹配到场景化高准确率一键部署
网络·数据库·安全
别动我齐刘海4 小时前
C++ 工程化学习
java·linux·前端·c++·学习·机器学习·机器人
码事漫谈4 小时前
你让AI干的活,它可能只干了十分之一——而你根本看不出来
后端