MYBATIS注解开发

01_MyBatis注解开发

这几年来注解开发越来越流行,MyBatis也可以使用注解开发方式,这样就可以减少编写 Mapper映射文件了。 MyBatis常用注解 @Insert:实现新增 @Update:实现更新 @Delete:实现删除 @Select:实现查询 @Result:实现结果集封装 @Results:可以与@Result 一起使用,封装多个结果集 @One:实现一对一结果集封装 @Many:实现一对多结果集封装

02_MyBatis注解操作CRUD

@Insert、@Update、@Delete、@Select DAO接口
public interface IEmployeeDao {
@Select(“select * from tb_employee”) List selectEmployeeList();
@Insert(“insert into tb_employee(ename,salary,dno) values(#{ename},#{salary},# {dno})”) int insertEmployee(Employee employee);
@Delete(“delete from tb_employee where eid = #{eid}”) int deleteEmployeeById(Long id);
@Update(“update tb_employee set ename = #{ename} where eid = #{eid}”) int updateEmployee(Employee employee);
}
代码测试
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {“classpath:/spring.xml”}) public class IEmployeeDaoTest {
@Resource private IEmployeeDao employeeDao;
@Test public void selectEmployeeList(){ List employeeList = employeeDao.selectEmployeeList(); System.out.println(employeeList); }
@Test public void insertEmployee(){ Employee employee = new Employee(); employee.setEname(“邱邱”); employee.setSalary(10000.0); employee.setDno(1L); int i = employeeDao.insertEmployee(employee); System.out.println(i); }
@Test public void deleteEmployeeById(){ int i = employeeDao.deleteEmployeeById(0L); System.out.println(i); }
@Test public void updateEmployee(){ Employee employee = new Employee(); employee.setEid(2L); employee.setEname(“qzw”); int i = employeeDao.updateEmployee(employee); System.out.println(i); }
}

03_复杂关系映射注解说明

实现复杂关系映射之前我们可以在映射文件中通过配置来实现, 在使用注解开发 时我们需要借助@Results 注解, @Result 注解, @One 注解, @Many 注解。 复杂关系映射的注解说明 @Results 注解 代替的是标签 该注解中可以使用单个@Result 注解,也可以使用@Result 集合 @Results({@Result(), @Result() })或@Results(@Result()) @Result 注解 代替了 标签和标签 @Result 中 属性介绍: id 是否是主键字段 column 数据库的列名 property 需要装配的属性名
one 需要使用的@One 注解(@Result(one=@One)())) many 需要使用的@Many 注解(@Result(many=@many)())) @One 注解(一对一) 代替了标签,是多表查询的关键,在注解中用来指定子查询返回单一对象。 @One 注解属性介绍: select 指定用来多表查询的 sqlmapper fetchType 会覆盖全局的配置参数 lazyLoadingEnabled。。 使用格式: @Result(column=" “,property=”",one=@One(select="")) @Many 注解(多对一) 代替了标签,是是多表查询的关键,在注解中用来指定子查询返回对象集合。 注意:聚集元素用来处理“一对多”的关系。需要指定映射的 Java 实体类的属性,属性的 javaType (一般为 ArrayList)但是注解中可以不定义; 使用格式: @Result(property="",column="",many=@Many(select=""))

04_注解实现一对一延迟加载

一个订单属于一个用户 IOrderDao代码
@Select(“select * from tb_orders”) @Results(id = “resultMap”, value = { @Result(id = true , property = “customerId” ,column = “customerId”,javaType = Long.class), @Result(property = “name” , column = “name” ,javaType = String.class ), @Result(property = “address” ,column = “address”,javaType = String.class), @Result(property = “customer”, javaType = Customer.class, one = @One(select = “com.qzw.dao.ICustomerDao.selectCustomerById”,fetchType = FetchType.EAGER), column = “customerNo”) }) List selectOrderList();
ICustomerDao代码
@Select(value = “select * from tb_customer where customerId = #{customerId}”) Customer selectCustomerById(Long customerId);

05_注解实现一对多延迟加载

一个用户有多个订单 ICustomerDao代码
@Select(value = “select * from tb_customer”) @Results(id = “resultMap”, value = { @Result(id = true,property = “orderId”,column = “orderId”,javaType = Long.class), @Result(property = “state”,column = “state”,javaType = String.class), @Result(property = “orderList”,
column = “customerId”, many = @Many(select=“com.qzw.dao.IOrderDao.selectOrderListByCustomerId”,fetchType = FetchType.LAZY)) } ) List selectCustomerList();
IOrderDao代码
@Select(“select * from tb_orders where customerNo = #{customerNo}”) List selectOrderListByCustomerId(Long customerId);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值