MyBaits入门(二)mybaits动态操作及其增删改查

5 篇文章 0 订阅
5 篇文章 0 订阅

接上一篇博客代码基础进行MyBatis的动态操作

上一篇博客地址:https://blog.csdn.net/qq_41852212/article/details/88918780

mybaits动态操作

相比较于 dao 层开发 需要 UserDao 及它的实现类 还有 UserMapper.xml 。mapper 动态代理开发 只需要 一个接口 和 UserMapper.xml 加快了开发速度。所以采用动态代理的方式来进行操作数据库。还有注解等方式来操作数据库,会其中的一种即可,当然全都会那更好。

使用mybaits动态操作CUBD

1.新建一个接口

public interface UserMapper
{

	// 1 接口方法名 与mapper.xml 中的 要调用的sql 语句的id 要一致
	// 2 接口的形参类型需要与 mappe.xml parameterType 一致
	// 3 返回值类型也需要 与 resultType相一致
	// 4 mapper.xml 中 namespace 要与接口的全包名一致
	// 5 mapper 动态代理开发中 根据返回值类型自动选择 selectOne (id查询) selectList (模糊查询)

	public User selectUserById(Integer id);

	// public List<User> User selectUser(User user);
	// 再来一遍
	// 接口方法名要与 调用的sql的语句中的id 一致
	// 接口的类型要与 parameterType 一致
	// 返回值类型要与 resultType 一致

	public List<User> selectUserByName(String username);

	public void insertUser(User user);

	public void updateUser(User user);

	public void deleteUserById(int id);

}

接口中的方法的方法名字要与UserMapper.xml 中要调用的sql语句的id一致

接口中的形参类型要与UserMapper.xml 中parameterType 类型一致

接口的返回值类型要与resultType类型一致

UserMapper.xml 中namespace 要与接口的全包名一致

2.新建测试类 使用Junit 进行测试

查询用户

@Test
	//通过id查询用户
	public void Test1() throws IOException
	{
		String source = "sqlMapConfig.xml";
		// 读取配置文件
		InputStream in = Resources.getResourceAsStream(source);

		// 需要 sqlSeesionFactotyBuliber
		SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(in);

		// 生产一个sqlSession
		SqlSession session = ssf.openSession();

		UserMapper mapper = session.getMapper(UserMapper.class);

		User user = mapper.selectUserById(2);

		System.out.println(user);
		// 相比较于 dao 层开发 需要 UserDao 及它的实现类 还有 UserMapper.xml
		// mapper 动态代理开发 只需要 一个接口 和 UserMapper.xml 加快了开发速度
	}

通过新建一个 mapper对象来得到动态代理的接口

然后使用接口中的方法来查询

插入用户

@Test
	// 插入用户
	public void Test3() throws IOException
	{
		String source = "sqlMapConfig.xml";
		// 读取配置文件
		InputStream in = Resources.getResourceAsStream(source);

		// 需要 sqlSeesionFactotyBuliber
		SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(in);

		// 生产一个sqlSession
		SqlSession session = ssf.openSession();
		// 操作数据库
		UserMapper mapper = session.getMapper(UserMapper.class);
		User user = new User();
		user.setU_id(19);
		user.setU_username("小明");
		user.setU_password("1231323");
		user.setU_cid(1);
		user.setU_sex("1");
		mapper.insertUser(user);
		session.commit();这里一定要提交,不然数据进不去数据库中  
	}
	

在对数据库进行操作之后一定要 commit ,要不然会出现编译器运行成功而数据库没有变化的错误。

 

整个项目结构图如下

githup链接:https://github.com/wannengdek/MyBatis

完整代码如下:

package test;

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

import mapper1.UserMapper;

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.Test;

import bean.User;

public class MapperTest
{
	@Test
	public void Test1() throws IOException
	{
		String source = "sqlMapConfig.xml";
		// 读取配置文件
		InputStream in = Resources.getResourceAsStream(source);

		// 需要 sqlSeesionFactotyBuliber
		SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(in);

		// 生产一个sqlSession
		SqlSession session = ssf.openSession();

		// 操作数据库
		UserMapper mapper = session.getMapper(UserMapper.class);

		User user = mapper.selectUserById(2);

		System.out.println(user);
		// 相比较于 dao 层开发 需要 UserDao 及它的实现类 还有 UserMapper.xml
		// mapper 动态代理开发 只需要 一个接口 和 UserMapper.xml 加快了开发速度
	}

	@Test
	// 模糊查询
	public void Test2() throws IOException
	{
		String source = "sqlMapConfig.xml";
		// 读取配置文件
		InputStream in = Resources.getResourceAsStream(source);

		// 需要 sqlSeesionFactotyBuliber
		SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(in);

		// 生产一个sqlSession
		SqlSession session = ssf.openSession();

		// 操作数据库
		UserMapper mapper = session.getMapper(UserMapper.class);

		List<User> userlist = mapper.selectUserByName("王");

		for (User u : userlist)
		{
			System.out.println(u);
		}
	}

	@Test
	// 插入用户
	public void Test3() throws IOException
	{
		String source = "sqlMapConfig.xml";
		// 读取配置文件
		InputStream in = Resources.getResourceAsStream(source);

		// 需要 sqlSeesionFactotyBuliber
		SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(in);

		// 生产一个sqlSession
		SqlSession session = ssf.openSession();
		// 操作数据库
		UserMapper mapper = session.getMapper(UserMapper.class);
		User user = new User();
		user.setU_id(19);
		user.setU_username("小明");
		user.setU_password("1231323");
		user.setU_cid(1);
		user.setU_sex("1");
		mapper.insertUser(user);
		session.commit();这里一定要提交,不然数据进不去数据库中  
	}
	
	@Test
	//更新用户
	public void Test4() throws IOException
	{
		String source = "sqlMapConfig.xml";
		// 读取配置文件
		InputStream in = Resources.getResourceAsStream(source);

		// 需要 sqlSeesionFactotyBuliber
		SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(in);

		// 生产一个sqlSession
		SqlSession session = ssf.openSession();

		// 操作数据库
		UserMapper mapper = session.getMapper(UserMapper.class);

		User user= new User();
		user.setU_id(19);
		user.setU_username("小明");
		mapper.updateUser(user);	
		session.commit();

		// 相比较于 dao 层开发 需要 UserDao 及它的实现类 还有 UserMapper.xml
		// mapper 动态代理开发 只需要 一个接口 和 UserMapper.xml 加快了开发速度
	}
	@Test
	//删除
	public void Test5() throws IOException
	{
		String source = "sqlMapConfig.xml";
		// 读取配置文件
		InputStream in = Resources.getResourceAsStream(source);

		// 需要 sqlSeesionFactotyBuliber
		SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(in);

		// 生产一个sqlSession
		SqlSession session = ssf.openSession();

		// 操作数据库
		UserMapper mapper = session.getMapper(UserMapper.class);
		
		
		mapper.deleteUserById(19);
		session.commit();

		// 相比较于 dao 层开发 需要 UserDao 及它的实现类 还有 UserMapper.xml
		// mapper 动态代理开发 只需要 一个接口 和 UserMapper.xml 加快了开发速度
	}
}



如有不正之处 ,还请指正,万分感谢。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值