Mybatis深入教程:从基础到高级

2023-12-17 14:46:24

1. 环境准备

在开始使用Mybatis之前,确保数据库环境已经准备就绪是非常关键的。

1.1 创建和初始化数据库表

我们首先创建一个名为tb_brand的表,并插入一些示例数据,以便于后续操作。

-- 删除tb_brand表,如果它存在
DROP TABLE IF EXISTS tb_brand;

-- 创建tb_brand表
CREATE TABLE tb_brand (
    id INT PRIMARY KEY AUTO_INCREMENT,
    brand_name VARCHAR(20),
    company_name VARCHAR(20),
    ordered INT,
    description VARCHAR(100),
    status INT
);

-- 向tb_brand表添加数据
INSERT INTO tb_brand (brand_name, company_name, ordered, description, status) VALUES
('三只松鼠', '三只松鼠股份有限公司', 5, '好吃不上火', 0),
('华为', '华为技术有限公司', 100, '华为致力于把数字世界带入每个人、每个家庭、每个组织,构建万物互联的智能世界', 1),
('小米', '小米科技有限公司', 50, 'are you ok', 1);

2. 实体类Brand

在Java项目中,实体类是数据库表的映射。这里我们创建Brand类以映射tb_brand表。

2.1 实体类定义

public class Brand {
    private Integer id;
    private String brandName;
    private String companyName;
    private Integer ordered;
    private String description;
    private Integer status;

    // 省略getter和setter方法
    // ...
}

3. 基础查询操作

在Mybatis中,查询操作是基本且常用的。我们将介绍如何执行基础的查询操作。

3.1 查询所有数据

public interface BrandMapper {
    List<Brand> selectAll();
}
<!-- BrandMapper.xml -->
<select id="selectAll" resultType="com.example.Brand">
    SELECT * FROM tb_brand;
</select>

3.2 查询单条数据

public interface BrandMapper {
    Brand selectById(int id);
}
<!-- BrandMapper.xml -->
<select id="selectById" resultType="com.example.Brand">
    SELECT * FROM tb_brand WHERE id = #{id};
</select>

4. 高级功能:解决字段映射问题

Mybatis中常见的一个问题是数据库字段和Java实体类属性的名称不一致。

4.1 使用resultMap进行字段映射

<resultMap id="brandMap" type="com.example.Brand">
    <result column="brand_name" property="brandName"/>
    <result column="company_name" property="companyName"/>
    <!-- 其他字段映射 -->
</resultMap>

5. CRUD操作

我们将探索如何使用Mybatis进行增删改查操作,这是数据库交互的核心部分。

5.1 添加数据

public interface BrandMapper {
    void add(Brand brand);
}
<insert id="add">
    INSERT INTO tb_brand (brand_name, company_name, ordered, description, status) 
    VALUES (#{brandName}, #{companyName}, #{ordered}, #{description}, #{status});
</insert>

5.2 修改数据

public interface BrandMapper {
    void update(Brand brand);
}
<update id="update">
    UPDATE tb_brand
    SET brand_name = #{brandName}, company_name = #{companyName},
    ordered = #{ordered}, description = #{description}, status = #{status}
    WHERE id = #{id};
</update>

5.3 删除数据

public interface BrandMapper {
    void deleteById(int id);
}
<delete id="deleteById">
    DELETE FROM tb_brand WHERE id = #{id};
</delete>

  1. 多条件查询和参数传递

Mybatis在处理复杂查询和多参数传递时表现出色。

6.1 实现多条件查询

public interface BrandMapper {
    List<Brand> selectByConditions(Map<String, Object> conditions);
}
<select id="selectByConditions" resultMap="brandMap">
    SELECT * FROM tb_brand
    <where>
        <if test="brandName != null">
            AND brand_name = #{brandName}
        </if>
        <if test="status != null">
            AND status = #{status}
        </if>
        <!-- 其他条件 -->
    </where>
</select>

6.2 参数传递的策略

public interface BrandMapper {
    List<Brand> selectByBrandNameAndStatus(@Param("brandName") String brandName, @Param("status") Integer status);
}

7. 使用注解简化操作

Mybatis的注解功能可以大大简化XML配置,使代码更加简洁。

7.1 注解的使用

public interface BrandMapper {
    @Select("SELECT * FROM tb_brand WHERE id = #{id}")
    Brand selectById(int id);
}

文章来源:https://blog.csdn.net/long1_1/article/details/135044086
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。