Mybatis使用
写在前面
从大二参加数学建模竞赛到现在读研一决定转码,我使用CSDN已经有快四年了,从matlab使用到学习java,CSDN给我提供了很多的帮助。现在我计划写我的在CSDN上的第一篇博客,关于学习Mybatis。
mybatis入门
mybatis框架概述
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。
MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
MyBatis 可以通过简单的 XML 或注解来配置各种操作数据库的dao接口。
总之,Mybatis使得数据库开发可以将更多精力放在sql语句本身,极大提高了码农们CRUD的效率。
mybatis环境搭建
-
创建maven工程并导入坐标
不需依赖任何骨架,直接创建一个包含main与test的maven框架。
修改pom.xml配置文件,导入需要的依赖包mybatis与mysql,你也可以导入其他需要的jar包,如junit等。<packaging>jar</packaging> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.32</version> </dependency> </dependencies>
-
创建实体类和dao接口
实体类就是我们要操作的对象,我们从数据库中查询出的数据就要按照实体类对象的格式封装起来。而dao接口就是我们操作数据库的方法,里面放着增删查改各个抽象方法。一般一个dao接口对应着一张要操作的table表。
为了使得项目格式规范化,我们将实体类统一放在domain包中。而将dao接口放在dao包中。 -
创建mybatis的主配置文件 SqlMapConfig.xml
主配置文件需要配置连接池与事务类型、映射配置文件等信息,映射配置文件存放我们对各个dao接口的配置信息。
主配置文件一般命名为SqlMapConfig.xml,存放在resources目录下。<?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"> <!--mybatis的主配置文件--> <configuration> <!--配置环境--> <environments default="mysql"> <!--配置mysql的环境--> <environment id="mysql"> <!--配置事务的类型--> <transactionManager type="JDBC"/> <!--配置数据源(连接池)--> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <!--指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件,由于映射配置文件存在于目录中而非包中,在windows中用反斜杠表示分层--> <mappers> <mapper resource="com/zjuee/dao/UserDao.xml"/> </mappers> </configuration>
-
创建映射配置文件
映射配置文件配置各个dao接口的具体实现方式,这里还要分情况:如果你是采用注解方式来配置dao接口,那么就不需要创建映射配置文件了。因此一个dao接口对应一份映射配置文件。
配置文件的主要内容是mapper标签下的各个操作标签,mapper标签的命名空间是目标接口的全类名。mapper的下一层就是接口中的具体方法,不同的标签名对应不容类型的sql语句。
标签名 | sql语句 |
---|---|
select | 查询 |
insert | 增添 |
delete | 删除 |
update | 修改 |
而在每一个子标签中,又有其他一些必要的属性,如resultType是返回值的类型,你也可以使用resultMap属性来自己配置想要的返回值类型,这里只展示最基本的;而id是该子标签所映射的方法名称,这个方法名加上mapper里namespace的全类名就可以查找到任意一条接口中的方法;还有parameterMap属性,表示查询所需参数的信息。
<?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="com.zjuee.dao.UserDao">
<!--配置查询所有-->
<select id="findAll" resultType="com.zjuee.domain.User">
SELECT * FROM user;
</select>
</mapper>
注意事项: mybatis的映射配置文件位置必须和dao接口的包结构相同。
- 简单实现案例
直接上图,代码中已经分析的比较清楚了。
先写这么多吧,剩下的以后再更,转码人太辛苦了。
参考
[1] https://mybatis.org/mybatis-3/zh/index.html