在开始使用Mybatis之前,确保数据库环境已经准备就绪是非常关键的。
我们首先创建一个名为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);
在Java项目中,实体类是数据库表的映射。这里我们创建Brand
类以映射tb_brand
表。
public class Brand {
private Integer id;
private String brandName;
private String companyName;
private Integer ordered;
private String description;
private Integer status;
// 省略getter和setter方法
// ...
}
在Mybatis中,查询操作是基本且常用的。我们将介绍如何执行基础的查询操作。
public interface BrandMapper {
List<Brand> selectAll();
}
<!-- BrandMapper.xml -->
<select id="selectAll" resultType="com.example.Brand">
SELECT * FROM tb_brand;
</select>
public interface BrandMapper {
Brand selectById(int id);
}
<!-- BrandMapper.xml -->
<select id="selectById" resultType="com.example.Brand">
SELECT * FROM tb_brand WHERE id = #{id};
</select>
Mybatis中常见的一个问题是数据库字段和Java实体类属性的名称不一致。
<resultMap id="brandMap" type="com.example.Brand">
<result column="brand_name" property="brandName"/>
<result column="company_name" property="companyName"/>
<!-- 其他字段映射 -->
</resultMap>
我们将探索如何使用Mybatis进行增删改查操作,这是数据库交互的核心部分。
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>
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>
public interface BrandMapper {
void deleteById(int id);
}
<delete id="deleteById">
DELETE FROM tb_brand WHERE id = #{id};
</delete>
Mybatis在处理复杂查询和多参数传递时表现出色。
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>
public interface BrandMapper {
List<Brand> selectByBrandNameAndStatus(@Param("brandName") String brandName, @Param("status") Integer status);
}
Mybatis的注解功能可以大大简化XML配置,使代码更加简洁。
public interface BrandMapper {
@Select("SELECT * FROM tb_brand WHERE id = #{id}")
Brand selectById(int id);
}