首先我们在src下创建com.mybatis.Mapper(改了改了,叫MapInterface好了,不然名字重复总感觉不太舒服,下面图还没改回来,先不用管) 包,用于创建各种Mapper接口。然后我们在这个包里面新建一个接口叫UserMapper,如下图
接下来我们怎么让接口与xml文件联系起来呢?我们需要在xml文件中,在mapper标签中设定namespace属性为接口的全包名,如下图(这个.java的后缀不用写奥、刚开始我搞错了)
做完上述准备工作以后,我们就可以在接口中声明方法指定对应的sql语句了,声明的方法名要与对应sql语句的id相同,返回类型与参数类型也要相同,最后的UserMapper接口如下所示
package com.mybatis.Mapper; import com.mybatis.beans.User; import java.util.List; public interface UserMapper { public User selectUserById(Integer id); public List<User> selectUserByName(String username);//返回多个结果时用List public void insertUser(User u); public void updateUser(User u); public void deleteUserById(User u); }接着我们就来看看这个接口是如何用来执行sql语句的;
首先我们按照常规的方式得到SqlSession实例,然后调用session的getMapper()函数,其内部会自动生成一个实现对应接口的对象实例,用xml文件中的sql语句重写接口的方法,这个时候我们就可以直接使用了,具体代码如下:
package com.mybatis.test; import com.mybatis.Mappers.UserMapper; import com.mybatis.beans.User; 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 java.io.IOException; import java.io.InputStream; import java.util.List; public class HelloMyBatis { //入门程序 通过ID查询用户 @Test public void test() throws IOException { //读取配置文件 String resource="sqlMapConfig.xml"; InputStream in=Resources.getResourceAsStream(resource); //生成sqlSessionFactoryBuilder SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder(); //创建sqlSessionFactory SqlSessionFactory factory=builder.build(in); //生产一个sqlSession SqlSession session=factory.openSession(); //操作数据库 UserMapper um=session.getMapper(UserMapper.class); System.out.println("条件查询"); System.out.println("------------------"); User u=um.selectUserById(1); System.out.println(u); System.out.println("模糊查询"); System.out.println("------------------"); List<User> arr=um.selectUserByName("王"); for(User temp:arr){ System.out.println(temp); } //另外两个方法就不展示了,类似 } }最后的结果如下所示