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、編寫測試類與以前一樣,沒有區別。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM