首先是mybatis全局配置文件中主要用到这几个标签:
- properties:用来在外部引入properties文件,这样就不需要在环境里面书写驱动,url,name和password,下面的sql环境里面配置就直接使用${指定位置.内容}
<!-- mybatis的主配置文件-->
<environments default="mysql">
<!--配置mysql环境 -->
<environment id="mysql">
<!--配置事务类型 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源(连接池)-->
<dataSource type="POOLED">
<!-- 配置数据库连接的基本信息-->
<property name="driver" value=""/>
<property name="url" value=""/>
<property name="username" value=""/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
-
settings:进行设置,里面还有一些标签,进行操作设置。
-
typeAliases:别名处理器,可以用来设置别名。
3.1 typeAlias里面的type属性指定的是实体类的全限定类名。Alias属性指定别名,如果指定别名,那么不在区分大小写
3.2 packing标签配置别名:指定配置别名的包,当指定之后,该包下的实体类都会注册别名,并且类名就是别名,不在区分大小写。
eg:
<typeAliases>
<typeAlias type="com.pojo.User" alias="user"/>
</typeAliases>
这种只能给一个类起别名,要是想给多个起别名,可以在里面多写几个typeAlias子标签,也可以使用package子标签(name属性是要起别名的包)。
<typeAliases>
<package name="com.pojo"/>
</typeAliases>
-
typeHandlers:类型处理器,将java和数据库中的类型进行适配。
-
plugins:插件。可以增加插件进行操作
-
environments:用来配置环境,因为有的时候可能不仅在一个环境中进行测试,这个时候就可以搭配多个环境,需要在哪个环境中操作就可以使用
-
databaseIdProvider:支持多数据库厂商来进行操作,可以运行不同的sql语句在不同的数据库中。
-
mappers:用来进行映射对应的sql文件
8.1 批量映射:
<package name="mapper"/>
,将以mapper结尾的文件进行映射
8.2 单个映射:<mapper resource="mapper/LogMapper.xml"></mapper>
这种是将一个xml文件进行映射,里面是sql语句,也可以使用class来代替里面的resource,在写上class文件即可,但是这个class必须要使用注解来讲sql语句写在上面。
类的映射文件
resultMap标签:用来配置查询结果的列名和实体类的对应的属性名的对应关系
eg:
<resultMap id="userMap" type="com.gy.domain.User">
<!-- 主键字段的对应-->
<id property="id" column="id"></id>
<!-- property是java类的属性,严格区分大小写;column是数据库里面对应的列-->
<!-- 非主键字段的对应-->
<result property="username" column="username"></result>
<result property="birthday" column="birthday"></result>
<result property="sex" column="sex"></result>
<result property="address" column="address"></result>
</resultMap>
动态sql:及<if><where><foreach>
标签
eg:
<!--根据queryVo的id集合查询用户 -->
<select id="findUserInIds" parameterType="com.gy.pojo.QueryVo" resultMap="userMap">
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>
</select>
if标签就是语句判断;test属性就是需要判断的语句
where标签是sql语句后面不用写where;如果有where标签就会将where添加在sql后面。
foreach标签就是遍历集合的时候会用到。collection属性是要遍历的集合名;open是语句开头要添加的;close是遍历完后语句要添加的;item就是集合里面的(可以随便起名);separator就是遍历一遍用什么分割的。在中间要遍历的用#{item名}取出即可
在进行CRUD操作的时候;即select,update,delete,insert标签的时候,parameterType就是参数类型(dao层的对应方法的参数类型)
resultType就是返回的结果类型(需要查询出来的类型)
resultMap就是上面定义的userMap,需要用的时候用里面的id就行(作用和resultType类似)
eg:
<!--根据name查询用户 -->
<select id="findByName" parameterType="java.lang.String" resultType="com.pojo.User">
select * from user where username like #{username}
</select>