mybatis

一。传统数据库编程的缺点:

1.数据库连接,使用时就创建不使用时释放,对数据库频繁的连接开启和关闭,造成数据库资源的浪费,影响数据库性能

  解决方案:使用数据库连接池来管理

2.将sql语句硬编码到Java程序,如果修改语句那么程序就必须重新编译,不利于系统维护

解决方案:将sql语句放到配置文件中

3.向preparedStatement中设置参数,占位符和参数出现了硬编码

解决方案:将sql语句、占位符、参数放到配置文件中

4.从resultSet中遍历结果数据集的时候,获取表的字段存在硬编码

解决方案:将结果集自动映射为Java对象

二。mybatis框架原理

mybatis是持久层框架,是Apache的项目。mybatis让程序将主要精力放在sql语句上,通过mybatis提供的映射方式,自由灵活生成(半自动化)满足需要的sql

mybatis可以将向preparedStatement的输入参数自动映射输入,将查询结果集灵活的映射为Java对像输出映射

mybatis{

sqlMapConfig.xml(是mybatis的全局配置文件,名称不固定的)配置了数据源、事务等mybatis运行环境配置映射文件(配置sql语句)mapper.xml(映射文 件)、mapper.xmlmapper.xml.....

   SqlSessionFactory(会话工厂),根据配置文件创建工厂作用:创建SqlSession

SqlSession(会话),是一个接口,面向用户(程序员)的接口作用:操作数据库(发出sql增、删、改、查)

Executor(执行器),是一个接口(基本执行器、缓存执行器)作用:SqlSession内部通过执行器操作数据库mapped statement(底层封装对象)作用:对操 作数据库存储封装,包括 sql语句,输入参数、输出结果类型

mysql

三。一对一查询

由订单查询用户信息:sql为SELECT orders.*,USER.username,USER.sex,USER.address FROM orders,USER WHERE orders.user_id = us er.id

resultType:使用较为简单,如果pojo中没有包括查询出来的列名,需要增加列名对应的属性,即可完成映射

resultMap:需要单独定义resultmap,实现有点麻烦,如果对查询结果有特殊的要求,使用resultmap可以完成将关联查询映射pojo属性中

resultMap是能实现延迟加载的,而resultType是无法实现的

。一对多查询

比如查询订单和订单明细:SELECT orders.*,USER.username,USER.sex,USER.address,orderdetail.id orderdetail_id,orderdetail.ite ms_id,orderdetail.items_num,orderdetail.orders_id FROM orders,USER,orderdetail WHERE orders.user_id = user.id AN D orderdetail.orders_id=orders.id

mybatis使用resultMap的collection对关联查询的多条数据映射到一个list集合属性中

五。多对多查询

比如查询用户和用户购买的商品信息:SELECT orders.*,USER.username,USER.sex,USER.address,orderdetail.id orderdetail_id,orderdet ail.items_id,orderdetail.items_num,orderdetail.orders_id,items.name items_name,items.detail items_detail,items.pri ce items_price FROM orders,USER,orderdetail,items WHERE orders.user_id = user.id AND orderdetail.orders_id=orde rs.id AND orderdetail.items_id = items.id


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值