#Mybatis注解开发模式
注解开发无需实现类、映射文件
package com.itheima.zhujie;
import com.itheima.pojo.Category;
import com.itheima.pojo.Product;
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 org.apache.ibatis.mapping.FetchType;
import java.util.List;
public interface CategoryMapper {
/**
* 一对多映射
* @return
*/
@Select(value = “select * from category”)
@Results({
//id = true ,指定该列为主键
@Result(id = true,column = “cid”,property = “cid”),
@Result(column = “cname”,property = “cname”),
@Result(property = “productList”,column = “cid”,javaType = List.class,
many = @Many(select = “com.itheima.zhujie.ProductMapper.findByCid”,fetchType = FetchType.LAZY)
)
})
public List findAll();
@Select(value = "select * from category where cid = #{cid}")
public Category findOne(Integer cid);
}
##注解开发还是两个问题:传参 、结果集映射
1、传参
使用#{属性名},多个参数使用
2、结果集映射
一对一
@Select(value = “select * from user”)
@Results({
@Result(id = true,property = “uid” ,column = “uid”),
@Result(property = “name”,column = “name”),
@Result(property = “age”,column = “age”),
@Result(property = “account”,column = “uid”,javaType = Account.class,
one = @One( select = “com.itheima.zhuijie.AccountMapper.findByUid”))
})
public List findUser();
一对多
/**
* 一对多映射
* @return
*/
@Select(value = "select * from category")
@Results({
//id = true ,指定该列为主键
@Result(id = true,column = "cid",property = "cid"),
@Result(column = "cname",property = "cname"),
@Result(property = "productList",column = "cid",javaType = List.class,
many = @Many(select = "com.itheima.zhujie.ProductMapper.findByCid",fetchType = FetchType.LAZY)
)
})
多对多
多对多即是一对多