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")


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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值