一些Mybatis的使用心得
在我学习使用Mybatis的这段日子,对于它有了一些基础的认识,所以写篇博客分享一下自己的学习经验。
MyBatis 是一款优秀的持久层框架,灵活多变,可以自己编写sql语句。它可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 实体类对象映射成数据库中的记录。个人不喜欢配置XML的方式,比较喜欢注解的方式来编写程序。
说下Mybatis的执行过程:
1、配置MyBatis的配置文件,SqlMapConfig.xml(名称不固定)
2、通过配置文件,加载MyBatis运行环境,创建SqlSessionFactory会话工厂
SqlSessionFactory 在实际使用时按单例方式。
3、通过SqlSessionFactory创建SqlSession
SqlSession 是一个面向用户接口(提供操作数据库方法),实现对象是线程不安全的,建议sqlSession应用场合在方法体内。
4、调用 sqlSession 的方法去操作数据。
如果需要提交事务,需要执行 SqlSession 的 commit() 方法。
5、释放资源,关闭SqlSession
接下来上代码吧!!
我项目用的是SpringBoot和Mybatis组合使用的方式,开发软件是IDEA,很方便,个人觉得Eclipse时代总会向着IDEA时代前进的。
下图是Mybatis需要引入的包
前面两个是Mybatis组合Springboot的工具包,第三个是Mybatis的分页组件Pagehelper,很好用。
接下来我就用项目中登陆功能来说下Mybatis的使用过程吧
首先将数据库表和实体类绑定,下图为UserDO实体类
其实都是基于注解的一些方式,添加JPA依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
SpringBoot JPA 中的@Table注解来绑定表,填入你数据库中的用户表名,@Column将实体类属性和表字段一一对应,填入表字段名,既然有实体类,当然不能少了属性的Get、Set、ToString方法,因为我项目中引用了@Lombok框架,自动实现该实体类属性的Get、Set、ToString方法了,那我就来说下这个Lombok的使用方法吧。
首先也是引入包
不要以为引入包就行了,还有个重要的步骤要去做,就是在IDEA中安装Lombok插件
首先进入Setting → Pluging ,然后搜索Lombok就可以看见了,然后点右边的安装就行了。
这样我们就完成了数据绑定这一步。
然后关键来了,我没有使用XML文件来写入sql,而是用的Mybatis自己的Mapper和一些注解来进行我的增删改查,其实Mapper它有自己封装的一套通用方法,https://blog.****.net/keliyi2007/article/details/78730863,可以在这个博文看使用方法。
第一次写博客感觉有点累了啊,不过我会坚持下去的。
接下来新建Mapper类,集成Mapper<T>,里面传入绑定数据后的实体类,见下图
@Service注解是SpringBoot框架中的的依赖注入,以后我会写一篇SpringBoot的博文来详细说一下
我们现在来写个简单的查询语句,验证登陆的用户名和密码
@Select中写入Sql语句,其中传入参数字段用”#{字段名}”来表示,名称要与方法中@Param注解传入的参数名称是一致,不然会报错。
可以看的出这个方法返回的UserDO实体类对象,自然就是通过用户名和密码查询出来的实体类数据,用@Relsults注解来提取你从数据库表中想要获取的字段值,有一个要注意的地方就是@Result中的property属性中的值必须与实体类的属性名称一一对应,如下:
这就是基础的注解式写Sql的方式,下篇博文我再说下通用Mapper方法的使用和另外一种写Sql的方式,也是注解,用于一些逻辑复杂,需要动态Sql的情况。