第一步
源代码目录下建一个与sql映射文件同名的接口,路径是com/diy/mappers/tb_usersMapper
package com.diy.mappers;
import com.diy.pojo.User;
import java.util.List;
public interface tb_usersMapper {
List<User> queryAll();
}
第二步
在映射文件所在的文件夹里新建一个与上面接口路径完全一致的目录
com/diy/mappers
将原来的sql语句映射文明mapper.xml拖入该目录,在编译后,这个xml将和接口的class文件在同一个目录下,这样就能用接口代理执行sql了
将映射文件的命名空间改成接口的全限名
复制路径当名称注意将正斜杠改成点
<?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">
<mapper namespace="com.diy.mappers.tb_usersMapper">
<select id="queryAll" resultType="com.diy.pojo.User">
select * from tb_users
</select>
</mapper>
第三步
在mybatis的核心配置文件里修改映射文件的路径,可以用单个文件的路径,但考虑到实际开发中映射文件过多,所以用包名
<mappers>
<!--此处加载sql的映射文件-->
<!-- <mapper resource="com/diy/mappers/tb_usersMapper.xml"/>-->
<package name="com.diy.mappers"/>
</mappers>
第四步
执行代码如下
package com.diy.mybatis;
import com.diy.mappers.tb_usersMapper;
import com.diy.pojo.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 java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class Demo2 {
public static void main(String[] args) throws IOException {
//1.还是加载核心配置文件,获取工厂对象
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//2.用工厂对象获取会话对象
SqlSession sqlsess = sqlSessionFactory.openSession();
/**获取自创接口的代理对象,用的是mybatis自带的方法getMapper,获取映射
* 然后用该接口的方法,也就是sql语句id同名方法,执行语句*/
tb_usersMapper uMapper = sqlsess.getMapper(tb_usersMapper.class);
List<User> urs = uMapper.queryAll();
System.out.println(urs);
//4.释放资源
sqlsess.close();
}
}