zoukankan      html  css  js  c++  java
  • MyBatis-接口式编程

    》1. 接口式编程:当接口和xml文件动态绑定时,MyBatis会为接口自动创建一个代理对象,通过代理对象去调用相应的方法。好处:解耦和,更安全的类型检查,明确的返回值
      原生:    IDao  ==>  DaoImpl
      Mybatis:  IDao  ==>  xxMapper.xml
    》2.SqlSessionFactory:代表和数据库的一次会话,用完必须关闭;
      SqlSessionFactory和Connection一样都是非线程安全的,每次使用都应该去获取新的对象;

    1. 创建一个接口:

    public interface EmployeeMapper {
        public Employee getEmpById(Long id) throws SQLException;
        public boolean add(Employee employee) throws SQLException ;
        public boolean edit(Employee employee) throws SQLException ;
        public boolean remove(Long id) throws SQLException ;
    }

    2. 创建Mapper映射文件:

      》1.namespace:必须为接口的全类名
      》2.sqlId与接口的方法名保持一致

    <?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">
    <!-- 1.namespace:必须为接口的全类名 -->
    <mapper namespace="cn.ll.mybatis.dao.EmployeeMapper">
    <!-- 2.sqlId与接口的方法名保持一致 -->
    <!-- public Employee getEmpById(Long id) -->
    <select id="getEmpById" resultType="Employee">
    select * from employee where eid = #{id}
    </select>
    <!-- public boolean add(Employee employee) -->
    <insert id="add" useGeneratedKeys="true" keyProperty="eid" >
    INSERT INTO employee(name,gender,email) VALUES(#{name},#{gender},#{email})
    </insert>
    <!-- public boolean edit(Employee employee) -->
    <update id="edit" >
    UPDATE employee SET name=#{name},gender=#{gender},email=#{email} WHERE eid=#{eid}
    </update>
    <!-- public boolean remove(Long id) -->
    <delete id="remove" >
    DELETE FROM employee WHERE eid=#{eid}
    </delete>
    </mapper>

    3. 加载配置文件进行测试:

    @Test
    public void test1() throws Exception {
    String resource = "mybatis/mybatis-config.xml";
    InputStream resourceAsStream = Resources.getResourceAsStream(resource);
    //1.获取SqlSessionFactory对象
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
    //2.获取SqlSession对象
    SqlSession session = sqlSessionFactory.openSession();
    try{//3.获取接口的实现类对象,当接口和xml文件动态绑定时,MyBatis会为接口自动创建一个代理对象,通过代理对象去调用相应的方法
    EmployeeMapper employeeMapper = session.getMapper(EmployeeMapper.class) ;
    Employee employee = employeeMapper.getEmpById(1L) ;
    System.out.println(employeeMapper + " :" + employee);
    }finally {
    session.close();
    }
    }

     

  • 相关阅读:
    while循环和do while循环的基本使用和区别
    less框架简介
    css关联选择器大致类型总结
    渐进增强和优雅降级
    行,行内元素与块级元素有什么不同?
    for循环的大概遍历运用
    JDBC连接mysql数据库并进行简单操作
    Java实现杨辉三角
    replaceAll() 方法
    java抽象类和接口的区别
  • 原文地址:https://www.cnblogs.com/luliang888/p/11080576.html
Copyright © 2011-2022 走看看