1、基于注解的简单操作
我们可以不用xxxMapper.xml了
把sqlMapConfig.xml的
换成这个:
2.基于注解的多表操作,一对一、一对多、多对多
代码的注释可参考xml的博客:https://blog.csdn.net/GLOAL_COOK/article/details/113523359
2.1一对一
之前是在xml这样写:
现在不要xxxMapper.xml,直接在xxxMapper接口写:
package com.itheima.mapper;
import com.itheima.domain.Order;
import com.itheima.domain.Sys_user;
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;
/**
* @author QLBF
* @version 1.0
* @date 2021/2/1 23:12
*/
public interface OrderMapper {
@Select("select * from orders")
@Results({
@Result(column = "id",property = "id"),
@Result(column = "ordertime",property = "ordertime"),
@Result(column = "total",property = "total"),
@Result(column = "uid",property = "uid"),
@Result(
property = "sys_user", //写你下面要封装实体(Order)的属性名称(private Sys_user sys_user)
column = "uid", //写根据哪个字段去查询sys_user表的数据,就表示这里是select * from orders查到的uid再去请求下面的findById的意思
javaType = Sys_user.class, //写你这个Result要封装的实体类型
//select属性 代表查询哪个接口的方法获得数据,前提是findById是真的的存在的方法
one = @One(select = "com.itheima.mapper.UserMapper.findById")
)
})
public List<Order> findAll(); //演示一对一,一个订单对应一个用户,全部查出来而已
}
2.2 一对多
之前这样写:
现在这样:
2.3多对多
跟1对多差不多,多个中间表而已(不用建实体类)
之前xml是这样的:
现在是这样的:
3.代码:
domain:
package com.itheima.domain;
import java.util.Date;
/**
* @author QLBF
* @version 1.0
* @date 2021/2/1 16:32
*/
public class Order {
private int id;
private Date ordertime;
private double total;
private int uid;
@Override
public String toString() {
return "Order{" +
"id=" + id +
", ordertime=" + ordertime +
", total=" + total +
", uid=" + uid +
", sys_user=" + sys_user +
'}';
}
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
//当前订单属于哪个用户(外键在实体类得用对象或者对象集合岚表示),1.演示一对一
private Sys_user sys_user;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Date getOrdertime() {
return ordertime;
}
public void setOrdertime(Date ordertime) {
this.ordertime = ordertime;
}
public double getTotal() {
return total;
}
public void setTotal(double total) {
this.total = total;
}
public Sys_user getSys_user() {
return sys_user;
}
public void setSys_user(Sys_user sys_user) {
this.