从面向接口的方面,修改Hello World程序
首先先建立一个接口EmployeeMapper,在接口中写如下代码:
public interface EmployeeMapper{
public Employee getEmpById(Integer id);
}
EmployeeMapper.xml中的代码,其中namespace不再是自己写的 ,而是接口的全类名,将接口与配置文件进行绑定,将id 与方法名也进行绑定
<?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.guigu.mybatis.EmployeeMapper">
<!--namespace为命名空间, id为唯一标识,resultType返回值类型用类全路径,#{id}从传递的参数中取出id 值>
<select id="getEmpById" resultType="com.guigu.mybatis.Employee">
select id,last_name lastName,email,gender from tbl_employee where id = #{id}
</select>
</mapper>
写一个测试方法代码如下
public void test(){
String source="mybatis-config.xml";
InputStream inputstream=Resource.getResourceAsStream(source);
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputstream);
SqlSession sqlSession=sqlSessionFactory.openSession();
try{
//获取接口的实现类对象,如果现实绑定,会为接口自动创建一个代理对象,代理对象进行增删改查
EmployeeMapper mapper=sqlSession.gerMapper(EmployeeMapper.class);
//接口的实现类对象调用方法
Employee employee=mapper.getEmpById(1);}
finally{
sqlSession.close();}
}
注:接口式编程
1.接口mapper—》xxMapper.xml
2.sqlsession 代表和数据库一次会话,用完必须关闭
3.sqlsession和connection 一样都是非线程安全,每次使用都应该获取对象,不要放在共享中
4.mapper接口没有实现类,但是mybatis会为这个接口生成一个代理对象
5.两个重要的配置文件,mybatis-config.xml是全局配置文件
数据库连接池信息,事务管理器信息等。。系统运行环境
SQL映射文件必须有,保存了每一个SQL语句的映射信息