MyBatis小结
来源:互联网 发布:极限挑战 知乎 编辑:程序博客网 时间:2024/06/07 00:10
(一)使用MyBatis的开发步骤
1.下载mybatis-3.2.2.jar包并导入工程
2.编写MyBatis核心配置文件(configuration.xml)
3.创建实体类-POJO
4.DAO层-SQL映射文件(mapper.xml)
5.创建测试类
–读取核心配置文件mybatis-config.xml
–创建SqlSessionFactory对象,读取配置文件
–创建SqlSession对象
–调用mapper文件进行数据操作
(二)MyBatis框架优缺点
优点
◦与JDBC相比,减少了50%以上的代码量
◦最简单的持久化框架,小巧并简单易学
◦SQL代码从程序代码中彻底分离,可重用
◦提供XML标签,支持编写动态SQL
◦提供映射标签,支持对象与数据库的ORM字段映射
缺点
◦SQL语句编写工作量大,对开发人员有一定要求
◦数据库移植性差
(三)MyBatis基本要素
MyBatis的核心对象
◦SqlSessionFactoryBuilder
◦SqlSessionFactory
◦SqlSession
mybatis-config.xml 系统核心配置文件
mapper.xml SQL映射文件
核心对象最佳生命周期最佳作用域
用服务停止--application整个应用内SqlSession一次请求的有效期一次请求的有效期内
SqlSessionFactoryBuilder
方法体内方法体内(局部变量)SqlSessionFactory从应用服务启动开始一直到应用服务停止--application整个应用内SqlSession一次请求的有效期一次请求的有效期内
(四)SQL映射的XML文件
SQL映射文件的几个顶级元素(按照定义的顺序)
◦mapper- namespace
◦cache- 配置给定命名空间的缓存
◦cache-ref– 从其他命名空间引用缓存配置
◦resultMap–用来描述数据库结果集和对象的对应关系
◦sql– 可以重用的SQL块,也可以被其他语句引用
◦insert– 映射插入语句
◦update– 映射更新语句
◦delete– 映射删除语句
◦select– 映射查询语句
1:mapper
◦namespace:命名空间
–namespace和子元素的id联合保证唯一,区别不同的mapper
–绑定DAO接口
–namespace的命名必须跟某个接口同名
–接口中的方法与映射文件中SQL语句id一一对应
2:select
select语句有很多属性可以详细配置每一条语句
◦id
–命名空间中唯一的标识符
–接口中的方法与映射文件中的SQL语句id一一对应
◦parameterType
–传入SQL语句的参数类型
parameterType◦基础数据类型–int、String、Date等–只能传入一个,通过#{参数名}即可获取传入的值◦复杂数据类型–Java实体类、Map等–通过#{属性名}或者#{map的keyName}即可获取传入值
◦resultType(resultMap)
–SQL语句返回值类型的完整类名或别名
resultType:直接表示返回类型
◦基本数据类型
◦复杂数据类型
resultMap:对外部resultMap的引用
◦应用场景:
–数据库字段信息与对象属性不一致
–复杂的联合查询,自由控制映射结果
二者不能同时存在,本质上都是Map数据结构
ps:当数据库里的字段和JavaBean里的字段不想同时,可以通过resultMap来解决,例如下面的proName属性,数据库中是proName,但JavaBean中是proname,通过
配置resultMap,就让两个不同的字段关联起来了。
<resultMap type="bean.provider" id="providerResult"><id column="id" jdbcType="BIGINT" property="id" /><result column="proCode" jdbcType="VARCHAR" property="proCode" /><result column="proName" jdbcType="VARCHAR" property="proname" /></resultMap>
ps:在一些sql语句中,如果要传入多个值,可以将其封装为一个对象,再传入,例如下面中传入的provider对象。
ps:再传入对象的时候,要是存在JavaBean中的字段值与数据库中的字段值不相同(例如resultMap中的proName与proname),在书写sql语句中,proName是数据库中的字段,而#{proname}中的proname是代表的JavaBean中的字段,若无法对应,则会报错。
<select id="findProviderByPronameAndProcode" resultMap="providerResult"parameterType="bean.provider">select * from smbms_provider where proName like CONCAT ('%',#{proname},'%') and proCode like CONCAT ('%',#{proCode},'%')</select>
阅读全文
1 0
- mybatis小结
- Mybatis小结
- mybatis小结
- MyBatis小结
- mybatis--foreach,choose 小结
- mybatis 查询小结
- MyBatis的使用小结
- mybatis 使用经验小结
- Mybatis项目小结
- Mybatis 动态sql 小结
- mybatis学习小结
- mybatis-sql小结
- mybatis 使用小结
- Mybatis使用小结
- MyBatis使用小结
- MyBatis学习小结
- mybatis-04 小结
- mybatis使用小结
- npm中Error: could not get uid/gid问题的解决方法
- Python中 range 和xrange的详细区别
- Java--类反射(一)
- Java动态代理机制小结
- Unity金字塔的创建
- MyBatis小结
- 服务器推技术研究Comet
- API生命周期第三阶段:API实施模式,以及结合swagger和项目现状的最佳模式
- Hadoop异常总结
- 算法题/从1到n的正数中1的出现次数
- 浅谈计算几何的模板集合
- CAS
- HDU
- java 线程池复制文件