- 只需要一个 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">
<plugins>
<plugin interceptor="com.github.pagehelper.PageHelper">
<property name="dialect" value="mysql"/>
</plugin>
</plugins>
<!--数据源环境-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!--采用xml配置开发时-->
<!--加载映射文件-->
<!--采用注解开发-->
<!--加载映射关系-->
<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);
}