前言
在入门案例的基础上,完成增删改查操作。
一、创建Mapper接口。
package com.zhy.dao;
import com.zhy.entity.User;
import java.util.List;
import java.util.Map;
public interface UserMapper {
//查询所有用户
List<User> getUserList();
//根据id查询用户
User getUserById(Integer id);
//新增用户
Integer addUser(User user);
//根据id删除用户信息
Integer deleteUserById(Integer id);
//根据id修改用户信息
Integer updateUserById(User user);
//根据id修改用户信息,使用map
Integer updateUserById2(Map<String, Object> map);
//根据name模糊查询
List<User> getUserLikeName(String name);
}
二、编写Mapper.xml。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhy.dao.UserMapper">
<!--查询所有用户信息-->
<select id="getUserList" resultType="com.zhy.entity.User">
SELECT id,name,password,telephone,gender FROM user
</select>
<!--根据id查询用户信息-->
<select id="getUserById" resultType="com.zhy.entity.User" parameterType="Integer">
SELECT id,name,password,telephone,gender FROM user WHERE id=#{id}
</select>
<!--添加用户信息-->
<insert id="addUser" parameterType="com.zhy.entity.User">
INSERT INTO user(id,name,password,telephone,gender)
VALUES (#{id},#{name},#{password},#{telephone},#{gender})
</insert>
<!--根据id删除用户信息-->
<delete id="deleteUserById" parameterType="Integer">
DELETE FROM user WHERE id=#{id}
</delete>
<!--根据id更新用户信息-->
<update id="updateUserById" parameterType="com.zhy.entity.User">
UPDATE user SET name=#{name},password=#{password},telephone=#{telephone},gender=#{gender} WHERE id=#{id}
</update>
<!--通过map集合的方式通过id更新用户信息,好处是不需要通过把对象的信息全部写入,只需要写入更新的部分-->
<update id="updateUserById2" parameterType="Map">
UPDATE user SET name=#{name} WHERE id=#{id}
</update>
<!--通过姓名模糊查询用户信息-->
<select id="getUserLikeName" resultType="com.zhy.entity.User">
SELECT id,name,password,telephone,gender FROM user WHERE name LIKE "%"#{name}"%"
</select>
</mapper>
三、编写测试类。
package com.zhy.dao;
import com.zhy.entity.User;
import com.zhy.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class UserMapperTest {
//1.查询所有用户信息
@Test
public void test1() {
//1.获取sqlSession
try (SqlSession sqlSession = MybatisUtils.getSqlSession()) {
//2.获取接口
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//3.执行sql
List<User> userList = mapper.getUserList();
//4.获取数据并遍历
for (User user : userList) {
System.out.println(user);
}
}
}
//2.根据id查询用户信息
@Test
public void test2() {
//1.获取sqlSession
try (SqlSession sqlSession = MybatisUtils.getSqlSession()) {
//2.获取接口
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//3.执行sql
User use = mapper.getUserById(2);
//4.打印
System.out.println(use);
}
}
//3.添加用户信息
@Test
public void test3() {
//1.获取sqlSession
try (SqlSession sqlSession = MybatisUtils.getSqlSession()) {
//2.获取接口
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//3.执行sql
Integer integer = mapper.addUser(new User(9, "周八宇", "123456", "12345678901", "女"));
//4.打印
System.out.println(integer);
//5.提交
sqlSession.commit();
}
}
//4.根据id删除用户信息
@Test
public void test4() {
//1.获取sqlSession
try (SqlSession sqlSession = MybatisUtils.getSqlSession()) {
//2.获取接口
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//3.执行sql
Integer integer = mapper.deleteUserById(12);
//4.打印
System.out.println(integer);
//5.提交
sqlSession.commit();
}
}
//5.根据id修改用户信息
@Test
public void test5() {
//1.获取sqlSession
try (SqlSession sqlSession = MybatisUtils.getSqlSession()) {
//2.获取接口
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//3.执行sql
Integer integer = mapper.updateUserById(new User(9, "周九宇", "123456", "10000000000", "男"));
//4.打印
System.out.println(integer);
//5.提交
sqlSession.commit();
}
}
//6.使用map,根据id修改用户信息
@Test
public void test6() {
//1.获取sqlSession
try (SqlSession sqlSession = MybatisUtils.getSqlSession()) {
//2.获取接口
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//3.创建map集合,添加数据
Map<String, Object> hashMap = new HashMap<>();
hashMap.put("name", "小二");
hashMap.put("id", 9);
//4.执行sql
mapper.updateUserById2(hashMap);
//5.提交
sqlSession.commit();
}
}
//7.通过name模糊查询用户信息
@Test
public void test7() {
//1.获取sqlSession
try (SqlSession sqlSession = MybatisUtils.getSqlSession()) {
//2.获取接口
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//3.执行sql
List<User> userList = mapper.getUserLikeName("二");
//4.遍历集合
for (User user : userList) {
System.out.println(user);
}
}
}
}
注意
Mapper接口中的增删改返回值类型只能是数字类型,用Integer接收。可以通过数字大小判断是否执行成功。