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();
    }
    }

     

  • 相关阅读:
    python 线程之 数据同步 Queue
    python 线程之threading(五)
    python 线程之 threading(四)
    python 线程之 threading(三)
    php-属性和方法的重载
    wordpress-4.7.2-zh_CN页面加载慢
    php-__autoload()
    php-_toString()方法
    php-final
    php-parent::和self::
  • 原文地址:https://www.cnblogs.com/luliang888/p/11080576.html
Copyright © 2011-2022 走看看