• Mybatis(三)返回值四.注解配置


    一. Mybatis返回值

       MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMapresultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultTyperesultMap不能同时存在。

       在MyBatis进行查询映射时,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值。

       ①当提供的返回类型属性是resultType时,MyBatis会将Map里面的键值对取出赋给resultType所指定的对象对应的属性。其实MyBatis的每一个查询映射的返回类型都是ResultMap,只是当提供的返回类型属性resultType的时候,MyBatis自动的给对应的值赋给resultType所指定对象的属性。

       ②当提供的返回类型是resultMap时,因为Map不能很好表示领域模型,就需要自己再进一步的把它转化为对应的对象,这常常在复杂查询中很有作用(association,Collection),

      

    <resultMap type="com.softjx.model.User" id="UserMap">
      <result column="t_id" property="id"/>
      <result column="t_username" property="username" />
      <result column="t_password" property="password"/>
    </resultMap>
    
    
     <!-- 查询数据表中的所有记录,并封装User对象集合 -->
    <select id="selectAll" resultMap="UserMap">
     select * from t_user
    </select>
    
    <!-- 根据id查询数据表中的一条记录,并封装User对象 -->
    <select id="selectById"  resultMap="UserMap">
     select * from t_user where t_id=#{id};
    </select>
    
    //统计id>?记录数
        public int coutUser(Integer id);
    
    //统计id>?记录数
    
    <select id="coutUser" resultType="int">
     select count(*) from t_user where t_id>#{id};
    </select>

    二. Mybatis注解配置

      Mybatis中使用注解,就不需要编写mapper.xml文件,直接在接口代码中使用注解。

      1、mybatis的全局配置文件要修改,指向接口文件路

      <mappers>        
             <mapper class="com.softjx.dao.UserMapper"/>         
          </mappers>

      2、不用编写mapper.xml文件,写接口,在接口中使用注解

      

    @Select("select t_id as id,t_username username,t_password as password from t_user")
        //@Select("select * from t_user")//不好自动填充javabean中的数据
        //@ResultType(User.class)//不写没有关系
        public List<User> selectAll();
        
        @Select("select t_id as id,t_username username,t_password as password from t_user  where t_id=#{id}")
        //@Select("select * from t_user where t_id=#{id}")//不好自动填充javabean中的数据
        //@ResultType(User.class)//不写没有关系
        public User selectById(int id);
    
        
        @Select("select t_id as id,t_username username,t_password as password from t_user where t_id > #{a} and t_username=#{b}")
        @ResultType(User.class)
        public List<User> selectByNameId(Map<String, Object> map);
        
        
        
        
        @Select("select t_id as id,t_username username,t_password as password from t_user where t_id > #{0} and t_username=#{1}")
        @ResultType(User.class)
        public List<User> selectByNameId1(Integer id,String ame);
        
    
        
        @Select("select t_id as id,t_username username,t_password as password from t_user where t_id > #{id} and t_username=#{name}")
        @ResultType(User.class)
        public List<User> selectByNameId2(@Param("id")Integer id,@Param("name")String name);
        
        
    
        
        @Select("select * from t_user")
        @Results({@Result(property="id",column="t_id")
                 ,@Result(property="username",column="t_username")
                 ,@Result(property="password",column="t_password")
                 
                })
            public List<User> selectAllUsers();
        
    
        
        
        @Insert("insert into t_user (t_username,t_password) values (#{username},#{password})")
        public int insertUser(User user);
        
    
        @Update("update t_user set t_username=#{username},t_password=#{password} where t_id=#{id}")
        public int updateUser(User user);
    
        
        
        @Delete("delete from t_user where t_id=#{a}")
        public int deleteUser(int id);
    
            

      3、编写测试类与以前一样,没有区别。

  • 相关阅读:
    SQL Union和SQL Union All用法
    background:url() 背景图不显示
    媒体查询_网页打印样式
    提示让IE8以下版本的浏览器去更新浏览器
    python_继承supper错误
    Django_xadmin_应用外键搜索功能错误
    Django_404_403_500页面处理
    Django_中国化
    Django_上传图片和模版获取图片
    Django_生产环境静态文件配置
  • 原文地址:https://www.cnblogs.com/HawkFalcon/p/7987192.html
Copyright © 2020-2023  润新知