mybatis基础

对比:hibernate

hibernate

:sql语句自动生成,对SQL语句优化困难,需求变化不多

 //离线方式查询
	DetachedCriteria criteria=DetachedCriteria.forClass(AboutUs.class);

	return  this.getHibernateTemplate().findByCriteria(criteria);

hibernate 的xml文件 根据表间关系进行一对一、一对多等的映射,单独一个文件

mybatis

:专注sql本身,自己编写SQL语句、修改、优化方便,不完全的ORM框架,可以实现(输入、输出)映射,需求变化比较多

//上面各种表字段和类属性,表间关系配置完(类 hibernate中的xml文件)  下面SQL语句
<select id="findOrdersUser" resultType="cn.itcast.mybatis.po.OrdersCustom">
		SELECT
		orders.*,
		USER.username,
		USER.sex,
		USER.address
		FROM
		orders,
		USER
		WHERE orders.user_id = user.id
	</select>
	


Dao:

mapper.xml实现:

根据xml文件写mapper.java (接口) 方法

xml文件中namespace等于mapper接口地址(class全路径  )

别名:配置文件中

<typeAliases>

<!-- 单个别名定义:type:类型路径    alias:别名   在xml中可以使用  -->

<typeAliases type="cn.itcast.mybatis.po.User" alias="user"/>


<!--mybatis 自动根据类名定义别名-->

<package name="cn.itcast.mybatis.po.User" />

</typeAliases>


类型处理器:TypeHandlers

java类 jdbc类转换

默认的类处理器

映射:

一对一:

resultType

扩展类:*Custom extend ***

resultMap

类中添加类属性,mapper.xml,高级映射,

一对多

 比一类似     1 类中引用List<**>         2 .xml中用<collection>        3、继承:extends之后重复信息直接复用:extends=“ id ”       4 SQL语句变动

多对多:


多个表信息,resultType for循环——list

延迟加载:

按需查询

单表查询、需要时从关联表去关联查询——性能

resultMap:collection、association——延迟加载

使用association中的select指定延迟加载去执行的statement的id

<!-- 延迟加载的resultMap -->
	<resultMap type="cn.itcast.mybatis.po.Orders" id="OrdersUserLazyLoadingResultMap">
			<!--对订单信息进行映射配置  -->
			………………
			<!-- 实现对用户信息进行延迟加载
			select:指定延迟加载需要执行的statement的id(是根据user_id查询用户信息的statement)
			要使用userMapper.xml中findUserById完成根据用户id(user_id)用户信息的查询,如果findUserById不在本mapper中需要前边加namespace
			column:订单信息中关联用户信息查询的列,是user_id
			关联查询的sql理解为:
			SELECT orders.*,
	(SELECT username FROM USER WHERE orders.user_id = user.id)username,
	(SELECT sex FROM USER WHERE orders.user_id = user.id)sex
	 FROM orders
			 -->
			<association property="user"  javaType="cn.itcast.mybatis.po.User"
			 select="cn.itcast.mybatis.mapper.UserMapper.findUserById" column="user_id">
			<!-- 实现对用户信息进行延迟加载 -->
		
			</association>
			
	</resultMap>








  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 70
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 70
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值