Mybatis语法解释

在使用Mybatis的时候,我们将查询语句写入.xml文件中,那具体的xml文件赢如何写呢?我们可以拿一个例子来解释:

1. 前提:

我们首先定义了java Bean:Color类

public class Color {

    private Integer id;
    private String name;
    private Integer parentId;
    private String imgUrl;

Color类对应的MySQL中的color表的字段一一对应,color表定义如下:

id,name,parent_id,img_url

2.  xml文件应如何写?

首先我们看到java Bean与数据库表中的字段是对应不上的,所以,在color.xml中我们首先应该使两者对应起来

方法:使用<resultMap  id="" type="">   </resultMap>映射两者关系

<mapper namespace="cn.hdu.li.core.dao.product.ColorDao">
      <!-- 定义resultMap
		type:ResultMap最终映射的java对象类型,可以使用别名
		id:resultMap的唯一标识
      -->
 <resultMap id="color" type="Color">
     <!--  property:类属性   column:字段名 -->
        <result property="id" column="id" />
        <result property="name" column="name" />
        <result property="parentId" column="parent_id" />
        <result property="imgUrl" column="img_url" />
  </resultMap>

那剩下的就是增删改查语句了,其中parameterType为输入参数,resultMap与resultType为返回类型

查:

    <!-- 根据主键查询 -->
    <select id="getColorByKey" resultMap="color" parameterType="hashMap">
        SELECT id,name,parent_id,img_url FROM bbs_color
        WHERE
        id=#{id}
    </select>

增:

<insert id="addColor" parameterType="Color">
        INSERT INTO bbs_color
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">
                id,
            </if>
            <if test="name != null">
                name,
            </if>
            <if test="parentId != null">
                parent_id,
            </if>
            <if test="imgUrl != null">
                img_url
            </if>
        </trim>
        VALUES
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">
                #{id},
            </if>
            <if test="name != null">
                #{name},
            </if>
            <if test="parentId != null">
                #{parentId},
            </if>
            <if test="imgUrl != null">
                #{imgUrl}
            </if>
        </trim>
    </insert>

删:

<!-- 根据主键批量删除 -->
    <delete id="deleteByKeys">
        DELETE FROM bbs_color
        WHERE
        id in
        <foreach collection="list" separator="," item="id" open="(" close=")">
            #{id}
        </foreach>
    </delete>
改:
 <!--修改品牌-->
    <update id="updateBrandByKey" parameterType="Brand">
        UPDATE bbs_brand
        <set>
            <if test="name!=null">
                name=#{name},
            </if>
            <if test="description!=null">
                description=#{description},
            </if>
            <if test="imgUrl!=null">
                img_url=#{imgUrl},
            </if>
            <if test="sort!=null">
                sort=#{sort},
            </if>
            <if test="isDisplay!=null">
                is_display=#{isDisplay}
            </if>
        </set>
        <where>
            id=#{id}
        </where>
    </update>

还有一个语句:<sql  >:可被其他语句引用的可重用语句块

  <!-- Select SQL -->
    <sql id="colorSelector">
        SELECT
        <if test="fields != null">
            ${fields}
        </if>
        <if test="fields == null">
            id,name,parent_id,img_url
        </if>
        FROM bbs_color
    </sql>

引用方法: 使用<sql>段的id进行引用即可

 <select id="getColorListWithPage" parameterType="ColorQuery" resultMap="color">
        <include refid="colorSelector" />
        <include refid="colorListWhere" />
        <include refid="colorListOrder" />
        <include refid="colorListLimit" />
    </select>




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Mybatis是一个Java持久层框架,它可以帮助我们更方便地操作数据库。Mybatis采用了SQL映射文件的方式来配置SQL语句,下面是一些基本的Mybatis语法解析: 1. SQL语句的映射 Mybatis将SQL语句和Java方法进行映射,我们需要在SQL映射文件中定义SQL语句和对应的Java方法。例如: ``` <select id="getUserById" parameterType="int" resultType="User"> SELECT * FROM users WHERE id = #{id} </select> ``` 这段代码表示将id为getUserById的SQL语句映射到一个名为getUserById的Java方法中,该方法的参数类型为int,返回类型为User类型。 2. 参数绑定 Mybatis使用#{}语法来绑定SQL语句中的参数,例如: ``` <select id="getUserById" parameterType="int" resultType="User"> SELECT * FROM users WHERE id = #{id} </select> ``` 在这个例子中,#{id}表示将Java方法中的id参数绑定到SQL语句中的id变量。 3. 结果映射 Mybatis使用resultType属性来指定Java对象的类型,例如: ``` <select id="getUserById" parameterType="int" resultType="User"> SELECT * FROM users WHERE id = #{id} </select> ``` 在这个例子中,resultType="User"表示将查询结果映射成一个User对象。 4. 动态SQL Mybatis支持动态SQL,可以根据不同的条件生成不同的SQL语句。例如: ``` <select id="getUser" parameterType="User" resultType="User"> SELECT * FROM users WHERE 1=1 <if test="id != null"> AND id = #{id} </if> <if test="name != null"> AND name = #{name} </if> </select> ``` 在这个例子中,根据User对象中的id和name属性生成不同的SQL语句。 5. 插入操作 Mybatis使用insert语句来执行插入操作,例如: ``` <insert id="insertUser" parameterType="User"> INSERT INTO users(id, name, age) VALUES(#{id}, #{name}, #{age}) </insert> ``` 这段代码表示将一个User对象插入到数据库中。 6. 更新操作 Mybatis使用update语句来执行更新操作,例如: ``` <update id="updateUser" parameterType="User"> UPDATE users SET name = #{name}, age = #{age} WHERE id = #{id} </update> ``` 这段代码表示将一个User对象更新到数据库中。 7. 删除操作 Mybatis使用delete语句来执行删除操作,例如: ``` <delete id="deleteUserById" parameterType="int"> DELETE FROM users WHERE id = #{id} </delete> ``` 这段代码表示根据id删除数据库中的一条记录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值