xml开发mybatis

1、XML映射文件定义规范:

XML文件的名称与Mapper接口名一致,并且放置在相同包下(同包同名)。

XML文件的namespace属性为Mapper接口全限定名一致。

XML文件中sql语句的id与Mapper接口中的方法名一致。

动态sql:

<if>:用于判断调价是否成立。使用test属性进行条件判断,如果条件为true,则拼接SQL。

<where>:where元素只会在子元素有内容的情况下才插入where子句。而且会自动去除子句的开头的AND或OR。

<set>:动态的在行首插入set关键字,并会删掉额外的逗号。(用在update语句中)

<foreach>:属性:collection:遍历的集合。

item:遍历出来的元素。

sparator:分隔符。

open:遍历开始前拼接的sql片段。

close:遍历结束后拼接的sql片段。

sql片段:

<sql>:定义可重用的sql片段。

<include>:通过属性refid ,指定包含的sql片段。

mybatis-config.xml文件配置

复制代码
<configuration>
    <settings>
<!--        输出mybatis的日志-->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
        <!--        开启数据库下划线与java驼峰的自动映射-->
        <setting name="mapUnderscoreToCamelCase" value="true"></setting>
    </settings>
    <typeAliases>
<!--    配置别名-->
        <typeAlias type="com.example.demo.pojo.Emp" alias="Emp"/>
        <package name="com.example.demo.pojo"/>
    </typeAliases>
</configuration>

xml映射文件:

复制代码
<mapper namespace="com.example.demo.mapper.EmpMapper">
<!--    列名和属性名的映射-->
    <resultMap id="EmpResultMap" type="Emp">
        <id property="id" column="id" />
        <result property="username" column="username"/>
        <result property="password" column="password"/>
        <result property="name" column="name"/>
        <result property="image" column="image"/>
        <result property="job" column="job"/>
        <result property="entrydate" column="entrydate"/>
        <result property="deptId" column="dept_id"/>
        <result property="createTime" column="create_time"/>
        <result property="updateTime" column="update_time"/>
    </resultMap>
    <sql id="insert">
        insert into emp(username,name,gender,image,job,entrydate,dept_id,create_time,update_time) values
    </sql>
    <update id="update" parameterType="Emp">
        update emp
        <set>
            <if test="username !=null">
                username=#{username},
            </if>
            <if test="name!=null">
                name=#{name},
            </if>
            <if test="image!=null">
                image=#{image},
            </if>
            <if test="gender!=null">
                gender=#{gender}
            </if>
        </set>
        where id=#{id}
    </update>
    <select id="selectAll" resultMap="EmpResultMap">
        select * from emp
    </select>
<!--    查找-->
    <select id="selectByCondition" resultMap="EmpResultMap">
        select username,name,gender,image,job from emp
        <where>
            <if test="name!=null">
                name like concat('%',#{name},'%')
            </if>
            <if test="gender!=null">
                and gender=#{gender}
            </if>
            <if test="startTime!=null and endTime!=null">
                and entrydate between #{startTime} and #{endTime}
            </if>
        </where>
        order by entrydate desc
    </select>
<!--    批量删除-->
    <delete id="deleteById">
        delete from emp where id in
        <foreach collection="list" item="id" separator="," open="("  close=")">
            #{id}
        </foreach>
    </delete>
<!--    批量插入-->
    <insert id="insertValues" parameterType="list">
        <include refid="insert"></include>
        <foreach item="emp" collection="list" separator=",">
            (#{emp.username},#{emp.name},#{emp.gender},#{emp.image},#{emp.job}
            ,#{emp.entrydate},#{emp.deptId},now(),now())
        </foreach>
    </insert>

</mapper>

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Emp {
    private Integer id;
    private String username;
    private String password;
    private String name;
    private Short gender;
    private String image;
    private Short job;
    private LocalDate entrydate;
    private Integer deptId;
    private LocalDateTime createTime;
    private LocalDateTime updateTime;
}

mapper接口文件:

复制代码
@Mapper
public interface EmpMapper {
    public int update(Emp emp);
    public List<Emp> selectAll();
    public List<Emp> selectByCondition(String name, Short gender, Date startTime,Date endTime);
    public void deleteById(List<Integer> ids);
    public void insertValues(List<Emp> emps);
}
相关推荐
用户3126874877203 分钟前
JVM 内存结构全链路:堆、栈、方法区、元空间
java
大漠孤烟s3 分钟前
7.mybatisplus学习-条件构造器、插件、通用枚举、多数据源环境、MybatisX
mybatis
IT枫斗者枫哥3 分钟前
Spring Boot导入返回409,为什么第一行还是入库了?
java·spring boot·后端
xiaoqiMikko3 分钟前
JVM 线上排查实战(五):升 JDK 17 后进程起不来,十几个老 GC 参数挨个实测(完结)
java·jvm
Flynt4 分钟前
Java 27 悄悄改了 3 个默认值,我在 1 核小机器上逐个验证了一遍
java·jvm·性能优化
天天被压力4 分钟前
【Python 量化取数指南 #09】Python 拿港股通数据:港股通成交与港股财报实测
java·人工智能·python
吃饱了得干活5 分钟前
数据放哪儿:从 HashMap 到一致性哈希
java·后端
SL_staff6 分钟前
四维穿透式齐套判断:JVS-APS在制造计划系统中的技术实现
java·spring boot·python
杨杨杨大侠6 分钟前
多 Agent 协作到底靠什么?从 Codex 内部机制到 A2A 企业服务
java·人工智能·agent
AI深栈8 分钟前
第 17 章 · 编排 AI 流程:StateGraph 节点、条件边与意图路由
java·人工智能