Mybatis 基础概念个人理解
Mybatis 基础概念个人理解
-
Map
在 Java 中,我们对于数据库的操作,很大程度上就是将数据库中的一个表中的数据,取到 Java 中的一个类的实例中保存,即将数据库中的一个表“映射(Map)”到 Java 中的一个类。
-
Mapper
Mapper 则是 Mybatis 中很重要的一个概念,根据我的理解,它就是上面提到的逻辑上映射的一个实现,表现形式为一个 Java 类以及其中的方法,之后所有的操作都是围绕这个概念而进行的:
Mapper 就是进行 Map 动作的类,而不同的 Map 动作(即不同的 SQL 语句),就对应 Mapper 类中不同的方法。
因此,我们所需要做的就是向 Mybatis 提供必要的信息,然后 Mybatis 帮助我们自动生成这个类中的方法。
-
Java Bean
既然是要将数据库中的一个表映射到 Java 中的一个类,那么为了方便生成,必须使用 Java Bean 形式的类,举例如下:
public class Item { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
-
Mapper 接口
由于我们需要 Mybatis 帮我们生成 Mapper 中的方法,方便我们进行不同的“映射”操作,所以我们需要先定义一个 Mapper 接口,里面定义方法的原型,之后 Mybatis 就会帮我们实现,如下:
public interface ItemMapper { Item selectItem(int id);//通过一个 id 来从数据库中取回 Item 信息的“映射”操作。 }
-
ItemMapper.xml
定义好接口后,我们需要告诉 Mybatis 我们想要这个接口干什么样的“映射”操作,不然 Mybatis 也无从生成。
有两种方式,通过 xml 文件告诉 Mybatis,或者是通过 Mapper 接口中的 Annotation 注解:
<?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="davidzwb.mybatis.mapper.ItemMapper"> <select id="selectItem" parameterType="Integer" resultType="davidzwb.mybatis.item.Item"> select * from itemlist where id = #{id} </select> </mapper>
<mapper> 标签告诉 Mybatis 要生成方法的类是这个。
<select> 标签代表一种 Mybatis 预先定好的“映射”操作,id 代表这个“映射”对应类中的哪个方法,parameterType 代表这个方法接收用户传入的参数的类型, resultType 代表要用来装返回数据的 Java Bean 类。
所以通过这个 xml 文件我们告诉 Mybatis 的是,在 ItemMapper 类中的 selectItem 方法里自动生成,完成的操作是,传入一个 Integer 类型的 id,然后在数据库中执行 “select * from itemlist where id=?”,最后将返回的数据存入 Item 类中。
-
mybatis-config.xml
除了上述的主要信息外,还有一些必要信息需要告诉 Mybatis:
<?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> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="org.postgresql.Driver"/> <property name="url" value="jdbc:postgresql://127.0.0.1:5432/davidzwb"/> <property name="username" value="davidzwb"/> <property name="password" value=""/> </dataSource> </environment> </environments> <mappers> <mapper resource="davidzwb/mybatis/mapper/ItemMapper.xml"/> </mappers> </configuration>
标签告诉 Mybatis 刚才的 Mapper 描述文件的位置。 标签告诉 Mybatis 链接数据库所必要的一些参数,如地址、端口、驱动、用户名以及密码。 -
最后就可以试试编译运行了^_^。