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);
}
相关推荐
代码or搬砖22 分钟前
String字符串
android·java·开发语言
AM越.2 小时前
Java设计模式详解--装饰器设计模式(含uml图)
java·设计模式·uml
5980354152 小时前
【java工具类】小数、整数转中文大写
android·java·开发语言
JIngJaneIL2 小时前
基于java + vue个人博客系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot
吃喝不愁霸王餐APP开发者3 小时前
Java后端服务在对接全国性霸王餐API时的多数据中心部署与就近调用策略
java·开发语言
从心归零3 小时前
springboot-jpa的批量更新方法
java·spring boot·spring
这周也會开心3 小时前
128陷阱,==与equals区别
java·开发语言
TAEHENGV4 小时前
回收站模块 Cordova 与 OpenHarmony 混合开发实战
android·java·harmonyos
a努力。4 小时前
宇树Java面试被问:方法区、元空间的区别和演进
java·后端·面试·宇树科技
2501_916766544 小时前
【面试题1】128陷阱、==和equals的区别
java·开发语言