MyBatis笔记

Java类的封装

利用lombok库函数,通过注解的方式简化类的形式

@Data //自动生成getter, setter, toString等方法
@NoArgsConstructor //自动生成无参构造函数
@AllArgsConstructor //自动生成全参构造函数
public class User {
private Integer id;
private String name;
private Short age;
private Short gender;
private String phone;
}

接口方法

查询

添加注解:@Select(String sql)

// 定义接口类:mapper/UserMapper.java
@Mapper //添加@Mapper注解
public interface UserMapper {
@Select("select * from user")
public List<User> list();
}
@Mapper
public interface UserMapper {
@Select("select * from emp where name like concat('%', #{name}, '%') and " +
"gender = #{gender} and entrydate between #{begin} and #{end} order by update_time desc")
public List<Emp> list(@Param("name")String name,
@Param("gender")Short gender,
@Param("begin")LocalDate begin,
@Param("end")LocalDate end);
}

删除

添加注解:@Delete(String sql)

@Mapper
public interface EmpMapper {
@Delete("delete from emp where id = #{id}")
public void delete(Integer id);
}

插入

添加注解:@Insert(String sql)

@Mapper
public interface EmpMapper {
@Insert("insert into emp(username, name, gender, image, job, entrydate, dept_id, create_time, update_time)\n" +
"values (#{username}, #{name}, #{gender}, #{image}, #{job}, #{entrydate}, #{deptId}, #{createTime}, #{updateTime})")
public void insert(Emp emp);
}
@Mapper
public interface EmpMapper {
//添加@Options注解,指定插入数据的主键输出为类中的指定属性
@Options(useGeneratedKeys = true, keyProperty = "id")
@Insert("insert into emp(username, name, gender, image, job, entrydate, dept_id, create_time, update_time)\n" +
"values (#{username}, #{name}, #{gender}, #{image}, #{job}, #{entrydate}, #{deptId}, #{createTime}, #{updateTime})")
public void insert(Emp emp);
}

XML映射文件

使用xml配置文件来编写SQL语句

  1. 需要在resources文件夹中创建跟原始XxxMapper文件相同的目录结构,如:resources/com/maximeshe/mapper/EmpMapper.xml

  2. 代码框架如下:

    <?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为完整的包名 -->
    <mapper namespace="com.maximeshe.mapper.EmpMapper">
    </mapper>

动态SQL

where, if

<select id="list" resultType="com.maximeshe.pojo.Emp">
select *
from emp
<!-- where标签,自动管理是否添加where关键字 -->
<where>
<!-- if标签 -->
<if test="name != null">
name like concat('%', #{name}, '%')
</if>
<if test="gender != null">
and gender = #{gender}
</if>
<if test="begin != null and end != null">
and entrydate between #{begin} and #{end}
</if>
</where>
order by update_time desc
</select>

update, set

<update id="update2">
update emp
<set>
<if test="username != null">
username = #{username},
</if>
<if test="name != null">
name = #{name},
</if>
<if test="gender != null">
gender = #{gender},
</if>
<if test="image != null">
image = #{image},
</if>
<if test="job != null">
job = #{job},
</if>
<if test="entrydate != null">
entrydate = #{entrydate},
</if>
<if test="deptId != null">
dept_id = #{deptId},
</if>
<if test="updateTime != null">
update_time = #{updateTime}
</if>
</set>
where id = #{id}
</update>

foreach

<delete id="deleteByIds">
delete from emp where id in
/*foreach标签*/
<foreach collection="ids" item="id" separator="," open="(" close=")">
#{id}
</foreach>
</delete>
posted @   MaximeSHE  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示