ssm

    科技2025-11-16  2

    ##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框架完结撒花

                                                                                    

    Processed: 0.014, SQL: 8