亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Mybatis持久層框架學習入門

標簽:
Java 數據庫
概述

Mybatis是一款强大的Java持久层框架,它简化了数据库操作并提供了动态SQL生成等功能。本文将详细介绍Mybatis的使用方法和应用场景,帮助读者快速掌握Mybatis持久层框架的学习入门。

Mybatis基础介绍
Mybatis是什么

Mybatis是基于Java的持久层框架,它简化了数据库操作,提供了动态SQL生成、存储过程调用等功能,同时保持了SQL的灵活性。Mybatis提供了一种机制,可以把POJO与数据库表结构进行映射,同时还可以通过XML或注解的形式来配置SQL语句。

Mybatis的优点和应用场景

Mybatis的优点包括:

  • 与数据库的交互更加灵活,可以编写复杂的SQL语句
  • 执行效率高,因为SQL语句的执行是直接调用PreparedStatement执行
  • 支持存储过程的调用,这在某些特定场景下非常有用
  • 能够与Spring无缝集成,提供了方便的事务管理

Mybatis的应用场景包括:

  • 需要进行复杂查询的应用,如报表系统
  • 需要高性能数据库操作的系统
  • 需要支持多种数据库的系统
Mybatis的工作原理简介

Mybatis的工作原理主要分为以下几个步骤:

  1. 创建SqlSessionFactory对象:SqlSessionFactory是通过SqlSessionFactoryBuilder对象创建的,SqlSessionFactoryBuilder对象则从XML配置文件中解析出SqlSessionFactory对象。

  2. 创建SqlSession对象:SqlSession是通过SqlSessionFactory对象创建的,SqlSession对象是Mybatis进行数据库操作的核心对象。

  3. 获取Mapper对象:SqlSession对象提供了获取Mapper对象的方法,Mapper对象提供了对数据库进行操作的接口。

  4. 执行SQL:Mapper对象提供了各种SQL操作,包括增删改查等。

  5. 关闭SqlSession:执行完数据库操作后,需要关闭SqlSession对象,释放数据库连接资源。
Mybatis环境搭建
开发环境准备

为了搭建Mybatis环境,需要准备以下工具和环境配置:

  • JDK
  • IDE(如IntelliJ IDEA、Eclipse)
  • Maven(用于构建项目和管理依赖)
Maven项目添加Mybatis依赖

在项目中添加Mybatis依赖,通过在pom.xml文件中加入以下依赖:

<dependencies>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.7</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.22</version>
    </dependency>
</dependencies>
创建Mybatis配置文件

在src/main/resources目录下创建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.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
                <property name="username" value="root"/>
                <property name="password" value="password"/>
            </dataSource>
        </environment>
    </environments>
    <typeAliases>
        <typeAlias type="com.example.MyClass" alias="MyClass"/>
    </typeAliases>
</configuration>
Mybatis核心概念
SQL映射文件

SQL映射文件是Mybatis的核心配置文件,它定义了与数据库交互的SQL语句,包括增删改查等操作。SQL映射文件通常位于src/main/resources目录下,例如:

<?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.example.mapper.MyMapper">
    <select id="selectById" resultType="com.example.MyClass">
        SELECT * FROM mytable WHERE id = #{id}
    </select>
</mapper>
映射元素详解

Mybatis提供了多个映射元素,用于配置SQL语句,如selectinsertupdatedelete等。以下是一些常用的映射元素:

  • select:用于查询数据,返回结果集。
  • insert:用于插入数据,返回主键值。
  • update:用于更新数据。
  • delete:用于删除数据。
<mapper namespace="com.example.mapper.MyMapper">
    <select id="selectById" resultType="com.example.MyClass">
        SELECT * FROM mytable WHERE id = #{id}
    </select>
    <insert id="insert" parameterType="com.example.MyClass">
        INSERT INTO mytable (name, value) VALUES (#{name}, #{value})
    </insert>
    <update id="updateById" parameterType="com.example.MyClass">
        UPDATE mytable SET name = #{name}, value = #{value} WHERE id = #{id}
    </update>
    <delete id="deleteById" parameterType="int">
        DELETE FROM mytable WHERE id = #{id}
    </delete>
</mapper>
注解方式使用Mybatis

除了使用XML配置外,Mybatis还支持注解方式来定义SQL语句。使用注解需要在Mapper接口中定义方法,并使用对应的注解,例如:

public interface MyMapper {
    @Select("SELECT * FROM mytable WHERE id = #{id}")
    MyClass selectById(@Param("id") int id);
    @Insert("INSERT INTO mytable (name, value) VALUES (#{name}, #{value})")
    int insert(MyClass myClass);
    @Update("UPDATE mytable SET name = #{name}, value = #{value} WHERE id = #{id}")
    int updateById(MyClass myClass);
    @Delete("DELETE FROM mytable WHERE id = #{id}")
    int deleteById(int id);
}
Mybatis CRUD操作
增加数据

在Mybatis中添加数据可以通过insert标签或者注解@Insert来实现。下面是一个使用XML配置的例子:

<insert id="insert" parameterType="com.example.MyClass">
    INSERT INTO mytable (name, value) VALUES (#{name}, #{value})
</insert>

以及使用注解的方式:

@Insert("INSERT INTO mytable (name, value) VALUES (#{name}, #{value})")
int insert(MyClass myClass);
查询数据

查询数据可以通过select标签或者注解@Select来实现。下面是一个使用XML配置的例子:

<select id="selectById" resultType="com.example.MyClass">
    SELECT * FROM mytable WHERE id = #{id}
</select>

以及使用注解的方式:

@Select("SELECT * FROM mytable WHERE id = #{id}")
MyClass selectById(@Param("id") int id);
更新数据

更新数据可以通过update标签或者注解@Update来实现。下面是一个使用XML配置的例子:

<update id="updateById" parameterType="com.example.MyClass">
    UPDATE mytable SET name = #{name}, value = #{value} WHERE id = #{id}
</update>

以及使用注解的方式:

@Update("UPDATE mytable SET name = #{name}, value = #{value} WHERE id = #{id}")
int updateById(MyClass myClass);
删除数据

删除数据可以通过delete标签或者注解@Delete来实现。下面是一个使用XML配置的例子:

<delete id="deleteById" parameterType="int">
    DELETE FROM mytable WHERE id = #{id}
</delete>

以及使用注解的方式:

@Delete("DELETE FROM mytable WHERE id = #{id}")
int deleteById(int id);
动态SQL使用

动态SQL允许基于条件生成不同的SQL片段,Mybatis提供了ifchooseforeach等标签来实现动态SQL。

if标签

if标签用于条件判断,只有当条件满足时才会插入SQL片段。

<select id="selectByCondition" resultType="com.example.MyClass">
    SELECT * FROM mytable WHERE 1=1
    <if test="name != null">
        AND name = #{name}
    </if>
    <if test="value != null">
        AND value = #{value}
    </if>
</select>
choose标签

choose标签类似于Java中的switch语句,可以用于选择性地插入SQL片段。

<select id="selectByCondition" resultType="com.example.MyClass">
    SELECT * FROM mytable WHERE 1=1
    <choose>
        <when test="name != null">
            AND name = #{name}
        </when>
        <when test="value != null">
            AND value = #{value}
        </when>
        <otherwise>
            AND id = 1
        </otherwise>
    </choose>
</select>
foreach标签

foreach标签用于循环生成SQL片段,常用于处理数组或集合。

<insert id="batchInsert" parameterType="java.util.List">
    INSERT INTO mytable (name, value) VALUES
    <foreach item="item" index="index" collection="list" separator=",">
        (#{item.name}, #{item.value})
    </foreach>
</insert>
其他常用标签

除了以上标签,Mybatis还提供了settrimwhere等标签来实现更复杂的动态SQL。

  • set标签用于更新多个字段时,自动生成SET关键字。
<update id="updateById" parameterType="com.example.MyClass">
    <set>
        <if test="name != null">name = #{name},</if>
        <if test="value != null">value = #{value},</if>
    </set>
    WHERE id = #{id}
</update>
  • trim标签可以添加前缀、后缀等。
<select id="selectByCondition" resultType="com.example.MyClass">
    SELECT * FROM mytable
    <where>
        <if test="name != null">
            AND name = #{name}
        </if>
        <if test="value != null">
            AND value = #{value}
        </if>
    </where>
</select>
  • where标签用于处理WHERE关键字。
<select id="selectByCondition" resultType="com.example.MyClass">
    SELECT * FROM mytable
    <where>
        <if test="name != null">
            AND name = #{name}
        </if>
        <if test="value != null">
            AND value = #{value}
        </if>
    </where>
</select>
Mybatis与Spring集成
Mybatis-Spring简介

Mybatis-Spring是一个专门用于将Mybatis与Spring框架进行集成的工具,它提供了SqlSessionFactoryBeanSqlSessionTemplateMapperScannerConfigurer等类来帮助进行配置。

配置Spring与Mybatis集成

在Spring配置文件中引入Mybatis的相关配置:

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
    <property name="username" value="root"/>
    <property name="password" value="password"/>
</bean>

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.example.mapper"/>
</bean>
使用Mapper接口方式

使用Mapper接口方式,可以将SQL映射到接口的方法上。首先定义Mapper接口:

public interface MyMapper {
    void add(MyClass myClass);
    MyClass selectById(int id);
    void update(MyClass myClass);
    void delete(int id);
}

然后在Spring配置文件中加入MapperScannerConfigurer来扫描接口:

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.example.mapper"/>
</bean>

通过以上步骤,Mybatis的配置便与Spring框架成功集成,能够使用Spring的事务管理等功能。

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消