七、MyBatis的註解開發

參考:https://mybatis.org/mybatis-3/zh/java-api.html

1.註解實現基本的curd:

 UserMapper接口:

public interface UserMapper {

    @Insert("insert into user values(#{id},#{username},#{password},#{birthday})")
    public void save(User user);

    @Update("update user set username=#{username},password=#{password} where id=#{id}")
    public void update(User user);

    @Delete("delete from user where id=#{id}")
    public void delete(int id);

    @Select("select * from user where id=#{id}")
    public User findById(int id);

    @Select("select * from user")
    public List<User> findAll();

}

sqlMapConfig.xml配置:

    <!--加載映射關係-->
    <mappers>
        <!--指定接口所在的包-->
        <package name="com.itheima.mapper"/>
    </mappers>

2.註解實現複雜映射查詢

2.1 一對一的註解開發(查詢一個訂單,與此同時查詢出該訂單所屬的用戶)

OrderMapper接口:

public interface OrderMapper {

    @Select("select *,o.id oid from orders o,user u where o.uid=u.id")
    @Results({
            @Result(column = "oid", property = "id"),
            @Result(column = "ordertime", property = "ordertime"),
            @Result(column = "total", property = "total"),
            @Result(column = "uid", property = "user.id"),
            @Result(column = "username", property = "user.username"),
            @Result(column = "password", property = "user.password")
    })
    public List<Order> findAll();

}

或者:

public interface OrderMapper {

    @Select("SELECT * FROM orders")
    @Results({
            @Result(column = "oid", property = "id"),
            @Result(column = "ordertime", property = "ordertime"),
            @Result(column = "total", property = "total"),
            @Result(
                    property = "user", //要封裝的屬性名稱
                    column = "uid", // 根據哪個字段去查詢user表中的數據
                    javaType = User.class, //要封裝的實體類型
                    //select屬性 代表查詢哪個接口的方法獲得數據
                    one = @One(select = "com.itheima.mapper.UserMapper.findById")
            )
    })
    public List<Order> findAll();
}

2.2 一對多的註解開發(查詢一個用戶,與此同時查詢出該用戶具有的訂單)

    @Select("select * from user")
    @Results({
            @Result(id=true, column = "id", property = "id"),
            @Result(column = "username", property = "username"),
            @Result(column = "password", property = "password"),
            @Result(
                    property = "orderList",
                    column = "id",
                    javaType = List.class,
                    many = @Many(select = "com.itheima.mapper.OrderMapper.findByUid")
            )
    }
    )
    public List<User> findUserAndOrderAll();

2.3 多對多的註解開發(查詢用戶同時查詢出該用戶的所有角色)

RoleMapper接口:

public interface RoleMapper {

    @Select("SELECT * FROM user_role ur,role r WHERE ur.role_id=r.id AND ur.user_id=#{uid}")
    public List<Role> findByUid(int uid);

}

UserMapper接口:

    @Select("SELECT * FROM USER")
    @Results({
            @Result(id = true, column = "id", property = "id"),
            @Result(id = true, column = "username", property = "username"),
            @Result(id = true, column = "password", property = "password"),
            @Result(
                    property = "roleList",
                    column = "id",
                    javaType = List.class,
                    many = @Many(select = "com.itheima.mapper.RoleMapper.findByUid")
            )
    })
    public List<User> findUserAndRoleAll();

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章