MyBatis学习笔记——05MyBatis开发原始dao

MyBatis学习笔记——05MyBatis开发原始dao

完整学习路线:https://blog.csdn.net/qq_40163148/article/details/89668242

今天我们讲mybatis开发原始的持久层(dao)

原始的dao由两部分组成接口和实现类

项目架构同样是我们上一节讲到的入门程序的架构
我们在com.lipengge.mybatis.dao里实现了dao的接口和实现类映射文件使用的是User.xml(入门程序的映射文件)

在这里插入图片描述

UserDao接口
package com.lipengge.mybatis.dao;

import java.util.List;

import com.lipengge.mybatis.bean.User;

public interface UserDao {
	public User findUserById(int id) throws Exception;//根据id查找用户
	public List<User> findUserByName(String name) throws Exception;//根据姓名模糊查询用户
	public void insertUserById(User user) throws Exception;//插入用户
	public void deleteUserById(int id) throws Exception;//根据id删除用户

}
UserDaoImpl
这里我们使用单例模式注入SqlSessionFactory(常用手法)
为什么不注入SqlSession因为它线程不安全
package com.lipengge.mybatis.dao;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import com.lipengge.mybatis.bean.User;

public class UserDaoImpl implements UserDao{
	private SqlSessionFactory sfb;
	
	public UserDaoImpl(SqlSessionFactory sfb) {
		this.sfb=sfb;
	}
   //根据id查找用户
	@Override
	public User findUserById(int id) throws Exception {
		SqlSession sqlSession = sfb.openSession();
		User selectOne = sqlSession.selectOne("test.findUserById",id);
		sqlSession.close();
		return selectOne;
	}

	@Override
	//根据姓名模糊查询用户
	public List<User> findUserByName(String name) throws Exception {
		SqlSession sqlSession = sfb.openSession();
		 List<User> selectList = sqlSession.selectList("test.findUserByName",name);
		 sqlSession.close();
		 return selectList;
	}

	@Override
	插入用户
	public void insertUserById(User user) throws Exception {
	    SqlSession sqlSession = sfb.openSession();
	    sqlSession.insert("test.insertUserById", user);
	    sqlSession.commit();//提交
	    sqlSession.close();
		
	}

	@Override
	///根据id删除用户
	public void deleteUserById(int id) throws Exception {
		 SqlSession sqlSession = sfb.openSession();
		 sqlSession.delete("test.deleteUserById",id);
		 sqlSession.commit();
		 sqlSession.close();
		
	}

}

测试类

在这里插入图片描述

package com.lipengge.mybatis.first;

import static org.junit.Assert.*;

import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;

import com.lipengge.mybatis.bean.User;
import com.lipengge.mybatis.dao.UserDaoImpl;

public class TestUserDaoImpl {
	
   private SqlSessionFactory ssf;
	@Before
	//这里使用JUnit测试所以设置单例模式而是在测试之前生成SqlSessionFactory
	public void setUp() throws Exception {
		String resource="SqlMapConfig.xml";//全局配置文件
		InputStream inputStream = Resources.getResourceAsStream(resource);
		ssf=new SqlSessionFactoryBuilder().build(inputStream);
	}

	@Test
	public void test() throws Exception {
		UserDaoImpl udi=new UserDaoImpl(ssf);
		System.out.println(udi.findUserById(6));
		System.out.println(udi.findUserByName("振川"));
		 User user=new User();
		 user.setUser_name("小刘");
		 user.setUser_age(22);
		 user.setUser_sex("女");
		 udi.insertUserById(user);
		 System.out.println(user.getId());
		 udi.deleteUserById(20);
		 
	}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值