前言
- “Mybatis"通过"SQL映射文件"操作"Mysql”,快速上手;
实操
使用"Windows 11"系统通过"IntelliJ IDEA"软件完成;
在"【Java框架-Mybatis】(01)- 代码 "的基础上完成;
【第一步:导数据库】
在"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】
接口方法
映射语句
结果测试