Mybatis学习笔记(二)Mapper的配置问题

时间:2022-07-23
本文章向大家介绍Mybatis学习笔记(二)Mapper的配置问题,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

学到今天发现Maper主要有两种一种是mapper.xml还有一种就是mapper.interface 大多数用的都是mapper.xml来进行操作 第一种mapper.xml文件中首先要定义的就是该mapper的namespace属性,类似于id一样,就是标识他唯一,之后就可以定义其中的许多标签比如select,delete等等, 一般普通的都具有id,parameterType等属性id就是一般的标识唯一,parameterType就是标识的参数类型 但是当是select标签的时候就会有返回类型,这之后又有两种了,一种是resultType就是简单的可以直接写出来的对象,另一种就是resultMap,这种返回的其实也是一个对象,但是可以对其进行映射 第二种mapper.interface,这就是一个接口,实现起来比mapper.xml要简单一些,只需要重载该接口中的insert,delete等方法即可 接下来就是两者在conf.xml文件中的配置了,也是今天困扰我很久的一个问题 如果是interface文件,配置起来就如下:

<mappers>
         <!-- 注册UserMapper映射接口-->
         <mapper class="me.gacl.mapping.UserMapperI"/>
    </mappers>

就类似于直接写出文件 二是xml文件是,配置起来就是这样的:

<mappers>
        <!-- 注册userMapper.xml文件, 
         userMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/userMapper.xml-->
         <mapper resource="me/gacl/mapping/userMapper.xml"/>
    </mappers>

可以明显看出来配置的就像一个路径 这就是两者的配置区别 之后就是两者在实际测试方法整的不同 这里作者直接贴代码了 xml文件如下:

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import me.gacl.domain.User;
import me.gacl.util.MyBatisUtil;

public class TestCRUDByXmlMapper {
	public static void testAdd()
	{
		SqlSession sqlSession=MyBatisUtil.getSqlSession(true);
		String statement="me.gacl.mapping.userMapper.addUser";
		User user=new User();
		user.setName("用户孤傲苍狼");
		user.setAge(20);
		int retResult=sqlSession.insert(statement, user);
		sqlSession.close();
		System.out.println(retResult);
	}
	public static void testUpdate()
	{
		SqlSession sqlSession=MyBatisUtil.getSqlSession(true);
		String statement="me.gacl.mapping.userMapper.updateUser";
		User user=new User();
		user.setId(3);
		user.setName("孤傲苍狼");
		user.setAge(25);
		int retResult=sqlSession.update(statement, user);
		sqlSession.close();
		System.out.println(retResult);
	}
	public static void testDelete()
	{
		SqlSession sqlSession=MyBatisUtil.getSqlSession(true);
		String statement="me.gacl.mapping.userMapper.deleteUser";
		int retResult=sqlSession.delete(statement, 5);
		sqlSession.close();
		System.out.println(retResult);
	}
	public static void testGetAll()
	{
		SqlSession sqlSession=MyBatisUtil.getSqlSession(true);;
		String statement="me.gacl.mapping.userMapper.getAllUsers";
		List<User>lstUsers=sqlSession.selectList(statement);
		sqlSession.close();
		System.out.println(lstUsers);
	}
	public static void main(String[] args) {
		testAdd();
		System.out.println("------------------------");
		testDelete();
		System.out.println("------------------------");
		testGetAll();
		System.out.println("------------------------");
		testUpdate();
		
	}
}

interface文件如下:

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import me.gacl.domain.User;
import me.gacl.mapping.UserMapperI;
import me.gacl.util.MyBatisUtil;

public class TestCRUDByAnnotationMapper {
	public static void testAdd()
	{
		SqlSession sqlSession=MyBatisUtil.getSqlSession(true);
		UserMapperI mapper=sqlSession.getMapper(UserMapperI.class);
		User user=new User();
		user.setName("nihaohoa");
		user.setAge(20);
		int add=mapper.add(user);
		sqlSession.close();
		System.out.println(add);
	}
    public static void testUpdate(){
        SqlSession sqlSession = MyBatisUtil.getSqlSession(true);
        //得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来
        UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);
        User user = new User();
        user.setId(3);
        user.setName("孤傲苍狼_xdp");
        user.setAge(26);
        //执行修改操作
        int retResult = mapper.update(user);
        //使用SqlSession执行完SQL之后需要关闭SqlSession
        sqlSession.close();
        System.out.println(retResult);
    }
    
    
    public static void testDelete(){
        SqlSession sqlSession = MyBatisUtil.getSqlSession(true);
        //得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来
        UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);
        //执行删除操作
        int retResult = mapper.deleteById(7);
        //使用SqlSession执行完SQL之后需要关闭SqlSession
        sqlSession.close();
        System.out.println(retResult);
    }
    
    
    public static void testGetUser(){
        SqlSession sqlSession = MyBatisUtil.getSqlSession();
        //得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来
        UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);
        //执行查询操作,将查询结果自动封装成User返回
        User user = mapper.getById(8);
        //使用SqlSession执行完SQL之后需要关闭SqlSession
        sqlSession.close();
        System.out.println(user);
    }
    
    
    public static void testGetAll(){
        SqlSession sqlSession = MyBatisUtil.getSqlSession();
        //得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来
        UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);
        //执行查询操作,将查询结果自动封装成List<User>返回
        List<User> lstUsers = mapper.getAll();
        //使用SqlSession执行完SQL之后需要关闭SqlSession
        sqlSession.close();
        System.out.println(lstUsers);
    }
    public static void main(String[] args) {
		testAdd();
		System.out.println("----------------------------");
		testDelete();
		System.out.println("----------------------------");
		testGetAll();
		System.out.println("----------------------------");
		testGetUser();
		System.out.println("----------------------------");
		testUpdate();
	}
}

也是刚学,如果有错,希望指正!!