标签:常用标签 直接 resultmap 主机 映射文件 注意 顺序 find 优点
properties
settings
typeAliases
typeHandlers
objectFactory
objectWrapperFactory
reflectorFactory
plugins
environments
databaseIdProvider
mappers
<!-- 可用typeAliases标签配置别名,只能配置domain中类的别名 -->
<typeAliases>
<!-- 单个别名定义|alias:别名,type:别名的映射类型
<typeAlias type="blog.mybatis.domain.User" alias="user"/>
-->
<!-- package标签|指定要配置别名的包,当指定之后,该包下的实体类都会注册别名,且默认类名就是别名,不区分大小写 -->
<package name="blog.mybatis.domain"/>
</typeAliases>
<mappers>
<!-- 通过resource引用mapper映射文件
<mapper resource="blog/mybatis/dao/UserDao.xml"/>
-->
<!-- 通过class引用mapper接口
class:配置mapper接口全限定名
要求:需要mapper.xml和mapper.java同名并且在一个目录中
<mapper class="blog.mybatis.dao.UserDao"/>
-->
<!-- 通过package指定dao接口所在的包,当指定完之后就不需要再写mapper、resource或class
要求:需要mapper.xml和mapper.java同名并且在一个目录中
-->
<package name="blog.mybatis.dao"/>
</mappers>
<!-- 配置全局延迟加载 -->
<settings>
<!-- lazyLoadingEnabled:设置全局延迟加载
默认值为false,即默认所有关联对象都会被立即加载
-->
<setting name="lazyLoadingEnabled" value="true"/>
<!-- aggressiveLazyLoading:设置侵入式延迟加载
默认为false,即默认为深入式延迟加载(3.4.1版本之前默认为true,即默认为侵入式延迟加载)
-->
<setting name="aggressiveLazyLoading" value="false"/>
<!-- 立即加载:
lazyLoadingEnabled=false,aggressiveLazyLoading=true|false
执行完主对象的SQL语句之后直接执行关联对象的SQL语句
深入式延迟加载:
lazyLoadingEnabled=true,aggressiveLazyLoading=false
执行完主对象的SQL语句之后,
如果只访问了主对象的属性,则只会执行主对象的SQL语句而不会执行关联对象的SQL语句
如果访问了关联对象的属性,则执行完主对象的SQL语句后执行关联对象的SQL语句
侵入式延迟加载:
lazyLoadingEnabled=true,aggressiveLazyLoading=true
执行完主对象的SQL语句之后,
如果访问了主对象的属性,则执行完主对象的SQL语句后执行关联对象的SQL语句
如果没有访问主对象的属性,则只会执行主对象的SQL语句而不会执行关联对象的SQL语句
-->
</settings>
<!-- 配置properties
resource属性:常用
用于指定配置文件的位置,是按照类路径的写法来写,且必须存在于类路径下。
url属性:
是要求按照Url的写法来写地址
URL:Uniform Resource Locator统一资源定位符,唯一标识一个资源的位置
写法:http://localhost:8080/mybatisserver/demo1Servlet
协议 主机 端口 URI
URI:Uniform Resource Identifier 统一资源标识符。它是在应用中可以唯一定位一个资源的。
-->
<properties resource="jdbcConfig.properties"/>
<insert id="insertUser" parameterType="blog.mybatis.domain.User">
<selectKey keyProperty="id" resultType="string" order="BEFORE">
select uuid()
</selectKey>
INSERT INTO USER(id,username,password) VALUES(#{id},#{username},#{password})
</insert>
<!-- 保存用户 -->
<insert id="saveUser" parameterType="blog.mybatis.domain.User">
<!-- 配置插入操作后,获取插入数据的id -->
<selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER">
select last_insert_id();
</selectKey>
INSERT INTO USER(id,username,password) VALUES(#{id},#{username},#{password})
</insert>
<!-- 查询所有 -->
<select id="findAll" resultType="blog.mybatis.domain.User">
select * from user;
</select>
<resultMap id="userMap" type="User" >
<!-- 数据表的列名:id,username,password
id:要映射结果集的唯一标识,称为主键
column:结果集的列名
property:
-->
<!-- id为主键的映射配置 -->
<id column="id" property="id"/>
<!-- result为普通列的映射配置 -->
<result column="username" property="username"/>
<result column="password" property="password"/>
</resultMap>
<!-- 定义封装account和user的resultMap -->
<resultMap id="accountUserMap" type="blog.mybatis.domain.Account">
<id column="aid" property="id"></id>
<result column="uid" property="uid"></result>
<result column="money" property="money"></result>
<!-- 一对一的关系映射,配置封装user的内容-->
<association property="user" column="uid" javaType="blog.mybatis.domain.User">
<id column="id" property="id" ></id>
<result column="username" property="username"></result>
<result column="password" property="password"></result>
</association>
</resultMap>
<!-- 查询所有 -->
<select id="findAll" resultMap="accountUserMap">
select a.*,u.* from account a, user u where u.id = a.uid
</select>
<!-- 定义User的resultMap -->
<resultMap id="userAccountMap" type="User">
<id column="id" property="id"></id>
<result column="username" property="username"></result>
<result column="password" property="password"></result>
<!-- 配置user对象中accounts集合的映射 -->
<collection property="accounts" ofType="Account">
<id column="aid" property="id"></id>
<result column="uid" property="uid"></result>
<result column="money" property="money"></result>
</collection>
</resultMap>
<!-- 查询所有 -->
<select id="findAll" resultMap="userAccountMap">
select u.*,a.id as aid,a.uid,a.money from user u left outer join account a on u.id = a.uid
</select>
标签:常用标签 直接 resultmap 主机 映射文件 注意 顺序 find 优点
原文地址:https://www.cnblogs.com/Elaina/p/13383551.html