Mybatis简介
对于Mybatis官方的定义我不在这里记录了,百度百科有很详细的说明。我理解的是它作为一个三方操作数据库的工具,提供了对数据库连接,操作的功能,能够实现原生SQL所能实现的绝大部分功能,与Hibernate不同的是,它是一个半ORM框架,只提供了对数据库表进行对象映射,但是并没有封装SQL,需要我们自己去写SQL语句来进行操作。Python中的Sqlalchemy是同时具有Hibernate和Mybatis的功能的,通过程序员自己配置来选择是使用ORM还是非ORM,我以往都是使用Sqlalchemy来进行原生SQL来进行数据处理,很少用ORM。
需要的jar包和配置文件
需要用到两个jar包,我这里就直接使用Maven来导入jar包:
1 | <dependency> |
需要两种类型的配置文件,一种是核心配置文件,一种是与dao(mapper)接口相映射的XML文件。还有一种可选的配置文件,用于存储数据库连接信息:
- 核心配置文件mybatis-config.xml:用于配置加载哪个数据源,是否开启延迟加载,是否使用二级缓存,实体类别名,mapper文件扫描等
- mapper映射文件mapper.xml:用于编写SQL语句
- 数据库配置信息文件db.properties:存放数据库连接信息
db.properties的内容为:
1 | # jdbc驱动 |
mybatis-config.xml中配置较多,根据业务需求来进行选择性配置,我这里就简单的配置一下,主要记录一下大体结构和约束信息:
1 | <?xml version="1.0" encoding="UTF-8" ?> |
mapper.xml中主要是根据业务来编写SQL语句,所以这里我就记录一下大概结构和约束信息:
1 | <?xml version="1.0" encoding="UTF-8" ?> |
编写SQL的两种方式
Mybatis提供了两种编写SQL方式,一种是通过mapper.xml来进行SQL的编写,还有一种是使用注解的方式在mapper接口里进行SQL的编写。根据高内聚低耦合的思想,使用注解的方式应该是不太提倡的,通过XML的方式是可以实现解耦的,如果是工具开发的话,就没那么多要求了,怎么快怎么来就行。
XML的方式配置文件我就不再记录了,上面是有的。使用这种方式需要注意两点:1.在不使用spring整合的情况下,要将mapper和mapper.xml放在同一个文件夹下,且名字相同 2.使用Maven的情况下,Maven默认是不会将非resources文件夹下的xml文件构建进target中的,需要在pom.xml中配置来让Maven将xml文件一起构建进target:
1 | <build> |
通过注解的方式:
1 | public interface HusbandMapper { |