mybatis使用心得

7 篇文章 0 订阅
5 篇文章 0 订阅

源码学习的博文

http://www.cnblogs.com/dongying/p/4031382.html

http://blog.csdn.net/isea533/article/category/2092001

工具或插件

IDEA安装Mybatis插件"Free MyBatis plugin",mac上按住Command+option键单击mapper函数可以直接跳转到xml方法中

PageHelper分页插件,(不推荐mybatis-paginator,这个插件早已经不再更新,并且不支持foreach)

通用mapper:插件会根据实体类中的字段自动拼接生成sql语句

Mybatis Generator:自动生成实体类和mapper中的通用方法

Mybatis可执行语句拼接工具 原理简单能够满足基本的需求

Mybatis拦截器打印可执行语句 见博文中最后面我使用的拦截类

FluentMybatis  基于mybatis但青出于蓝, No XML, No Mapper, No If else, No String魔法值编码, 只需Entity就实现强大的FluentAPI: 支持分页, 嵌套查询, AND OR组合, 聚合函数...

SimpleCurd  2个类,实现类ActiveRecord,无需写Mapper, 简单小巧, 作者的两个类代码写的易读简洁,强烈建议花时间看一下源代码

下面是一些基于mybatis generator的工具,可以更简单的生成model和mapper

mybatis-plus http://mp.baomidou.com

现在集成mybatis推荐使用mybatis-plus即可,方便简单

mybatis-plus = PageHelper+Mybatis Generator+MyBatis 通用 Mapper

 

还可以试一下图形界面生成mybatis代码,

https://github.com/astarring/mybatis-generator-gui,jar下载地址,会生成example类,每一张表都要手动选择生成, 支持多种数据库选择

https://github.com/xialeistudio/mybatis-generator-gui,jar下载地址,可以直接下载可运行的jar包,不会生成example类,全局生成,只支持mysql

IDE上可以安装免费的EasyCode插件

1.模糊查询,mysql数据库支持三种写法

1)like '%${search}%'

2)  like concat('%',trim(#{search}),'%')

3)  like "%"#{search}"%"     mysql支持这样的条件写法比如select * from user where name like "%"'刘'"%"是可以查出所有姓刘的用户的

2.单元测试

在测试类的类定义上面加上注解

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={DataConfig.class,MybaitsConfig.class, ServiceImpl.class})

MybatisConfig.java代码为

 

@Configuration
@MapperScan(basePackages={"com.companyName.dao.mapper"})
public class MybaitsConfig {}

 

因为我都是用的java配置,所以使用classes,需要把自己使用了注解的类全部包含,否则会出现注入失败

如果数据库和mybatis配置是用的spring-db.xml中配置,@ContextConfiguration(locations={"classpath:spring-db.xml"}),locations和classes不能同时使用

当然也可以参照网上创建SqlSessionTemplate和SqlSessionFactory来测试mapper方法

 

上次面试被问到一级缓存和二级缓存,我去平时都不用mybatis的缓存好不,一级缓存就是同一次sqlsession请求中再次用同样的sql查询就会缓存,二级缓存就是不同sqlsession之间共用的缓存

 

常见问题

1.字段为保留词会报语法错误,mybatis-plus默认语句没有给查询字段添加反引号

调试技巧:在com.mysql.cj.jdbc.ClientPreparedStatement的executeInternal方法打上断点,可以查看向mysql发送的数据包sendPacket变量

原因:发现mybatis-plus并没有给每个字段名加上反引号,如果字段是保留词,例如我的字段名为'groups'就会报语法错误,这个问题困扰了我两个小时

解决方案:@TableField("`groups`") 在实体类的字段上面加上@TableField注解,注意其中的反引号

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值