前面一章 ,搭建好了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()); } }