• 只需要一个 Mybatis 核心配置文件,不再需要每个Dao接口对应一个XML文件配置sql语句
    • 在核心配置文件中将标签中价值映射文件改为加载 ```java <?xml version=”1.0” encoding=”UTF-8” ?> <!DOCTYPE configuration PUBLIC “-//mybatis.org//DTD Config 3.0//EN” “http://mybatis.org/dtd/mybatis-3-config.dtd">

    1. <plugins>
    2. <plugin interceptor="com.github.pagehelper.PageHelper">
    3. <property name="dialect" value="mysql"/>
    4. </plugin>
    5. </plugins>
    6. <!--数据源环境-->
    7. <environments default="development">
    8. <environment id="development">
    9. <transactionManager type="JDBC"></transactionManager>
    10. <dataSource type="POOLED">
    11. <property name="driver" value="${jdbc.driver}"/>
    12. <property name="url" value="${jdbc.url}"/>
    13. <property name="username" value="${jdbc.username}"/>
    14. <property name="password" value="${jdbc.password}"/>
    15. </dataSource>
    16. </environment>
    17. </environments>
    18. <!--采用xml配置开发时-->
    19. <!--加载映射文件-->
    <!--采用注解开发-->
    <!--加载映射关系-->
    <mappers>
        <!--<package name="com\jquan\mapper"/>-->
        <package name="com.jquan.mapper"/>
    </mappers>
    

    
    - 在Dao接口中的方法上面使用注解替代配置XML的方式来实现SQL语句
       - 一对一查询
       - 一对多查询
       - 多对多查询
    ```java
    一对一
    select * from orders;
    select * from user where id=查询出订单的uid;
    一对多
    select * from user;
    select * from orders where uid=查询出用户的id;
    多对多
    select * from user;
    select * from role r,user_role ur where r.id=ur.role_id and ur.user_id=用户的id
    
    
    --------------------------java--------------------
    
    package com.jquan.mapper;
    
    import com.jquan.domain.Order;
    import com.jquan.domain.User;
    import com.sun.org.apache.xpath.internal.operations.Or;
    import org.apache.ibatis.annotations.One;
    import org.apache.ibatis.annotations.Result;
    import org.apache.ibatis.annotations.Results;
    import org.apache.ibatis.annotations.Select;
    
    import java.util.List;
    
    public interface OrderMapper {
    /*相当于xml开发方式中的 association 标签*/
        @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(
                        property = "user",
                        column = "uid",
                        javaType = User.class,
                        /*select ‘属性’ 代表查询那个接口的方法获得数据*/
                        one = @One(select ="com.jquan.mapper.UserMapper.findById")
                )
    
        })
        List<Order> findAll();
    
       /* @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.username"),
                @Result(column = "birthday",property = "user.birthday")
        })
        List<Order> findAll();*/
    
        @Select("select * from orders where uid=#{uid}")
        List<Order> findByUid(int uid);
    }
    
    
    package com.jquan.mapper;
    
    import com.jquan.domain.Role;
    import org.apache.ibatis.annotations.Select;
    
    import java.util.List;
    
    public interface RoleMapper {
        @Select("select * from sys_role r,user u,sys_user_role ur where ur.userid = #{uid} and ur.roleid = r.id")
        List<Role> findByUid(int uid);
    }
    
    
    package com.jquan.mapper;
    
    import com.jquan.domain.User;
    import org.apache.ibatis.annotations.Many;
    import org.apache.ibatis.annotations.Result;
    import org.apache.ibatis.annotations.Results;
    import org.apache.ibatis.annotations.Select;
    
    import java.util.List;
    
    public interface UserMapper {
    
        @Select("select * from user")
        @Results({
                @Result(column = "id",property = "id"),
                @Result(column = "username",property = "username"),
                @Result(column = "password",property = "password"),
                @Result(column = "birthday",property = "birthday"),
                @Result(column = "id",//给 findByUid的参数,ur.userid = #{uid}
                        property = "roleList",javaType = List.class, //封装的字段名
                        many = @Many(select = "com.jquan.mapper.RoleMapper.findByUid")
                )
        })
        List<User> findUserAndRoleAll();
    
        @Select(" select * from user")
        @Results({
                @Result(column = "id",property = "id"),
                @Result(column = "username",property = "username"),
                @Result(column = "password",property = "password"),
                @Result(column = "birthday",property = "birthday"),
                @Result(column = "id",
                        property = "orderList",javaType = List.class,
                        many = @Many(select = "com.jquan.mapper.OrderMapper.findByUid")
                )
        })
        List<User> findUserAndOrderAll();
    
        List<User> findAll();
    
        @Select("select * from user where id=#{id}")
        List<User> findById(int id);
    
        List<User> findByCondition(User user);
        List<User> findByIds(List<Integer> list);
        void saveUser(User user);
    //    void save(User user);
    
    
    
    }