Java类的封装
利用lombok库函数,通过注解的方式简化类的形式
| @Data |
| @NoArgsConstructor |
| @AllArgsConstructor |
| public class User { |
| private Integer id; |
| private String name; |
| private Short age; |
| private Short gender; |
| private String phone; |
| } |
接口方法
查询
添加注解:@Select(String sql)
| |
| @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(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语句
-
需要在resources
文件夹中创建跟原始XxxMapper
文件相同的目录结构,如:resources/com/maximeshe/mapper/EmpMapper.xml
-
代码框架如下:
| <?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.maximeshe.mapper.EmpMapper"> |
| |
| </mapper> |
动态SQL
where, if
| <select id="list" resultType="com.maximeshe.pojo.Emp"> |
| select * |
| from emp |
| |
| <where> |
| |
| <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> |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人