`
z_l_ming
  • 浏览: 11804 次
文章分类
社区版块
存档分类
最新评论

mybatis与ibatis的细微差别

阅读更多

最近公司做项目要我们自己先熟悉熟悉mybatis,在网上搜了一些资料,照着做了练习,从自己做的过程中犯得错误总结一下。

mybatis 的前生是ibatis,我就先做了一个ibatis连接数据库做简单的增删改查,模糊查询等,接着我又用mybatis做了相同的事情,发现了一些差别,也犯了一些错误记录下来

首先我用的是Myeclipse8.5 数据库是sql2005 (当然你也可以用mysql,oracle)

区别:

第一:驱动包:ibatis我用的是ibatis-2.3.4.726.jar

mybatis用的是mybatis-3.1.1.jar

第二:配置文件

ibatis 的 SqlMapConfig.xml

<?xml version="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>
<properties resource="com/itcast/SqlMap.properties"></properties>
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="${driver}"/>
<property name="JDBC.ConnectionURL" value="${url}"/>
<property name="JDBC.Username" value="${username}"/>
<property name="JDBC.Password" value="${password}"/>
</dataSource>
</transactionManager>
<sqlMap resource="com/itcast/Student.xml"></sqlMap>
</sqlMapConfig>

mybatis 的mybatis-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="com/mybatis/ServerConfig.properties"></properties>
<typeAliases>
<typeAlias type="com.mybatis.Student" alias="Student" />
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED"><!--从配置文件中取出数据库链接的参数-->
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments><!--这块是数据库连接用的 也叫数据源-->
<mappers>
<mapper resource="com/mybatis/Student.xml" />
</mappers>
</configuration>
------这里的取数据连接的方式都差不多,只是那个标签变了

ibatis 的 Student.xml

<?xml version="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 alias="Student" type="com.itcast.Student"/>
<select id="selectAllStudent" resultClass="Student">
select *
from student
</select>

<select id="selectStudentById" resultClass="Student" parameterClass="int">
select *
from student
where sid=#sid#
</select>

<select id="selectStudentByName" resultClass="Student" parameterClass="String">
select *
from student
where sname like '%$sname$%'
</select>

<select id="countAllStudent" resultClass="Integer" >
select count(*)
from student
</select>
<insert id="insertStudent" parameterClass="Student">
insert into Student(
sid,
sname,
major,
birth,
score
)
values(
#sid#,#sname#,#major#,#birth#,#score#
)
</insert>

<delete id="deleteStudentById" parameterClass="int">
delete
from Student
where sid=#sid#
</delete>

<update id="updateStudentById" parameterClass="student">
update Student
set
sname=#sname#,
major=#major#,
birth=#birth#,
score=#score#
where sid=#sid#
</update>
</sqlMap>

mybatis 的Student.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.mybatis.Student"><!-- 命名空间是实体类的路径 -->

<select id="selectStudentById" resultType="Student" parameterType="int">
select *
from Student
where sid=#{sid}
</select>

<select id="selectAllStudent" resultType="Student">
select *
from Student
</select>

<insert id="insertStudent" parameterType="Student">
insert into Student(
sid,
sname,
major,
birth,
score
)
values(
#{sid},#{sname},#{major},#{birth},#{score}
)
</insert>

<update id="updateStudentById" parameterType="student">
update Student
set
sname=#{sname},
major=#{major},
birth=#{birth},
score=#{score}
where sid=#{sid}
</update>

<delete id="deleteStudentById" parameterType="int">
delete
from Student
where sid=#{sid}
</delete>

<select id="selectStudentByName" parameterType="String" resultType="Student">
select * from Student where sname like '%${_parameter}%'
</select>
<!--mysql分页查询,sqlserver分页查询未写待定
<select id="find" parameterType="map" resultType="Student">
select * from system_news limit #{inoff},#{pagesize}
</select>
-->
<select id="find_count" resultType="Integer">
select count(*)
from Student
</select>
</mapper>

---首先这两个文件差别

1,查询的时候参数什么的放两个井号之间,如#sid#

2,模糊查询ibatis--->

select * from student where sname like '%$sname$%'

模糊查询mybatis--->select * from Student where sname like '%${_parameter}%'

注意这个mybatis参数必须是_parameter,我就在这里犯了错,找了好久,给这个连接解释的http://www.myexception.cn/software-architecture-design/1068522.html

如果传入类型为String类型,则参数需统一修改为[_parameter],修改后的sql语句如下(不管你的参数是什么,都要改成"_parameter")


目前就只是发现这些比较深刻,先记下吧,希望像我一样初学者不要再犯我这样的错误


分享到:
评论

相关推荐

    根据MyBatis或iBatis的SQLMapper文件反向生成数据库表

    根据MyBatis或iBatis的...这可以通过编程语言与数据库操作的API来实现,比如Java中的JDBC或者MyBatis/iBatis提供的API。 执行SQL语句: 最后,将生成的数据库表结构信息通过执行相应的SQL语句来创建或者修改数据库表。

    myBatis和ibatis的区别

    通过对ibatis与myBatis之间区别的详细分析,我们可以看到myBatis不仅继承了ibatis的优点,还在很多方面进行了改进和优化,使得其在功能性和易用性上都有了显著提升。对于开发者而言,选择myBatis作为持久层框架可以...

    从iBatis迁移到MyBatis

    1. **API变更**:MyBatis的API与iBatis有所不同,比如SqlSession接口和Mapper接口的使用方式。开发者需要理解并适应这些变化。 2. **配置文件迁移**:iBatis使用的是`sqlMapConfig.xml`,而MyBatis使用`mybatis-...

    myBatis or ibatis 神器

    总结起来,myBatis和iBatis都是强大的Java持久层框架,它们通过将SQL语句与Java代码分离,提高了开发效率和代码的可维护性。myBatis作为iBatis的升级版,提供了更多的功能和便利,而iBatis Auto Generator这样的工具...

    generate mybatis ibatis artifacts

    MyBatis和iBatis是两个著名的Java持久层框架,它们简化了数据库操作与Java对象之间的映射。本文将深入探讨“generate mybatis ibatis artifacts”这个主题,它是一款为Eclipse开发的插件,旨在帮助开发者自动化创建...

    mybatis和ibatis代码生成工具

    MyBatis和iBatis是两个著名的Java持久层框架,它们都致力于简化数据库与Java代码之间的交互。在Java开发中,代码生成工具可以极大地提高开发效率,减少手动编写重复的CRUD(创建、读取、更新、删除)操作。本压缩包...

    generator, A code generator for MyBatis and iBATIS..zip

    MyBatis Generator(MBG)是一个强大的代码生成器,它为MyBatis和iBATIS提供了自动生成Java源代码和XML映射文件的能力。这个工具极大地简化了开发过程,减少了手动编写重复的 CRUD(创建、读取、更新、删除)操作...

    mybatis,ibatis,hibernate 显示查询SQL

    在IT行业中,数据库操作是应用程序开发的核心部分,而MyBatis、iBatis和Hibernate都是流行的Java持久层框架,它们简化了与数据库交互的过程。这三个框架各有特点,但都提供了ORM(对象关系映射)机制,帮助开发者将...

    MyBatis(iBatis 3)入门示例 及 整合Mybatis与Spring3

    iBatis 3是MyBatis的前身,随着时间的推移,MyBatis逐渐发展成为一个更加成熟、功能更加强大的框架。MyBatis消除了几乎所有的JDBC代码和手动设置参数以及获取结果集。它使开发者能够专注于SQL本身,而不再需要处理...

    MyBatis(iBATIS) 学习

    《MyBatis(iBATIS) 学习指南》 MyBatis,原名iBATIS,是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML...

    mybatis、ibatis、spring各种整合方式

    标题 "mybatis、ibatis、spring各种整合方式" 涉及的是在Java开发中将MyBatis、iBatis与Spring框架集成的各种方法。MyBatis和iBatis(后更名为MyBatis)是两个流行的持久层框架,而Spring是一个全面的企业级应用框架...

    mybatis/ibatis代码生成器

    数据库代码生成器,支持mybatis/ibatis两个版本;注意,ibatis(ibatis2)和mybaits(ibatis3)的xml文件中有一些语法不一样,例如 select 等元素的 parameterClass 属性改为了 parameterType 属性,resultClasss 属性改为了 ...

    mybatis/ibatis自动生成SQLMapper脚本

    MyBatis/iBatis 是两个流行的数据访问框架,它们简化了Java开发中的数据库操作。iBatis 是早期的版本,而 MyBatis 是其后继者,提供了更加强大和灵活的功能。本教程将深入探讨如何使用MyBatis/iBatis自动生成SQL...

    MyBatis和IBatis配置文件中的自动补全功能

    4. **合理组织映射文件**:将映射文件(Mapper.xml)放在正确的目录下,一般与对应的Java接口同名且位于`src/main/resources`下,这样MyBatis插件才能正确识别并提供补全。 5. **保持DTD文件最新**:随着MyBatis的...

    根据mybatis/ibatis sqlmapper文件解析生成数据库表

    标题 "根据mybatis/ibatis sqlmapper文件解析生成数据库表" 暗示了我们将会探讨一个关于MyBatis或iBatis框架的工具,它能够解析SQL映射文件并根据这些文件自动生成数据库表。这个过程对于快速构建数据库模型,尤其是...

    Mybatis/ibatiS多表映射 一对一 一对多 extjs前台取值 详细讲解

    在IT行业中,数据库操作是必不可少的一部分,特别是在使用像Mybatis或iBatis这样的持久层框架时。本话题将深入探讨如何在这些框架中处理多表映射,包括一对一和一对多的关系,以及如何在ExtJS前端获取这些数据。 ...

    ibatis和mybatis的区别

    在里面总结了ibatis和mybatis的主要区别,包括xml文件等

    iBatis和MyBatis对比

    在MyBatis中,配置文件的结构与iBatis有所不同。全局配置文件通常命名为`Configuration.xml`,而映射文件则定义了数据库表与Java对象之间的映射关系。全局配置文件中可以设置的内容包括: 1. `properties`:定义了...

    MyBatis(ibatis)学习文档.docx

    MyBatis(ibatis)学习文档 MyBatis是一款流行的基于Java的持久层框架,曾用名为iBatis。MyBatis提供了一种简洁高效的方式来访问关系数据库。通过使用MyBatis,可以将数据库访问代码与业务逻辑代码分离,从而提高系统...

    Mybatis与Ibatis的区别

    Mybatis与Ibatis都是流行的持久层框架,它们在Java开发中用于处理数据库操作。然而,两者之间存在一些显著的差异,这些差异影响了开发者的选择和使用方式。 首先,Mybatis相对于Ibatis(以前称为ibatis)的一个关键...

Global site tag (gtag.js) - Google Analytics