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全栈知识,希望能够与大家共同进步。

相关推荐
小学鸡!几秒前
Spring Boot实现日志链路追踪
java·spring boot·后端
xiaogg367812 分钟前
阿里云k8s1.33部署yaml和dockerfile配置文件
java·linux·kubernetes
wan5555cn14 分钟前
周末之美:慢下来,拥抱生活的温柔
数据库
yumgpkpm25 分钟前
华为鲲鹏 Aarch64 环境下多 Oracle 、mysql数据库汇聚到Cloudera CDP7.3操作指南
大数据·数据库·mysql·华为·oracle·kafka·cloudera
逆光的July28 分钟前
Hikari连接池
java
1024小神28 分钟前
为已有nextjs项目添加supabase数据库,不再需要冗余后端
数据库
微风粼粼40 分钟前
eclipse 导入javaweb项目,以及配置教程(傻瓜式教学)
java·ide·eclipse
番茄Salad40 分钟前
Spring Boot临时解决循环依赖注入问题
java·spring boot·spring cloud
立志成为大牛的小牛1 小时前
数据结构——二十六、邻接表(王道408)
开发语言·数据结构·c++·学习·程序人生
天若有情6731 小时前
Spring MVC文件上传与下载全面详解:从原理到实战
java·spring·mvc·springmvc·javaee·multipart