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);
}
相关推荐
憨子周1 小时前
2M的带宽怎么怎么设置tcp滑动窗口以及连接池
java·网络·网络协议·tcp/ip
霖雨2 小时前
使用Visual Studio Code 快速新建Net项目
java·ide·windows·vscode·编辑器
SRY122404192 小时前
javaSE面试题
java·开发语言·面试
Fiercezm3 小时前
JUC学习
java
无尽的大道3 小时前
Java 泛型详解:参数化类型的强大之处
java·开发语言
ZIM学编程3 小时前
Java基础Day-Sixteen
java·开发语言·windows
我不是星海3 小时前
1.集合体系补充(1)
java·数据结构
冰水°3 小时前
2.5_XXE(XML外部实体注入)
xml·安全·网络安全·xml外部实体注入·外部实体注入·xml漏洞
P.H. Infinity3 小时前
【RabbitMQ】07-业务幂等处理
java·rabbitmq·java-rabbitmq
爱吃土豆的程序员3 小时前
java XMLStreamConstants.CDATA 无法识别 <![CDATA[]]>
xml·java·cdata