Mybatis接口式编程

1、接口式编程

原生:一个dao对应一个daoImpl

mybatis:一个xxxmapper接口对应一个xxxmapper.xml

2、SqlSession代表和数据库的一次会话,用完必须关闭

3、SqlSession和Connection一样都是线程不安全的(不能直接创建private SqlSession属性),每次使用都要创建新的对象

4、mapper接口没有实现类,但是mybatis会为这个接口生成一个代理对象

5、两个重要的配置文件

mybatis的全局配置文件:包含数据库连接池信息,事务管理器信息等系统运行环境

sql映射文件:保存了每一个sql语句的映射信息

 

创建实体类Employee.java

public class Employee implements Serializable{

    private Integer id;

    private String name;

    private String sex;

    private String email;

    private Department dept;

    public Employee() {

       super();

    }

    public Employee(Integer id, String name, String sex, String email) {

       super();

       this.id = id;

       this.name = name;

       this.sex = sex;

       this.email = email;

    }

    @Override

    public String toString() {

       return "Employee [id=" + id + ", name=" + name + ", sex=" + sex + ", email=" + email + "]";

    }

}

 

创建接口EmployeeMapper .java

public interface EmployeeMapper {

    // EmployeeMapper文件绑定,指定了传入的参数只能是Integer类型,返回值为Employee类型

    public Employee getEmpById(Integer id);

}

 

创建EmployeeMapper.xml映射文件

PS:若使用接口式编程,接口文件EmployeeMapper.java和映射文件EmployeeMapper.xml必须同名,且映射文件EmployeeMapper.xml名称空间namespace必须指定为接口文件EmployeeMapper.java的路径

<?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="dao.EmployeeMapper">

    <!-- public Employee getEmpById(Integer id) -->

    <select id="getEmpById" resultType="Employee">

        select * from employee where id = #{id}

    </select>

</mapper>

 

测试类

@Test

    public void test1() throws IOException{

//     SqlSession session = getSqlSessionFactory().openSession();

       String resource = "mybatis-config.xml";

       InputStream inputStream = Resources.getResourceAsStream(resource);

       SqlSessionFactory sqlSessionFactory =

              new SqlSessionFactoryBuilder().build(inputStream);

       SqlSession session = sqlSessionFactory.openSession();

       try{

           //   创建mapper对象,mybatis会为这个接口生成一个代理对象    

           EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);

           //添加

//         Employee employee = new Employee(null,"蜘蛛侠","","123@qq.com");

//         int result = mapper.addEmp(employee);

//         System.out.println("获取到的主键值为:"+employee.getId());

           //修改

//         Employee employee = new Employee(1,"张三","","123@qq.com");

//         mapper.updateEmp(employee);

           //删除

//         boolean result = mapper.deleteEmp(7);

          

           //查询

           Employee employee = mapper.getEmpById(1);

           //打印mapper和employee

           System.out.println(mapper);

           System.out.println(employee);

           session.commit();

       }

       finally{

           session.close();

       }

    }

 

测试结果

 

可以看到打印mapper的结果为org.apache.ibatis.binding.MapperProxy@26b3fd41,这就是一个代理对象

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值