zoukankan      html  css  js  c++  java
  • MyBatis(四)映射文件 之 注解开发

    一、注解开发

      在面向接口开发中,我们可以在接口中声明方法,然后通用配置其对应的SQL映射文件来实现增删改查,当我们面对一些简单的SQL语句时,还有一种更简单的开发方式,那就是通过注解开发,省略掉SQL映射文件。

      使用注解开发:

    public interface EmployeeMapperAnnotation {
    
        @Select("select * from tbl_employee")
        public List<Employee> getEmps();
    
        @Select("select * from tbl_employee where id=#{id}")
        public Employee getEmpById(Integer id);
    
        @Insert("insert into tbl_employee(`last_name`, `email`, `gender`) values(#{lastName}, #{email}, #{gender})")
        public int addEmp(Employee emp);
    
        @Update("update tbl_employee set `last_name` = #{lastName}, `email` = #{email}, `gender` = #{gender} where id = #{id}")
        public int update(Employee emp);
    
        @Delete("delete from tbl_employee where id = #{id}")
        public int deleteEmp(Integer id);
    
    }

      测试:

         public SqlSessionFactory getsqlSessionFactory() throws IOException {
              String resource = "mybatis-config.xml";
              InputStream inputStream = Resources.getResourceAsStream(resource);
              SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
              return sqlSessionFactory;
         }
         /**
          * 注解方式
          * @throws IOException
          */
         @Test
         public void testAnnotation() throws IOException {
              //1、获取 sqlSessionFactory
              SqlSessionFactory sqlSessionFactory = getsqlSessionFactory();
    
              //2、获取 sqlSession 实例,能直接执行已经映射的 SQL 语句
              SqlSession sqlSession = sqlSessionFactory.openSession();
    
              try {
                   //3、获取接口的实现类对象
                   EmployeeMapperAnnotation mapper = sqlSession.getMapper(EmployeeMapperAnnotation.class);
    
                   List<Employee> emps = mapper.getEmps();
                   System.out.println("---查询列表信息---");
                   emps.forEach(System.out::println);
    
                   Employee emp = mapper.getEmpById(1);
                   System.out.println("---查询员工号为1的信息:---");
                   System.out.println(emp);
    
                   int i = mapper.addEmp(new Employee(null, "Tom", "1", "Tom@126.com"));
                   System.out.println("插入数据后结果为:" + i);
    
                   int j = mapper.update(new Employee(21, "Jerry", "0", "Jerry@126.com"));
                   System.out.println("更新数据后结果为:" + j);
    
                   mapper.deleteEmp(4);
    
                   sqlSession.commit();
    
              } finally {
                   sqlSession.close();
              }
         }

      对于简单的 SQL 语句,可以直接使用注解进行开发,也可以结合注解与配置文件一起使用,但还是建议使用配置文件的方式,这样可以防止硬编码,实现解耦。

  • 相关阅读:
    PHP实现邮件的自动发送
    为PostgreSQL的表自动添加分区
    django
    django的logging模块
    job
    python 类的方法带的self理解
    java
    choice_set的理解
    django
    proxy_next_upstream带来的坑和加载sticky模块
  • 原文地址:https://www.cnblogs.com/niujifei/p/15238905.html
Copyright © 2011-2022 走看看