MyBatis--05通过实现类完成dao层的开发

以下代码在MyBatis–04CRUD操作的基础上修改。

持久层接口修改为

package com.cncs.dao;

import com.cncs.domain.User;

import java.util.List;

public interface IUserDao {
    /**
     * 查询所有
     * @return
     */
    List<User> findAll();

    /**
     * 保存用户
     * @param user
     */
    void saveUser(User user);

    /**
     * 更新用户
     * @param user
     */
    void updateUser(User user);

    /**
     * 删除用户
     * @param userId
     */
    int deleteUser(int userId);

    /**
     * 查询一个
     * @param userId
     * @return
     */
    User findOne(int userId);

    /**
     * 查询总记录条数
     * @return
     */
    int findTotal();

}

新建持久层接口实现类UserDaoImpl

package com.cncs.dao.impl;

import com.cncs.dao.IUserDao;
import com.cncs.domain.User;
import org.apache.ibatis.session.SqlSession;

import java.util.List;

public class UserDaoImpl  implements IUserDao {

    private SqlSession sqlSession;

    public UserDaoImpl(SqlSession sqlSession) {
        this.sqlSession = sqlSession;
    }

    public List<User> findAll() {
        List<User> list = sqlSession.selectList("com.cncs.dao.IUserDao.findAll");
        return list;
    }

    public void saveUser(User user) {
        sqlSession.insert("com.cncs.dao.IUserDao.saveUser", user);
    }

    public void updateUser(User user) {
        sqlSession.update("com.cncs.dao.IUserDao.updateUser", user);
    }

    public int deleteUser(int userId) {
        return sqlSession.delete("com.cncs.dao.IUserDao.deleteUser", userId);
    }

    public User findOne(int userId) {
        return sqlSession.selectOne("com.cncs.dao.IUserDao.findOne", userId);
    }

    public int findTotal() {
        return sqlSession.selectOne("com.cncs.dao.IUserDao.findTotal");
    }
}

测试类修改为

package com.cncs.test;

import com.cncs.dao.IUserDao;
import com.cncs.dao.impl.UserDaoImpl;
import com.cncs.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;

public class MyBatisTest {
    private InputStream in;
    private SqlSession sqlSession;
    private IUserDao userDao;

    @Before //在测试方法之前执行
    public void init() throws IOException {
        //1.读取mybatis核心配置文件
        in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //2.创建工厂对象
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory sessionFactory = builder.build(in);
        //3.通过工厂对象构建SqlSession对象
        sqlSession = sessionFactory.openSession();
        //4.通过SqlSession对象创建代理对象
        userDao = new UserDaoImpl(sqlSession);
    }

    @After //在测试方法之后执行
    public void destory() throws IOException {
        sqlSession.commit();
        //6.释放资源
        sqlSession.close();
        in.close();
    }

    @Test
    public void findAll() throws IOException {
        //5.执行代理对象的方法
        List<User> userList = userDao.findAll();
        for (User user : userList) {
            System.out.println(user);
        }
    }

    @Test
    public void saveUser() {
        User user = new User();
        user.setUsername("枯木逢春");
        user.setBirthday(new Date());
        user.setSex("男");
        user.setAddress("海西省三亚市");
        System.out.println("保存之前"+user);
        userDao.saveUser(user);
        System.out.println("保存之后"+user);
        //需要手动提交
    }

    @Test
    public void updateUser() {
        User user = new User();
        user.setUsername("aaa");
        user.setBirthday(new Date());
        user.setSex("女");
        user.setAddress("海西省三亚市");
        user.setId(61);
        userDao.updateUser(user);
        //需要手动提交
    }

    @Test
    public void deleteUser() {
        System.out.println(userDao.deleteUser(61));
        //需要手动提交
    }

    @Test
    public void findOne() {
        User one = userDao.findOne(57);
        System.out.println(one);
    }

    @Test
    public void testFindTotal(){
        System.out.println(userDao.findTotal());
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值