MyBatis(二)对表执行CRUD操作

上一篇博文MyBatis(一配置文件),我们讲了如何配置MyBatis配置文件,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对t_user表执行CRUD操作。本文中使用到的测试环境是上一篇博文中的测试环境。

使用MyBatis对表执行CRUD操作

1、创建数据库,新建一个t_user表,并添加数据
 SQL脚本如下:

create database db_user;
use db_user;
CREATE TABLE t_user(usre_id INT PRIMARY KEY AUTO_INCREMENT, user_name VARCHAR(20), user_age INT);
INSERT INTO t_user(user_name, user_age) VALUES('张三', 21);
INSERT INTO t_user(user_name, user_age) VALUES('李四', 22);
INSERT INTO t_user(user_name, user_age) VALUES('王五', 23);

这里写图片描述
2、新建工具类,用于获取SqlSession会话
这里写图片描述

public class DBUtil {
    /**
     * 每个数据库对应一个SqlSessionFactory
     */
    private static SqlSessionFactory sqlSessionFactory;

    /**
     * 1、静态块初始化,通过字节输入流读取配置文件
     */
    static {
        InputStream is=null;

        try {
            is=Resources.getResourceAsStream("sqlMapConfig.xml");
            /**
             * 2、获得SqlSessionFactory
             */
            sqlSessionFactory=new SqlSessionFactoryBuilder().build(is);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    /**
     * 3、通过SqlSessionFactory获得SqlSession会话
     */
    public static SqlSession getsqlsession() {
        return sqlSessionFactory.openSession();
    }

}

3、新建实体类:User
这里写图片描述

public class User {
    private int userId; //用户ID
    private String userName;    //用户名
    private int userAge;    //密码

    public int getUserId() {
        return userId;
    }
    public void setUserId(int userId) {
        this.userId = userId;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public int getUserAge() {
        return userAge;
    }
    public void setUserAge(int userAge) {
        this.userAge = userAge;
    }
    @Override
    public String toString() {
        return "User [userId=" + userId + ", userName=" + userName + ", userAge=" + userAge + "]";
    }

}

4、创建一个mapper包,专门用于存放定义操作user表的UserMapper接口和sql映射文件UserMapper.xml,如下图所示:
这里写图片描述
UserMapper接口:用于定义CRUD操作的方法

public interface UserMapper {
    /**
     * 根据ID查询单条用户信息
     * @param id 用户ID
     * @return User对象
     */
    public User getUserInfoById(int id);

    /**
     * 添加一条用户信息
     * @param name  用户名
     * @param age   用户年龄
     * @return 受影响行数,1 添加成功
     */
    public int addUser(@Param("name")String name,@Param("age")int age);

    /**
     * 根据ID删除用户
     * @param id 用户ID
     * @return 受影响行数,1 删除成功
     */
    public int delUserById(int id);

    /**
     * 根据ID修改用户信息
     * @param name 修改的用户名
     * @param id    需要修改用户的ID
     * @return  受影响行数,1 修改成功
     */
    public int updateUserByID(@Param("name")String name,@Param("id")int id);
}

UserMapper.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.zh.mapper.UserMapper">

<resultMap type="User" id="userInfo">
    <id property="userId" column="user_id" javaType="int"></id>
    <result property="userName" column="user_name" javaType="java.lang.String"/>
    <result property="userAge" column="user_age" javaType="int"></result>
</resultMap>


<!-- 查询单条用户信息 ,id为Mapper接口的方法名,-->
<select id="getUserInfoById" resultMap="userInfo">
    select * from t_user where user_id=#{id}
</select>

<!-- 添加用户 -->
<insert id="addUser">
    insert into t_user(user_name,user_age) VALUES(#{name},#{age})
</insert>

<!-- 根据ID删除用户 -->
<delete id="delUserById">
    delete from t_user where user_id=#{id}
</delete>

<!-- 根据ID修改用户信息 -->
<update id="updateUserByID">
    update t_user set user_name=#{name} where user_id=#{id}
</update>
</mapper>

5、创建一个业务层包,用于存放Service接口和ServiceImpl实现类,如下图:
这里写图片描述
UserService:定义CRUD方法,作用与UserMapper一致

public interface UserService {
    /**
     * 根据ID查询单条用户信息
     * @param id 用户ID
     * @return User对象
     */
    public User getUserInfoById(int id);

    /**
     * 添加一条用户信息
     * @param name  用户名
     * @param age   用户年龄
     * @return 受影响行数,1 添加成功
     */
    public int addUser(String name,int age);

    /**
     * 根据ID删除用户
     * @param id 用户ID
     * @return 受影响行数,1 删除成功
     */
    public int delUserById(int id);

    /**
     * 根据ID修改用户信息
     * @param name 修改的用户名
     * @param id    需要修改用户的ID
     * @return  受影响行数,1 修改成功
     */
    public int updateUserByID(String name,int id);

UserServiceImpl:业务实现类,重写UserService接口内的方法:

public class UserServiceImpl implements UserService{

    //获取sqlSession对象
    SqlSession sqlSession=DBUtil.getsqlsession();
    //通过sqlSession对象得到Mapper对象
    UserMapper mapper=sqlSession.getMapper(UserMapper.class);

    @Override
    public User getUserInfoById(int id) {
        User user = mapper.getUserInfoById(id);
        return user;
    }

    @Override
    public int addUser(String name, int age) {
        int result=mapper.addUser(name, age);
        //会话提交
        sqlSession.commit();
        return result;
    }

    @Override
    public int delUserById(int id) {
        int result = mapper.delUserById(id);
        sqlSession.commit();
        return result;
    }

    @Override
    public int updateUserByID(String name, int id) {
        int result = mapper.updateUserByID(name, id);
        sqlSession.commit();
        return result;
    }
}

6、创建一个测试类,用于测试方法较多,主方法用于麻烦,这里我们创建一个工具类:

public class UserAction extends TestCase{
    //获取业务层对象
    private static UserService service=new UserServiceImpl();

    /**
     * 获取单条用户信息
     */
    public void TestgetUserInfoById() {
        int id=1;
        User user=service.getUserInfoById(id);
        System.out.println(user);
    }

    /**
     * 添加数据
     */
    public void TestAddUser() {
        String name="马六";
        int age = 24;
        int result=service.addUser(name, age);
        if(result==1) {
            System.out.println("数据添加成功");
        }else {
            System.out.println("数据添加失败");
        }       
    }

    /**
     * 删除数据
     */
    public void TestDelUser() {
        int id=4;
        int result=service.delUserById(id);
        if(result==1) {
            System.out.println("数据删除成功");
        }else {
            System.out.println("数据删除失败");
        }
    }

    /**
     * 修改数据
     */
    public void TestUpdateUser() {
        String name="羊七";
        int id=5;
        int result=service.updateUserByID(name, id);
        if(result==1) {
            System.out.println("数据修改成功");
        }else {
            System.out.println("数据修改失败");
        }
    }
}

测试结果如下,控制台打印:
User [userId=1, userName=张三, userAge=21]
数据添加成功
数据删除成功
数据修改成功

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值