zoukankan      html  css  js  c++  java
  • MyBatis-08-使用注解开发

    8、使用注解开发

    8.1、面向接口编程

    面向接口编程的根本原因:解耦,可拓展,提高复用,分层开发中、上层不用管具体的实现,大家都遵守共同的标准,使得开发变得容易,规范性好

    8.2、使用注解开发

    1. 注解在接口上实现

      @Select(value = "select * from user")
      List<User> getUsers();
      
    2. 需要在核心配置文件中绑定接口!

      <!--绑定接口-->
      <mappers>
          <mapper class="rui.dao.UserMapper"/>
      </mappers>
      
    3. 测试

    public class UserMapperTest {
        @Test
        public void test(){
            SqlSession sqlSession = MyBatisUtils.getSqlSession();
            //底层主要应用反射
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            List<User> users = mapper.getUsers();
            for (User user : users) {
                System.out.println(user);
            }
            sqlSession.close();
        }
    }
    

    本质:反射机制实现

    底层:动态代理!

    8.3、CRUD

    我们可以在工具类创建的时候实现自动提交事务!

     public static SqlSession getSqlSession(){
            return sqlSessionFactory.openSession(true);
        }
    

    编写接口,增加注解

    public interface UserMapper {
        @Select(value = "select * from user")
        List<User> getUsers();
    
        //方法存在多个参数,所有的参数前面必须加上@Param注解
        @Select("select * from user where id = #{id} or name = #{name}")
        User getUserByID(@Param("id")int id,@Param("name")String name);
    
        @Insert("insert into user(id,name,pwd) values (#{id},#{name},#{password})")
        int addUser(User user);
    
        @Update("update user set name = #{name},pwd = #{password} where id = #{id}")
        int updateUser(User user);
    
        @Delete("delete from user where id = #{uid}")
        int deleteUser(@Param("uid") int id);
    }
    

    测试类

    【注意:我们必须要将接口注册绑定到我们的核心配置文件中!】

    关于@Param()注解

    • 基本类型的参数或者String类型,需要加上
    • 引用类型不需要加
    • 如果只有一个基本类型的话,可以忽略,但是建议大家都加上
    • 我们在SQL中引用的就是我们这里的@Param()中设定的属性名

    #{} ${}区别

    Keep Clam and Carry Keen.
  • 相关阅读:
    farpoint [转]
    用于主题检测的临时日志(07ebc2e2418343fea17b52c9318e7705 3bfe001a32de4114a6b44005b770f6d7)
    将ColumnFooter显示出来,并对相关属性做适当设置。 SetAggregationType接口可以帮助你方便的完成求和需求。
    单元测试
    c#扩展方法
    String.Format格式说明
    vs 2005断点调试[转]
    EventLog 类【转】
    From Single PDF template Make a series PDF
    PDF template and print
  • 原文地址:https://www.cnblogs.com/MrKeen/p/12012095.html
Copyright © 2011-2022 走看看