MyBatis(七):使用注解替代xml文件


本文是按照狂神說的教學視頻學習的筆記,強力推薦,教學深入淺出一遍就懂!b站搜索狂神說或點擊下面鏈接

https://space.bilibili.com/95256449?spm_id_from=333.788.b_765f7570696e666f.2

使用注解開發

  • 定義:Mybatis提供了一種方法來配置查詢語句,就是在查詢方法上增加注解。

    • 這個方法對於簡單的語句能有效簡化代碼量,而且不需要配置xml文件。

    • 但是對於復雜的語句就無法實現了

  1. 注解在接口上實現,Mapper.xml就不需要配置了

    public interface UserMapper {
        @Select("select * from user")
        List<User> getUserList();
    }

     

  2. 主配置文件中配置的不再是Mapper.xml文件,而是Mapper接口

    • 使用Mapper接口的時候,還能啟用xml文件,但是xml文件必須在同一個包下而且同名,見配置解析

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

     

  3. 測試方法

        @Test
        public void test(){
            SqlSession sqlSession = MybatisUtils.getSqlSession();
            //底層其實就是通過反射,獲取類方法名、返回值、注解
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            List<User> userList = mapper.getUserList();
            for (User user : userList) {
                System.out.println(user.toString());
            }
        }

     

    • 在這個例子中,代碼變得更加簡單,但是如果出現實體類屬性名和對應表的參數名不一致的時候就很難實現了。

  4. CRUD示例

  • 如果有需要傳的參數,可以使用@Param來增加注解

  • 如果是基本數據類型或者String類型需要加上。

    //注意,取值是取Param中的值
    //方法存在多個參數,所有參數前面必須加上@Param注解
    @Delete("delete from user where id = #{uid}")
    void deleteUser(@Param("uid") int id);

 

  • UserMapper

package com.rzp.dao;
​
import com.rzp.pojo.User;
import org.apache.ibatis.annotations.*;
​
import java.util.List;
import java.util.Map;
​
public interface UserMapper {
    @Select("select * from user")
    List<User> getUserList();
​
​
    //按id 查
    //方法存在多個參數,所有參數前面必須加上@Param注解
    @Select("select * from user where id = #{id}")
    User getUserById(@Param("id") int id);
​
​
    //插入
    @Insert("insert into user(id,name,pwd) values(#{id},#{name},#{pwd})")
    void addUser(User user);
​
    //更新
    @Update("update user set pwd = #{pwd}, name = #{name} where id = #{id}")
    void update(User user);
    
    //注意,取值是取Param中的值
    //刪除
    @Delete("delete from user where id = #{uid}")
    void deleteUser(@Param("uid") int id);
}
​

 

 

  • 測試類


    //按id查詢
    @Test
    public void test01(){
        SqlSession autoSession = MybatisUtils.getAutoSession();
        UserMapper mapper = autoSession.getMapper(UserMapper.class);
        User user = mapper.getUserById(2);
        System.out.println(user);
    }
​
    //插入
    @Test
    public void test02(){
        SqlSession autoSession = MybatisUtils.getAutoSession();
        UserMapper mapper = autoSession.getMapper(UserMapper.class);
        User user = new User(6,"cyy","223");
        mapper.addUser(user);
​
    }
​
    //更新
    @Test
    public void test03(){
        SqlSession autoSession = MybatisUtils.getAutoSession();
        UserMapper mapper = autoSession.getMapper(UserMapper.class);
        User user = new User(6,"c121","222223");
        mapper.update(user);
​
    }
​
    //刪除
    @Test
    public void test04(){
        SqlSession autoSession = MybatisUtils.getAutoSession();
        UserMapper mapper = autoSession.getMapper(UserMapper.class);
        mapper.deleteUser(4);
​
    }
​

 

 

a


免責聲明!

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



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