1.前言 MyBatis 是什么?
MyBatis 是一款優秀的持久層框架,它支持定制化 SQL、存儲過程以及高級映射。 MyBatis 避免了幾乎所有的 JDBC 代碼和手動設置參數以及獲取結果集。 MyBatis 可以使用簡單的 XML 或注解來配置和映射原生信息,將接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java對象)映射成數據庫中的記錄。 本篇介紹如何在 IDEA 中使用 MyBatis 開發 Java 項目,并且使用 Maven 來管理和集成依賴庫。
1.相關配置 1.1 Maven 配置 Maven 的優點在于可以方便的管理各種依賴包,我們可以使用 Maven 來管理 MyBatis 和 MySQL 的相關庫的依賴。 新建的 Maven 項目目錄關系入下: 最后,Maven 目錄如下: 新建一個 Maven 工程后,在 pom.xml 中配置 MyBatis 和 mysql 依賴庫。
<?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>net.libaoquan.learnssm.c3</groupId><artifactId>learnmybatis</artifactId><version>1.0-SNAPSHOT</version><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><mybatis.version>3.4.5</mybatis.version><mysql.version>8.0.11</mysql.version></properties><dependencies><!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>${mybatis.version}</version></dependency><!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency></dependencies></project>
1.2 MyBatis 配置 在 resources 文件夾下新建 mybatis-config.xml 文件,填入 MyBatis 配置信息。 其中:
typeAliases 項關聯 POJO 類,并為這個類起了一個別名,這樣,在其他的 Maven 相關配置中,可以使用這個別名代替這個 POJO 類。 mappers 項關聯的是 XML 映射器,在這個映射器中實現 sql 邏輯。 <?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><typeAliases><!-- 別名 --><typeAlias alias="worker" type="net.libaoquan.learnssm.c3.learnmybatis.pojo.Worker"/></typeAliases ><!-- 數據庫環境 --><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/ssm"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><!-- 映射文件 --><mappers><mapper resource="mapper/workerMapper.xml"/></mappers>
</configuration>
2.創建數據庫 創建數據庫并填入數據。
create database ssm;
create table worker (id int primary key auto_increment,name varchar(255),note varchar(255)
);alter table worker default character set utf8;
alter table worker change name name varchar(255) character set utf8;
alter table worker change note note varchar(255) character set utf8;insert into worker (name, note) values ('章三', '工程師');
insert into worker (name, note) values ('王如', '工程師');
insert into worker (name, note) values ('李斯', '工程師');
insert into worker (name, note) values ('趙翼', '設計師');
insert into worker (name, note) values ('孫起', '設計師');
3.創建 POJO 類 一個 POJO 類,簡單來說就是與數據庫中一張表相關聯的一個 Java 類。 在這里,新建一個 POJO 類 Worker,與數據表 worker 相關聯,可以使自動填充填寫 setter 和 getter 方法。
package net.libaoquan.learnssm.c3.learnmybatis.pojo;public class Worker {private Integer id;private String name;private String note;public Worker() {this.id = 0;this.name = "";this.note = "";}public Worker(Integer id, String name, String note) {this.id = id;this.name = name;this.note = note;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getNote() {return note;}public void setNote(String note) {this.note = note;}@Overridepublic String toString() {return "Worker{" +"id=" + id +", name='" + name + '\'' +", note='" + note + '\'' +'}';}
}
4.創建 xml 映射器 一個 xml 映射器用來實現如何處理與之關聯的 POJO 類的數據邏輯,一般在接口中實現處理邏輯,具體的實現由 xml 文件中的 sql 語句實現。 使用 workerMapper.xml 以及 WorkerMapper 接口實現 xml 映射器。 首先,新建一個接口 workerMapper,其中方法 getWorker 是一個 Worker 類的處理邏輯。
package net.libaoquan.learnssm.c3.learnmybatis.mapper;import net.libaoquan.learnssm.c3.learnmybatis.pojo.Worker;public interface WorkerMapper {public Worker getWorker(int id);
}
接著,在 resources 目錄下建立 mapper 目錄,創建 workerMapper.xml。 其中:
在 namespace 中關聯接口文件 select 標志是一個查詢語句,其返回類型是一個 worker (在mybatis-config.xml 中定義的別名),參數是一個 int 類型,在 sql 中表示為 #{id} select 的 id 關聯的是接口中的方法名。 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//rnybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="net.libaoquan.learnssm.c3.learnmybatis.mapper.WorkerMapper"><select id="getWorker" parameterType="int" resultType="worker">select id, name, note from worker where id= #{id}</select>
</mapper>
5.測試 新建 test 類,測試配置是否正確。 使用 2 種 SQL 發送器,分別是用 SqlSession 直接發送,和通過 SqlSession獲取 Mapper接口再發送。 一般推薦使用第二種。
package net.libaoquan.learnssm.c3.learnmybatis;import net.libaoquan.learnssm.c3.learnmybatis.mapper.WorkerMapper;
import net.libaoquan.learnssm.c3.learnmybatis.pojo.Worker;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;
import java.io.InputStream;public class test {public static void main(String[] args){SqlSessionFactory SqlSessionFactory = null;String resource = "mybatis-config.xml";InputStream inputStream;SqlSession sqlSession = null;try {inputStream = Resources.getResourceAsStream (resource);SqlSessionFactory = new SqlSessionFactoryBuilder() .build(inputStream);sqlSession = SqlSessionFactory.openSession();// 用 SqlSession 直接發送Worker t = (Worker)sqlSession.selectOne("net.libaoquan.learnssm.c3.learnmybatis.mapper.WorkerMapper.getWorker", 1);System.out.println(t.toString());// 通過 SqlSession獲取 Mapper接口再發送WorkerMapper tm = sqlSession.getMapper(WorkerMapper.class);Worker t2 = tm.getWorker(2);System.out.println(t2.toString());sqlSession.commit();} catch (IOException e) {e.printStackTrace();sqlSession.rollback();}finally {if (sqlSession != null){sqlSession.close();}}}
}
轉載于:https://www.cnblogs.com/libaoquan/p/9383470.html
總結
以上是生活随笔 為你收集整理的Java 笔记——在 IDEA 中使用 Maven 配置和使用 MyBatis 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。