myBatis注解和标签精简总结


mspaint画图

MyBatis:搭建项目开发环境
1.导入开发所需的jar包
2.导入开发所需的配置文件
3.划分包结构,创建相关的类和接口

 

获取sqlSession对象
1.创建构造器
  InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
 SqlSessionFactoryBuilder factoryBuilder = new SqlSessionFactoryBuilder();
2.通过构造器对象加载配置文件得到工厂
  SqlSessionFactory factory = factoryBuilder.build(is);
3.通过工厂得到sqlSession
 SqlSession sqlSession = factory.openSession();手动提交
 SqlSession sqlSession = factory.openSession(true);自动提交
4.通过sqlSession得到代理对象
sqlSession.getMapper(WordMapper.class)


sqlMapConfig.xml核心配置文件的标签
1.<mappers>:引入映射文件
子标签:
    <mapper>配置一个映射文件
         resource属性:映射文件路径com/itheima/dao/UserMapper.xml
         或者class属性:映射接口全限定包名com.itheima.dao.UserMapper
    <package>加载包下所有映射文件
          name属性:com.itheima.dao
          
          
UserMapper.xml映射配置文件的标签
<mapper>:
    namespace属性:命名空间,映射接口全限定包名com.itheima.dao.UserMapper    
2.加载外部属性文件
<properties resource="db.properties"></properties>
3.给整个包下和子包下实体类定义别名,别名就是类名
<typeAliases>  
        <package name="com.itheima.entity"/>
</typeAliases>
4.在控制台显示SQL语句
<settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>

 

    
标签多表查询
<resultMap>:配置字段和对象属性的映射关系
   id 属性:标识,便于后面resultMap调用
   type属性:实体对象类型
   子标签:
   <id>:配置主键映射关系
   <result>:配置非主键映射关系
         column :表中字段名称
         property 属性:实体对象变量名称
   <association>:配置被包含对象的映射关系
         property 属性:被包含对象的变量名
         javaType 属性:被包含对象的数据类型user*****
         column 属性 :配置的外键字段*****
   <collection>:配置被包含集合对象的映射关系标签。
         property 属性:被包含集合对象的变量名
         ofType 属性:集合中保存的对象数据类型
         column 属性 :配置的外键字段*****
****主表user从表order,外键user_id在从表中,对应主表的主键id    


1. association
   - 配置一对一关联映射
     比如: 查询一个card身份证信息需要关联一个user信息。
     用户表和身份证表(在其中一方的JavaBean中定义另一方属性)
     
   - 配置多对一关联映射(其实就是一对一)
     比如:查询订单信息,需要关联一个用户信息。
     在订单javaBean中添加user属性
     
2.collection
   - 配置一对多时
     比如: 查询一个用户信息需要关联该用户的所有订单信息
     在用户表中,添加List<Order> orders
     
   - 配置多对多时
     比如: 查询一个订单信息需要关联该订单的所有商品信息
     比如:查询一个商品信息需要关联查询该商品在那些订单中出现


@results里面是@Result数组
    @Result(主键+非主键)
        column属性:表中字段名称
        property属性:实体对象变量名称
    @Result(配置被包含对象的映射关系)
        property属性:被包含对象的变量名
        javaType 属性:被包含对象的数据类型User.class,List.class*****
        column属性:根据card表中的user_id字段来查询User表(另一个接口根据uid查询)*****
                   查询从表数据,以及把从表对应的主表数据查询出来,一对一,column="外键字段名称"
                   查询主表数据,把它对应的从表数据查询出来,多对多,column="主键字段"
        one=@One属性:一对一固定写法(也是注解)
             select属性:指定调用哪个接口的哪个方法com.itheima.dao.UserMapper.selectById 
        many=@many属性:多对多固定写法(也是注解)
             select属性:指定调用哪个接口的哪个方法       

                          
构建SQL对象
@SelectProvider:生成查询用的SQL语句注解
       type属性:生成语句的功能类对象
       method属性:指定调用方法
@InsertProvider:生成新增用的SQL语句注解
@UpdateProvider:修改
@DeleteProvider:删除
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值