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

导读:本篇文章讲解 Mybatis学习笔记【part02】进阶配置,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

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"/>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/84511.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!