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();
	}
}

也是剛學,如果有錯,希望指正!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章