【Java框架-Mybatis】(02) Mybatis通过SQL映射文件操作Mysql,快速上手 - 简易版

前言

  • “Mybatis"通过"SQL映射文件"操作"Mysql”,快速上手;

实操

【第一步:导数据库】

在"Idea"里查看"Mysql"信息(如下图)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

【第二步:创建实体】

创建实体类"A"用于参数映射(如下图)

在这里插入图片描述

实体类模板代码在下面代码框中(请CV

package pojo.entity;

import java.io.Serializable;

public class A implements Serializable {

   /**
    * id
    */
   private Long id;

   /**
    * 用户名
    */
   private String username;

   /**
    * 密码
    */
   private String password;

   /**
    * 昵称
    */
   private String nick;

   public Long getId() {
       return id;
   }

   public void setId(Long id) {
       this.id = id;
   }

   public String getUsername() {
       return username;
   }

   public void setUsername(String username) {
       this.username = username;
   }

   public String getPassword() {
       return password;
   }

   public void setPassword(String password) {
       this.password = password;
   }

   public String getNick() {
       return nick;
   }

   public void setNick(String nick) {
       this.nick = nick;
   }

   @Override
   public String toString() {
       return "A{" +
               "id=" + id +
               ", username='" + username + '\'' +
               ", password='" + password + '\'' +
               ", nickname='" + nick + '\'' +
               '}';
   }

}

【第三步:定义方法】

在接口"DemoMapper"里写操作方法(如下图)

在这里插入图片描述

【第四步:完成映射】

在"DemoMapper.xml"里添加语句(如下图)

在这里插入图片描述

【第五步:进行测试】

在"DemoMapperTests"里添加方法(如下图)

在这里插入图片描述

罗列

【增:基础】

接口方法

/**
 * 【增】-基础
 *
 * @param a 表"a"对应实体类
 * @return 受影响的行数
 */
int insert(A a);

映射语句

<!--int insert(A a);-->
<insert id="insert" useGeneratedKeys="true" keyColumn="id">
    INSERT INTO
        a(
          username,
          password,
          nick
        )VALUES (
          #{username},
          #{password},
          #{nick}
        )
</insert>

结果测试

/**
 * 测试"insert"
 */
@Test
public void testInsert() {
    System.out.println("测试方法开始执行!");
    A a = new A();
    a.setNick("nick_1");
    a.setUsername("username_1");
    a.setPassword("123_1");
    System.out.println(mapper.insert(a));
}

【删:基础】

接口方法

/**
 * 【删】-基础
 * 通过"id"删除单个数据
 *
 * @param id "id"
 * @return 受影响的行数
 */
int deleteById(int id);

映射语句

<!--int deleteById(int id);-->
<delete id="deleteById">
    DELETE FROM
        a
    WHERE
        id=#{id}
</delete>

结果测试

/**
 * 测试"deleteById"
 */
@Test
public void testDeleteById() {
    System.out.println("测试方法开始执行!");
    System.out.println(mapper.deleteById(8));
}

【删:进阶】

接口方法

/**
 * 【删】-进阶
 * 通过"id"批量删除数据
 *
 * @param ids 多个"id"
 * @return 受影响的行数
 */
int deleteByIds(int... ids);

映射语句

<!--int deleteByIds(Long[] ids);-->
<delete id="deleteByIds">
    DELETE FROM
        a
    WHERE
        id in
        (
    <foreach collection="array" item="id" separator=",">
        #{id}
    </foreach>
        )
</delete>

结果测试

/**
 * 测试"deleteByIds"
 */
@Test
public void testDeleteByIds() {
    System.out.println("测试方法开始执行!");
    System.out.println(mapper.deleteByIds(10, 11, 15));
}

【改:基础】

接口方法

/**
 * 【改】-基础
 * 通过"id"修改昵称
 *
 * @param id   "id"
 * @param nick 昵称
 * @return 受影响的行数
 */
int updateNickById(@Param("id") int id, @Param("nick") String nick);

映射语句

<!--int updateNickById(int id, String nick);-->
<update id="updateNickById">
    UPDATE
        a
    SET
        nick=#{nick}
    where
        id=#{id}
</update>

结果测试

/**
 * 测试"updateNickById"
 */
@Test
public void testUpdateNickById() {
    System.out.println("测试方法开始执行!");
    System.out.println(mapper.updateNickById(9,"change" ));
}

【改:进阶】

接口方法

/**
 * 【改】-进阶
 * 通过"id"动态修改数据
 *
 * @param a 表"a"对应实体类
 * @return 受影响的行数
 */
int updateById(A a);

映射语句

<!--int updateById(A a);-->
<update id="updateById">
    UPDATE
        a
    <set>
        <if test="username != null">
            username=#{username},
        </if>
        <if test="password != null">
            password=#{password},
        </if>
        <if test="nick != null">
            nick=#{nick},
        </if>
    </set>
    WHERE
    id=#{id}
</update>

结果测试

/**
 * 测试"updateById"
 */
@Test
public void testUpdateById() {
    System.out.println("测试方法开始执行!");
    A a = new A();
    a.setId(16);
    a.setUsername("my name is username...");
    a.setPassword("2000000000000000000000");
    System.out.println(mapper.updateById(a));

【查:基础】

接口方法

/**
 * 【查】-基础
 * 根据"id"查询单个数据
 *
 * @param id "id"
 * @return 数据列表
 */
A getById(int id);

映射语句

<!--A getById(int id);-->
<select id="getById" resultType="pojo.entity.A">
    SELECT
        *
    FROM
        a
    WHERE
        id=#{id}
</select>

结果测试

/**
 * 测试"getById"
 */
@Test
public void testGetById() {
    System.out.println("测试方法开始执行!");
    System.out.println(mapper.getById(9));
}

后记

【xx:xx】

接口方法


映射语句


结果测试


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SUNxRUN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值