设为首页 收藏本站
查看: 847|回复: 0

[经验分享] mybatis与ibatis的细微差别

[复制链接]

尚未签到

发表于 2016-11-25 10:09:26 | 显示全部楼层 |阅读模式
  最近公司做项目要我们自己先熟悉熟悉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")
  

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

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-305372-1-1.html 上篇帖子: mybatis与spring整合(基于Annotation) 下篇帖子: mybatis 第一天环境的搭建(二)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表