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>
- 多条件查询和参数传递
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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!