mybatis --- 以接口的方式进行编程

前面一章 ,搭建好了mybatis,mysql的环境,并且实现了一个简单的查询。请注意,这种方式是用SqlSession实例来直接执行已映射的SQL语句: Book book=session.selectOne("com.mybatis.model.BookMapper.selectBookById"2);  我们来学习下接口方式的编程.

接口类IBookDao.java

package com.mybatis.dao;

import com.mybatis.model.Book;

public interface IBookDao {
	//这里的selectBookById必须和book.xml 配置的select id 对应
	 public Book selectBookById(int id);
}

book.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC 
    "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
    
<!--这块等于Dao接口的实现 namespace必须和接口的类路径一样-->
<mapper namespace="com.mybatis.dao.IBookDao">
  <!-- queryEmpById必须和接口中的方法名一样, 返回一个Emp 就是刚才的别名 ,如果不用别名要连路径一起写,麻烦-->
     <select id="selectBookById"  parameterType="int" resultType="Book">
          select * from books where id=#{id}
     </select>
</mapper>

mybatis的总配置文件没有什么变化.

接下来,稍微修改下Test.java.

package com.mybatis.test;

import java.io.IOException;

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 com.mybatis.dao.IBookDao;
import com.mybatis.model.Book;

public class Test {

	/***
	 * 获得MyBatis SqlSessionFactory
	 * SqlSessionFactory 负责创建SqlSession ,一旦创建成功,就可以用SqlSession实例来执行映射语句
	 * ,commit,rollback,close等方法
	 * @return
	 */
	private static SqlSessionFactory getSessionFactory(){
		SqlSessionFactory sessionFactory=null;
		String resource="configuration.xml";
		 try {
			sessionFactory=new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader(resource));
		} catch (IOException e) {
			e.printStackTrace();
		}
		return sessionFactory;
	}
	
	/**
	 * main 方法
	 * @param args
	 */
	public static void main(String[] args) {
          SqlSession session=getSessionFactory().openSession();
          //获得IBookDao 接口实例
          IBookDao bookDao=(IBookDao) session.getMapper(IBookDao.class);
          Book book=bookDao.selectBookById(1);
          System.out.println(book.getAuthor());
	}
}




原文地址:https://www.cnblogs.com/wuyida/p/6300377.html