简述MyBatis(参考自:mybatis是什么_百度知道 (baidu.com))
-
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
-
MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
-
每个MyBatis应用程序主要都是使用SqlSessionFactory实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。SqlSessionFactoryBuilder可以从一个xml配置文件或者一个预定义的配置类的实例获得。
操作步骤
- 使用IDEA创建一个maven项目(有关maven项目简绍参考自:maven(一) maven到底是个啥玩意~ - 有梦想的老王 - 博客园 (cnblogs.com))如图便是maven项目,直接next就可以
- 添加相关依赖。配置pom.xml文件:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <!--定义本地仓库属性,保证唯一性--> <groupId>com.southwind</groupId> <artifactId>MyBatisTest</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties> <!--导入依赖--> <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>8.0.11</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.6</version> <scope>provided</scope> </dependency> </dependencies> <!-- build这里面就是让他能访问到java目录下面的.xml文件,参考自:https://blog.csdn.net/taiyangdao/article/details/52374125 --> <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>*.xml</include> <include>*.properties</include> </includes> </resource> </resources> </build> </project>
- 在数据库中新建一个表,建表代码:(mysql是关系型数据库)
CREATE DATABASE mybatis CHARACTER SET utf8 COLLATE utf8_general_ci; USE mybatis; CREATE TABLE `t_account`( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(11), `password` VARCHAR(11), age INT )ENGINE=INNODB DEFAULT CHARSET=utf8;
(有关mysql学习:【狂神说Java】MySQL最新教程通俗易懂_哔哩哔哩_bilibili)
-
新建实体类Account。包结构:
具体提代码:(最好成员变量顺序和数据库创建表格时候相对应)
package com.southwind.entity; import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; import lombok.Data; @Data @AllArgsConstructor @NoArgsConstructor public class Account { private long id; private String username; private String password; private int age; }
- 创建MaBatis的配置文件config.xml来搭建环境,文件名可以自定义。包结构:
具体代码
<?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"> <environment id="development"> <!-- 配置JDBC事务管理 --> <transactionManager type="JDBC"></transactionManager> <!-- pooled配置JDBC数据源连接池 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.cj.jdbc.Driver" ></property> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC"></property> <property name="username" value="root"></property> <property name="password" value="123456"></property> </dataSource> </environment> </environments> <!-- 注册AccountMapper.xml,后面要写Mapper文件后加的 --> <mappers> <mapper resource="com/southwind/mapper/AccountMapper.xml"></mapper> </mappers> </configuration>
- 编写Mapper.xml文件。( 使用原生接口。MyBatis框架需要开发者自定义SQL语句,写在Mapper.xml中,实际开发中会为每个实体类创建对应的Mapper.xml,定义管理该对象数据的SQL),包结构
具体代码
<?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.southwind.mapper.AccountMapper"> <insert id="save" parameterType="com.southwind.entity.Account"> insert into t_account(username,password,age) values(#{username},#{password},#{age}) </insert> </mapper>
namespace 通常设置为文件所在包+文件名形式;insert 标签表示执行添加操作;select 标签表示执行查询操作;upadate 标签表示执行更新操作;delete 标签表示执行删除操作;id 是实际调用MyBatis方法时所需要的参数;parameterType 是调用方法时候参数的数据类型
- 调用MaBatis原生接口来执行添加操作(创建测试类,下面是包结构)
代码:
package com.southwind.test; import com.southwind.entity.Account; import org.apache.ibatis.session.*; import java.io.*; public class Test { public static void main(String []args){ //加载mybatis配置文件 InputStream inputStream = Test.class.getClassLoader().getResourceAsStream("config.xml"); SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream); SqlSession sqlSession = sqlSessionFactory.openSession(); String statement = "com.southwind.mapper.AccountMapper.save"; Account account = new Account(1l,"张三","1231231",22); sqlSession.insert(statement,account); sqlSession.commit(); } }
- 测试类编写之后,运行就可以看到数据库添加成功,如图
遇到问题以及一些解决办法
- 出现大面积报红,但是相关依赖都以及显示导入,那可能是没有加载并且下载相关依赖通过刷新依赖就可以自动下载
- 没有报红,但是运行出现问题,那就要注意检查""里面的代码是否错误,因为这里面错误,不会有提示。同时也可以通过提示快速定位
学习MyBatis资源(【极简入门】4小时学会MyBatis_哔哩哔哩_bilibili)