Mybatis学习笔记【part02】进阶配置

Mybatis 学习笔记 Part02

11.Mybatis的输出结果深入(封装输出结果)

resultType标签可以配置结果类型

​ resultType 属性可以指定结果集的类型,它支持基本类型和实体类类型。

​ 我们在前面的 CRUD 案例中已经对此属性进行过应用了。

​ 需要注意的是,它和 parameterType 一样,如果注册过类型别名的,可以直接使用别名。没有注册过的必须

​ 使用全限定类名。例如:我们的实体类此时必须是全限定类名(今天最后一个章节会讲解如何配置实体类的别名)

​ 同时,当是实体类名称是,还有一个要求,实体类中的属性名称必须和查询语句中的列名保持一致,否则无法实现封装。

常用于:实体类属性和数据库表的列名不一致(java-userId,mysql-id)

mysql 在 windows 系统中不区分大小写!

解决方法一:利用别名(as)查询的sql语句(属性多的话写起来很麻烦)

<!-- 配置查询所有操作 --> 
<select id="findAll" resultType="com.itheima.domain.User">
	select id as userId,username as userName,birthday as userBirthday,
		sex as userSex,address as userAddress from user
</select>

解决方法二:resultMap结果类型

​ resultMap 标签可以建立查询的列名和实体类的属性名称不一致时建立对应关系。从而实现封装。

​ 在 select 标签中使用 resultMap 属性指定引用即可。同时 resultMap 可以实现将查询结果映射为复杂类型的 pojo,比如在查询结果映射对象中包括 pojo 和 list 实现一对一查询和一对多查询。

<!-- 建立 User 实体和数据库表的对应关系
    type 属性:指定实体类的全限定类名
    id 属性:给定一个唯一标识,是给查询 select 标签引用用的。
--> 
<resultMap type="com.itheima.domain.User" id="userMap"> 
    <id column="id" property="userId"/>
    <result column="username" property="userName"/>
    <result column="sex" property="userSex"/>
    <result column="address" property="userAddress"/>
    <result column="birthday" property="userBirthday"/>
</resultMap>

id 标签:用于指定主键字段
result 标签:用于指定非主键字段
column 属性:用于指定数据库列名
property 属性:用于指定实体类属性名称

<!-- 配置查询所有操作 --> 
<select id="findAll" resultMap="userMap">
	select * from user
</select>

12. SqlMapConfig.xml配置文件详解

12.1配置的内容和顺序
-properties(属性)
	--property
    
-settings(全局配置参数)
	--setting
    
-typeAliases(类型别名)
	--typeAliase
	--package
    
-typeHandlers(类型处理器)
    
-objectFactory(对象工厂)
    
-plugins(插件)
    
-environments(环境集合属性对象)
	--environment(环境子属性对象)
		---transactionManager(事务管理)
		---dataSource(数据源)
    
-mappers(映射器)
	--mapper
	--package
12.2properties标签属性

在使用 properties 标签配置时,我们可以采用两种方式指定属性配置。

第一种:

<properties> 
    <property name="jdbc.driver" value="com.mysql.jdbc.Driver"/>
    <property name="jdbc.url" value="jdbc:mysql://localhost:3306/eesy"/>
    <property name="jdbc.username" value="root"/>
    <property name="jdbc.password" value="1234"/>
</properties>

第二种:(在 classpath 下定义 db.properties 文件)

<db.properties>配置:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/eesy
jdbc.username=root
jdbc.password=1234
resource 属性:

​ 用于指定 properties 配置文件的位置,要求配置文件必须在类路径下

​ resource=“jdbcConfig.properties”

url 属性:

​ URL: Uniform Resource Locator 统一资源定位符

​ http://localhost:8080/mystroe/CategoryServlet

​ URL = 协议 主机 端口 URI

​ URI:Uniform Resource Identifier 统一资源标识符

​ /mystroe/CategoryServlet 它是可以在 web 应用中唯一定位一个资源的路径。

<SqlMapConfig.xml>配置:
<properties url="file:///D:/IdeaProjects/day02_eesy_01mybatisCRUD/src/main/resources/jdbcConfig.properties">
</properties>

​ 此时我们的dataSource标签就可以引用上面的配置

<dataSource type="POOLED"> 
    <property name="driver" value="${jdbc.driver}"/>
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
</dataSource>
12.3 typeAliases 类型 自定义别名

​ 在前面我们讲的 Mybatis 支持的默认别名,我们也可以采用自定义别名方式来开发。

在 SqlMapConfig.xml 中配置:
<typeAliases>
	<!-- 单个别名定义 --> 
    <typeAlias alias="user" type="com.itheima.domain.User"/>
	<!-- 批量别名定义,扫描整个包下的类,别名为类名(首字母大写或小写都可以) --> 
    <package name="com.itheima.domain"/>
	<package name="其它包"/>
</typeAliases>
12.4 mappers映射器 规则
使用相对于类路径的资源
	<mapper resource="com/itheima/dao/IUserDao.xml" />
使用 mapper 接口类路径
<!-- 注意:此种方法要求 mapper 接口名称和 mapper 映射文件名称相同,且放在同一个目录中。 -->
	<mapper class="com.itheima.dao.UserDao"/>
注册指定包下的所有 mapper 接口
<!-- 注意:此种方法要求 mapper 接口名称和 mapper 映射文件名称相同,且放在同一个目录中。 -->
	<package name="cn.itcast.mybatis.mapper"/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Parker7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值