mybatis
设置别名
在mybatis配置文件中,别名是一直存在的,实际上在框架中已经存在一些默认的别名。
在开发中,一般mapper.xml配置文件中的parameterType和resultType往往对应的名称需要写上
model****的全路径,而且还是多次被重复使用,可以选择给该路径取一个别名。用别名来替换比较复杂的
全路径名
设置别名位置是在SqlMapConfig.xml配置文件中
好处:将复杂的全路径可以一次性设置好,后续在任何**mapper.xml文件中要使用的时候,直接可以
使用简单的别名即可。
<environments default="development">
<!-- 配置单条的数据源和事务管理的标签 -->
<environment id="development">
<!-- 事务管理,暂时全部交给mybatis进行管理事务 -->
<transactionManager type="JDBC" />
<!-- 配置数据源 -->
<dataSource type="POOLED">
<!-- 配置数据库的驱动 -->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!-- 配置数据库的链接,里面就绑定好了数据库名 -->
<property name="url"
value="jdbc:mysql://localhost:3306/db_shop?
useUnicode=true&characterEncoding=utf-8"/>
<!-- 配置数据库的用户名 -->
<property name="username" value="root"/>
<!-- 配置数据库的密码 -->
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
<!-- 配置mapper.xml的文件,用于加载mapper.xml -->
<mappers>
<mapper resource="productMapper.xml"/>
</mappers>
</configuration>
<!-- 设置一个别名 -->
<typeAliases>
<!--
type: 要设置的model全路径名
alias:取的别名
-->
<typeAlias type="com.woniuxy.mall.model.User" alias="user"/>
</typeAliases>**注意:如果以扫描包的方式进行设置别名,那么默认的别名为****java****代码的类名**
**Mapper****映射关系配置**
**以****mapper.xml****配置文件的方式**
**以配置****Mapper****接口的方式进行配置**
以扫描包的形式进行配置
自定义的POJO类(重点)
自定义POJO类,一般指的是高级查询,在想要的数据和传入的条件不再一张表中,通过表所创建的失血
模型model已经不能够满足传入参数的需求了,这个时候,就需要使用自定义的POJO类
因为一个失血模型已经不能够满足查询输入参数的要求了,所以进行扩展,创建一个UserCustom类**,里
**面包含user对象声明和userInfo**对象声明**
name:包名
class:对应接口的全路径名
要求:
对应的mapper.java接口文件和mapper.xml配置文件必须放在同一个包下面。
mapper.java接口文件和mapper.xml配置文件的名字必须要一致。
name:mapper接口的包名
输入映射和输出映射
输入映射:目前在mybatis用到的都是parameterType类型,其中可以是简单数据类型,也可以是包装
类型(POJO)
parameterType:java.lang.Integer\java.lang.String\POJO模型类。
输出映射 输出的类型为POJO包装类(model失血模型),用的是resultType
输出的类型为简单数据类型,resultType,要求**😗*查询的结果集必须是一行一列的数据
一对一、一对多、多对多查询(重点)
一对一的关系
需求:查询订单对应的用户信息。
主表:订单表,附表:用户表
一对多查询
需求:查询订单和用户及订单明细
主表:订单
附表:用户、订单明细
多对多关系映射
需求:查询用户购买了哪些商品订单。
在User模型中添加List orderList;一个用户可以拥有多个订单。
在Order模型中添加List detailList;一个订单可能有多个订单明细。
在Detail模型中添加Product product;一个订单明细只能对应一个商品数据。
resultType和resultMap区别**
resultType:会增加一个扩展的模型类,但是,这样可以简化xml配置文件中的繁琐步骤。操作和单表查
询操作一致,一对一的映射关系一般推荐使用resultType。
resultMap:需要有关联映射,需要自定义resultMap的配置信息,增加配置的难度,但是,可以用在一
对多的关系映射中(较为复杂的关系映射)。
总结:
别名,输出映射,输入映射,一对一,一对多,多对多