二、Mybatis增删改查

前言

在入门案例的基础上,完成增删改查操作。

一、创建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接收。可以通过数字大小判断是否执行成功。

猜你喜欢

转载自blog.csdn.net/rookie__zhou/article/details/108829940
今日推荐