`
y806839048
  • 浏览: 1118433 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

ibatise

阅读更多

ibatis和hibernate一样,最大的区别在于映射文件写的内容以什么为主

1,java 类文件
2,类对应的xml文件 Student.xml : 
相当于hibernate的map文件 里面写引入的实体类,和对应的操作方法,映射关系,不写对应关系。

但是hibernate的映射文件是写实体与表的完全对应关系,映射关系

3,SqlMapConfig.xml :
配置一些数据库引用文件,集成映射文件

hibernate的配置文件是配置一些数据源引用,集成映射文件,配置缓存策略

相当于hibernate的配置文件

#号是占位符,对应方法中的参数变量

name=#name#,birth=#birth#,score=#score#


Batis 的优缺点:

优点:

1、减少代码量,代码简单 sql代方法

2、性能增强;

3、Sql 语句与程序代码分离;

4、增强了移植性;

缺点:

1、和Hibernate 相比,sql 需要自己写;

2、参数数量只能有一个,多个参数时不太方便;




    package com.iflytek.entity;
    import java.sql.Date;
    /**
    * @author xudongwang 2011-12-31
    *
    * Email:xdwangiflytek@gmail.com
    *
    */
    publicclass Student {
    // 注意这里需要保证有一个无参构造方法,因为包括Hibernate在内的映射都是使用反射的,如果没有无参构造可能会出现问题
    privateint id;
    private String name;
    private Date birth;
    privatefloat score;
    publicint getId() {
    return id;
    }
    publicvoid setId(int id) {
    this.id = id;
    }
    public String getName() {
    return name;
    }
    publicvoid setName(String name) {
    this.name = name;
    }
    public Date getBirth() {
    return birth;
    }
    publicvoid setBirth(Date birth) {
    this.birth = birth;
    }
    publicfloat getScore() {
    return score;
    }
    publicvoid setScore(float score) {
    this.score = score;
    }
    @Override
    public String toString() {
    return"id=" + id + "\tname=" + name + "\tmajor=" + birth + "\tscore="
    + score + "\n";
    }
    }


Student.xml

    <?xmlversion="1.0"encoding="UTF-8"?>
    <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
    "http://ibatis.apache.org/dtd/sql-map-2.dtd">
    <sqlMap>
    <!-- 通过typeAlias使得我们在下面使用Student实体类的时候不需要写包名 -->
    <typeAliasalias="Student"type="com.iflytek.entity.Student"/>
    <!-- 这样以后改了sql,就不需要去改java代码了 -->
    <!-- id表示select里的sql语句,resultClass表示返回结果的类型 -->
    <selectid="selectAllStudent"resultClass="Student">
    select * from
    tbl_student
    </select>
    <!-- parameterClass表示参数的内容 -->
    <!-- #表示这是一个外部调用的需要传进的参数,可以理解为占位符 -->
    <selectid="selectStudentById"parameterClass="int"resultClass="Student">
    select * from tbl_student where id=#id#
    </select>
    <!-- 注意这里的resultClass类型,使用Student类型取决于queryForList还是queryForObject -->
    <selectid="selectStudentByName"parameterClass="String"
    resultClass="Student">
    select name,birth,score from tbl_student where name like
    '%$name$%'
    </select>
    <insertid="addStudent"parameterClass="Student">
    insert into
    tbl_student(name,birth,score) values
    (#name#,#birth#,#score#)
    <selectKeyresultClass="int"keyProperty="id">
    select @@identity as inserted
    <!-- 这里需要说明一下不同的数据库主键的生成,对各自的数据库有不同的方式: -->
    <!-- mysql:SELECT LAST_INSERT_ID() AS VALUE -->
    <!-- mssql:select @@IDENTITY as value -->
    <!-- oracle:SELECT STOCKIDSEQUENCE.NEXTVAL AS VALUE FROM DUAL -->
    <!-- 还有一点需要注意的是不同的数据库生产商生成主键的方式不一样,有些是预先生成 (pre-generate)主键的,如Oracle和PostgreSQL。
    有些是事后生成(post-generate)主键的,如MySQL和SQL Server 所以如果是Oracle数据库,则需要将selectKey写在insert之前 -->
    </selectKey>
    </insert>
    <deleteid="deleteStudentById"parameterClass="int">
    <!-- #id#里的id可以随意取,但是上面的insert则会有影响,因为上面的name会从Student里的属性里去查找 -->
    <!-- 我们也可以这样理解,如果有#占位符,则ibatis会调用parameterClass里的属性去赋值 -->
    delete from tbl_student where id=#id#
    </delete>
    <updateid="updateStudent"parameterClass="Student">
    update tbl_student set
    name=#name#,birth=#birth#,score=#score# where id=#id#
    </update>
    </sqlMap>


SqlMapConfig.xml

    <?xmlversion="1.0"encoding="UTF-8"?>
    <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
    "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
    <sqlMapConfig>
    <!-- 引用JDBC属性的配置文件 -->
    <propertiesresource="com/iflytek/entity/SqlMap.properties"/>
    <!-- 使用JDBC的事务管理 -->
    <transactionManagertype="JDBC">
    <!-- 数据源 -->
    <dataSourcetype="SIMPLE">
    <propertyname="JDBC.Driver"value="${driver}"/>
    <propertyname="JDBC.ConnectionURL"value="${url}"/>
    <propertyname="JDBC.Username"value="${username}"/>
    <propertyname="JDBC.Password"value="${password}"/>
    </dataSource>
    </transactionManager>
    <!-- 这里可以写多个实体的映射文件 -->
    <sqlMapresource="com/iflytek/entity/Student.xml"/>
    </sqlMapConfig>





















分享到:
评论

相关推荐

    ibatise例子

    标题 "ibatise例子" 暗示我们将探讨与iBATIS这个开源Java框架相关的内容。iBATIS是一个数据持久层框架,它允许开发者将SQL语句直接嵌入到Java代码中,简化了数据库操作。在这个例子中,我们很可能是要通过实际的代码...

    ibatise例程JPetStore

    《ibatise例程JPetStore深度解析》 在IT领域,ibatis(现更名为MyBatis)是一款广泛应用的持久层框架,它提供了一种灵活的SQL映射机制,简化了Java应用程序与数据库的交互。JPetStore是ibatis的一个经典示例项目,...

    ibatis 参考手册

    **Ibatis 概述** Ibatis 是一个轻量级的Java持久层框架,它与Hibernate、MyBatis等ORM框架类似,但相比而言,Ibatis 更注重SQL的灵活性,允许开发者自由编写SQL语句,避免了对复杂对象关系映射的处理。...

    CPPC++_PCLPoint Cloud Library点云库学习记录.zip

    CPPC++_PCLPoint Cloud Library点云库学习记录

    基于Python的百度百科爬虫.zip

    基于Python的百度百科爬虫

    CPPC++_Qt 之 GUI 控件使用 网络 架构原理 运行机制理解DTK 重绘控件方式的框架解析IDE 技巧.zip

    CPPC++_Qt 之 GUI 控件使用 网络 架构原理 运行机制理解DTK 重绘控件方式的框架解析IDE 技巧

    10020.doc

    10020

    使用加权最小二乘法和加权最小最大法进行优Matlab实现.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    【多变量输入单步预测】基于CEEMDAN-VMD-CNN-BILSTM的风电功率预测研究附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    CPP笔记路线图编码器编程语言软件.zip

    cppc++

    2000d.doc

    2000d

    Apache Kafka:Kafka集群运维与监控.docx

    Apache Kafka:Kafka集群运维与监控.docx

    CPPC++_TNN是由腾讯优图实验室和光影实验室共同开发的一种面向移动桌面和服务器的统一深度学习推理框架,TNN具有.zip

    CPPC++_TNN是由腾讯优图实验室和光影实验室共同开发的一种面向移动桌面和服务器的统一深度学习推理框架,TNN具有

    huluxia.apk

    huluxia.apk

    Python商品销售数据分析可视化项目源码(期末大作业).zip

    Python商品销售数据分析可视化项目源码(期末大作业).zip,个人经导师指导并认可通过的98分大作业设计项目。主要针对计算机相关专业的正在做期末大作业设计的学生和需要项目实战练习的学习者,可作为课程设计、期末大作业,代码资料完整下载可用。 Python商品销售数据分析可视化项目源码(期末大作业).zip,个人经导师指导并认可通过的98分大作业设计项目。主要针对计算机相关专业的正在做期末大作业设计的学生和需要项目实战练习的学习者,可作为课程设计、期末大作业,代码资料完整下载可用。Python商品销售数据分析可视化项目源码(期末大作业).zip,个人经导师指导并认可通过的98分大作业设计项目。主要针对计算机相关专业的正在做期末大作业设计的学生和需要项目实战练习的学习者,可作为课程设计、期末大作业,代码资料完整下载可用。Python商品销售数据分析可视化项目源码(期末大作业).zip,个人经导师指导并认可通过的98分大作业设计项目。主要针对计算机相关专业的正在做期末大作业设计的学生和需要项目实战练习的学习者,可作为课程设计、期末大作业,代码资料完整下载可用。Python商品销售数据分析

    [CSP-J 2023] 小苹果的代码

    [CSP-J 2023] 小苹果的代码

    【目标跟踪】扩展物体和群体目标的形状跟踪RHMs附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    【SCI2区】基于飞蛾扑火优化算法MFO优化TCN锂电池健康寿命预测算法研究Matlab实现.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    基于SVM的简单机器学习分类,可以使用svm,knn,朴素贝叶斯,决策树四种机器学习方法进行分类.zip

    基于SVM的简单机器学习分类,可以使用svm,knn,朴素贝叶斯,决策树四种机器学习方法进行分类

    基于YOLOv5和PSPNet的实时目标检测和语义分割系统Python实现源码+文档说明(高分毕设)

    基于YOLOv5和PSPNet的实时目标检测和语义分割系统Python实现源码+文档说明(高分毕设),该项目是个人毕设项目,答辩评审分达到98分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。 基于YOLOv5和PSPNet的实时目标检测和语义分割系统Python实现源码+文档说明(高分毕设)基于YOLOv5和PSPNet的实时目标检测和语义分割系统Python实现源码+文档说明(高分毕设)基于YOLOv5和PSPNet的实时目标检测和语义分割系统Python实现源码+文档说明(高分毕设)基于YOLOv5和PSPNet的实时目标检测和语义分割系统Python实现源码+文档说明(高分毕设)基于YOLOv5和PSPNet的实时目标检测和语义分割系统Python实现源码+文档说明(高分毕设)基于YOLOv5和PSPNet的实时目标检测和语义分割系统Pyt

Global site tag (gtag.js) - Google Analytics