ssm_Mybatis 笔记整理

##mybatis 
mybatis是一个持久层框架,用Java编写的, 使用了ORM思想实现结果集的封装(ORM:对象关系映射,简单说是数据库表和实体类和实体属性对应起来)
配置文件
    主配置文件主要配置环境,即datasource和映射配置文件的配置
        1,properties
                   作用: 可以在标签内部配置连接数据库信息,也可以通过属性引用外部配置文件信息,常用于解耦
                   属性:
                            1,resource: 用于指定配置文件的位置,是按照类路径的写法来写,并且必须保存于类路径下
        2,typeAliases
                   作用: 配置别名,它只能配置实体类的别名
                1,typeAlias
                        作用:用于配置别名:注意改标签用在typeAliases内
                        属性:
                                            1,type: 指定的是实体类的全限定类名
                                    2,alias:指定别名,当指定了别名,当指定了别名,就不再区分大小写
                2,package
                        作用:指定要配置别名的包,当指定之后,该包下所有实体类都会注册别名,并且类名就是别名,不在区分大小写,通常和typeAlias两者取一
        3,environments
                   作用:通常配置数据库环境,可以在里面的environment标签内配置DataSource和transactionManager,这里不再详述
        4,mappers
                作用:指定配置映射文件的路径,映射配置文件指的是每个dao独立的配置文件
                1,mapper
                             作用:指定配置映射文件的路径,映射配置文件指的是每个dao独立的配置文件
                             属性:
                                    1,resources:映射配置文件的包名/文件名
                                            2,url:对应的是网络上的某个文件,常用格式是file:// 前缀 +路径+文件名
                                    3,class:写的是接口的全限定类名名,即包名.文件名( 注:当使用注解时要配置此属性)
                   2,package
                        作用:用于指定dao接口所在的包,当指定之后就不需要再写mapper、resources或者class
                        属性:
                                    1,name:指定dao接口所在的包

    映射配置文件:( 注:映射配置文件位置必须和dao接口的包结构相同,
        映射配置文件的mapper标签和namespace属性的取值必须是dao接口的全限定类名,
        其操作配置的id属性取值必须是dao接口的方法名,遵循此规则,则不用写dao的实现类 )

        1,select,update,delete,insert(即crud,注意:模糊查询时有两种,如  like #{uName}   和  like “%${value}%”   ,两种区别不再详述,推荐用第二种,可防止sql注入 )
                属性:
                                               id:取值必须是到接口的方法,可避免写相应实现类
                                  resultType:返回的类型,若在主配置文件中没配置别名,则要写全限定类名
                                  parameterType:传入的参数类型,若在主配置文件中没配置别名,则要写全限定类名
        2,resultMap(配置好后,注意在相应的crud中配置resultMap属性引用,其和resultType类似)
                作用:当查询结果的列名和实体类的属性名不一致时,可配置其对应关系,除此还可在sql语句中使用as来配置别名
                属性:
                                                id:唯一表示
                                                           type:要配置实体类的全限定类名,若在主配置文件中没配置别名,则要写全限定类名
                   id:
                        作用:主键字段对应,resultMap 标签内
                        属性:
                                    property:实体类中的属性名
                                    column:与相应实体类属性相对应的列名
                result:
                        作用:非主键字段对应,resultMap标签内,与id标签用法类似
                        属性:
                                            property:实体类中的属性名
                                            column:与相应实体类属性相对应的列名
        3,sql
                作用:可将crud中重复的代码在外部配置,需要使用时,需在crud中配置include标签     ,如<sql id=“defaultUser”>  select  * from user </sql>   
                属性:
                            id:唯一标识
        4,include
                作用:引用sql标签,其一般常用在crud标签内
                属性:
                            refid:引用sql标签的id
        5,selectKey(如: <selectKey keyProperty=“id” resultType=“int” order=“AFTER”> select last_insert_id() </selectKey> )
                作用:主键回填,在插入操作执行后,由于主键为自增类型,插入后想获取相应的主键,常用在insert标签内
                属性:
                                  keyProperty:selectKey 语句结果应该被设置的目标属性。
                                  resultType:返回结果的类型
                                  order:before和after,若为before,则会先设置selectKey,然后再执行插入操作,若为after,则相反先执行插入然后再设置selectKey
        6,if
                作用:若查询条件的不确定性时,可用if来判断,常用在查询标签内(注意,使用if标签时,where 后应为1=1,即where 1=1,其含义因篇幅有限,就不再详说)
                属性:
                                  test:常用于写判断条件,如 : test=“id !=null”   ,注意当有多条if标签时,在if标签内的语句注意加and
        7,where
                作用:常用和if一起使用,当一起使用时,where 1=1就不用写了
        8,foreach
                作用:当查询条件有集合类型时,且需动态生成sql语句,可使用该标签,其一般和where、if配合使用
                属性:
                                  collection:要做foreach的对象,通常是集合类型变量名
                                  open:foreach代码的开始符号,一般是(和close=")“合用。常用在in(),values()时。该参数可选
                                  close:foreach代码的关闭符号,一般是)和open=”(“合用。常用在in(),values()时。该参数可选。
                                  item:集合中元素迭代时的别名,该参数为必选。
                                  separator:元素和元素之间的分隔符,
                   用法示例:
                                             select * from user
<where>
<if test =“ids !=null and ids.size()>0” >
<foreach collection =“ids” open =“and id in (” close =”)" item =“uid” separator ="," >
#{uid}
</foreach>
</if>
</where>

    3,多表查询( 注:mybatis中多对一同一对一是一致的,即多对一就是一对一)
            1,一对一/多对一()
                    实体类从表应包含一个主表的实体对象的引用  
                    映射文件配置:
                        配置resultMap,配置完其他基本属性后,配置主表对象引用。
                                  association:
                                       作用:封装实体类对象
                                属性:
                                                      1,property:映射实体类的字段或属性。
                                                      2,colum:数据库的列名或者列标签别名
                                                      3,javaTyp:完整的实体类的全限定类名或别名。
                                  在associtaion标签内还需配置id和result标签,和resultMap类似,但配置的是关联实体类的属性
            2,一对多
                    一对多的关系映射,主表实体应包含从表实体的集合引用  
                        映射文件配置:
                            配置resultMap,配置完其他基本属性后,配置从表的集合
                                      collection:
                                    作用:封装从表实体集合  
                                    属性:
                                                           1,property:映射实体类的字段或属性。
                                                           2, oftype:完整的实体类的全限定类名或别名。
                                       在collection标签内还需配置id和result标签,和resultMap类似,但配置的是从那边实体集合的属性
            3,多对多
                    其配置和一对多一样,主表应包含从表的集合引用,resultMap配置也是一样的   
注解方面:
 @select,@insert,@update,@delete就不再介绍了

至此,SSM框架完结撒花

                    
         

                
                                

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值