MyBatis注意事项

由于项目需求最近开始学习mybatis,才入门有很多没有注意的也犯了很多错,在这里总结一下。

1.核心配置文件SqlMapConfig.xml

头文件:

<!DOCTYPE configuration
                PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
                "http://mybatis.org/dtd/mybatis-3-config.dtd">
datasource标签用于设置数据库连接信息,属性type选择pooled;

datasource中property标签则是具体数据库链接的内容

<dataSource type="POOLED">    <property name="driver" value="${jdbc.driver}" />

    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password	}" />
</dataSource>

注:如果选择使用属性文件配置连接,则需要新建jdbc.propertise文件并添加标签
<properties resource="jdbc.properties"/>

2.映射文件

<dataSource type="POOLED">    <property name="driver" value="${jdbc.driver}" />

    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password	}" />
</dataSource>
mapper标签内写CURD语句及对应的参数和结果,namespace解决不同需求下方法重名的问题。
注意:${}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,${}括号中只能是value,如果用了其他值,则会报错:Error querying database.  Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'username' in 'class java.lang.String'。

3.Dao开发

Dao开发有两种类型,一种是原始的通过实现接口完成代码的方式,一种是利用动态代理的方式完成。
前一种开发方式Dao方法体存在重复代码:通过SqlSessionFactory创建SqlSession,调用SqlSession的数据库操作方法,调用sqlSession的数据库操作方法需要指定statement的id,这里存在硬编码,不利于开发维护。

后一种方式代码精简,开发简单,只需要接口,但配置较复杂一点,需多练习。

mapper接口代理实现编写规则:
1) 映射文件中namespace要等于接口的全路径名称
2) 映射文件中sql语句id要等于接口的方法名称
3) 映射文件中传入参数类型要等于接口方法的传入参数类型
4) 映射文件中返回结果集类型要等于接口方法的返回值类型

4.hibernate和mybatis区别

hibernate:它是一个标准的orm框架,比较重量级,学习成本高.
优点:高度封装,使用起来不用写sql,开发的时候,会减低开发周期.
缺点:sql语句无法优化
应用场景:oa(办公自动化系统), erp(企业的流程系统)等,还有一些政府项目,

总的来说,在用于量不大,并发量小的时候使用.

mybatis:它不是一个orm框架, 它是对jdbc的轻量级封装, 学习成本低,比较简单

优点:学习成本低, sql语句可以优化, 执行效率高,速度快
缺点:编码量较大,会拖慢开发周期
应用场景: 互联网项目,比如电商,P2P等
总的来说是用户量较大,并发高的项目.
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值