MyBatis入门
Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。
使用MyBatis的步骤:
(1)引入所需的jar包 mybatis-3.4.4.jar 和 mysql-connector-java-5.0.8-bin.jar(mySQl的JDBC操作包,其他数据库请自行更换)
注意mybatis的jar包尽量引用3.4以上的版本,如果使用的是3.2的版本的话,在后面使用mybatis创建公用mapper的时候会出现兼容性问题。
(2)创建mybatis-config.xml。(mybatis-config.xml 是MyBatis的全局配置文件 ,在该文件中配置:数据源,事务,等MyBatis运行的环境.)
创建步骤:在新建的项目的上的src下创建一个XML File文件,文件内容如下
<?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> <!-- 环境:配置mybatis的环境 --> <environments default="development"> <!-- 可以使用多个环境变量,切换时只需修改对应default的属性为该环境变量的id即可 --> <!-- 环境变量:可以配置多个环境变量,比如使用多数据源时,就需要配置多个环境变量 --> <environment id="development"> <!-- 事务管理 --> <transactionManager type="JDBC"></transactionManager> <!-- 数据源 --> <dataSource type="POOLED"> <!-- 注意贴过去的代码这一行会报错,网上说是复制过去的是utf-8的bom格式的,而xml支持的是不带bom格式的,这种这个部分自己手打一下,自动补全代码即可解决 --> <property name="username" value="用户名" /> <property name="url" value="jdbc:mysql://localhost:3306/数据库名" /> <property name="password" value="用户密码" /> <property name="driver" value="com.mysql.jdbc.Driver" /> <!-- 定义驱动连接,根据所使用的数据库的不同进行更换,作者使用的是mySql --> </dataSource> </environment> </environments> </configuration>
这样我们就简单的配置了一个mybatis的config配置文件了,这一步就相当于我们平常编写JDBC连接数据库的操作。
(3)接下来让我们为它建立一个表用来测试
首先,我们先建立一个学生的数据库(Student),里面存放一张年级表(grade),sql语句如下:
CREATE DATABASE `student`; USE `student`; CREATE TABLE `grade` ( `gradeName` VARCHAR(20) DEFAULT NULL, `gradeId` INT(11) DEFAULT NULL ) ENGINE=INNODB DEFAULT CHARSET=utf8; INSERT INTO `grade`(`gradeName`,`gradeId`) VALUES ('一年级',1),('二年级',2),('三年级',3);
(4)在java代码中的src文件下建立一个entity的包,里面建立一个Grade的类
package entity; public class Grade { private int gradeId; //与表中的字段gradeId对应 private String gradeName; //与表中的字段gradeName对应 public Grade() { super(); } public int getGradeId() { return gradeId; } public void setGradeId(int gradeId) { this.gradeId = gradeId; } public String getGradeName() { return gradeName; } public void setGradeName(String gradeName) { this.gradeName = gradeName; } }
(5)好了,有了实体类之后,我们就该编写实体类的接口了
在src下新建一个dao的包,里面新建一个GradeDao的接口,里面定义了两个方法的接口,代码如下:
package dao; import entity.Grade; public interface GradeDao { /** * 查询所有年级 * @return */ Grade queryAllGrade(); /** * 根据年级编号查询年级 * @param gradeId * @return */ Grade queryGradeByID(int gradeId); }
(6)建立好接口后,在建立接口的实现类之前,我们先定义一下SQL语句了,目前,我们先在xml文件中编写
首先,在src文件下新建一个mapper包,里面新建一个GradeMapper.xml,文件名和包名都可以随便取,但尽量给每个实体类编写不同的xml文件,避免查找的时候发生混乱
GradeMapper.xml文件内容如下:
<?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="dao.GradeDao"> <!-- 设置工作空间为dao.GradeDao这个类 --> <!-- 查询所有年级 --> <select id="queryAllGrade" resultType="entity.Grade"> <!-- resultType为返回值类型 --> select * from grade </select> <!-- 根据年级编号查询年级 --> <select id="queryGradeByID" resultType="entity.Grade" parameterType="int"> <!-- parameterType为传入参数类型 --> select * from grade where gradeId = #{gradeId} <!-- #{gradeId}为占位符 --> </select> </mapper>
建立好GradeMapper.xml后,我们还需要再做一件事,那就是在config文件中去映射到这个文件,找到我们刚才编写的mybatis-config.xml文件,
在<configuration>标签的里面</environments>的下方添加一个映射关系,代码如下
<mappers> <mapper resource="mapper/GradeMapper.xml"/> <!-- 包名.xml文件名 --> </mappers>
(7)好了,SQL语句写好后,接下来就是重点了——怎么调用它
在src下建立一个common的包,里面存放一个SqlSessionUtil的类,类里面我们定义一个getSession的方法,代码如下
在src包下建立一个dao.Impl的包,里面添加一个GradeDaoImpl的类,代码如下
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步