MyBatis(二)对表执行CRUD操作

来源:互联网 发布:淘宝神器返利是真的吗 编辑:程序博客网 时间:2024/06/07 08:08

上一篇博文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
原创粉丝点击