MyBatis入門學(xué)習(xí)教程(一)-MyBatis快速入門

MyBatis 本是apache的一個(gè)開源項(xiàng)目iBatis, 2010年這個(gè)項(xiàng)目由apache software foundation 遷移到了google code,并且改名為MyBatis 。2013年11月遷移到Github。
iBATIS一詞來源于“internet”和“abatis”的組合,是一個(gè)基于Java的持久層框架。iBATIS提供的持久層框架包括SQL Maps和Data Access Objects(DAO)
首先給大家介紹MyBatis的含義
MyBatis是一個(gè)支持普通sql查詢,存儲(chǔ)過程和高級(jí)映射的優(yōu)秀持久層框架。MyBatis消除了幾乎所有的JDBC代碼和參數(shù)的手工設(shè)置以及對(duì)結(jié)果集的檢索封裝。MyBatis可以使用簡單的XML或注解用于配置和原始映射,將接口和Java的POJO(Plain Old Java Objects,普通的Java對(duì)象)映射成數(shù)據(jù)庫中的記錄。
二、mybatis快速入門
2.1、準(zhǔn)備開發(fā)環(huán)境
1、創(chuàng)建測試項(xiàng)目,普通java項(xiàng)目或者是JavaWeb項(xiàng)目均可,如下圖所示:

2、添加相應(yīng)的jar包
【mybatis】
mybatis-3.1.1.jar
【MYSQL驅(qū)動(dòng)包】
mysql-connector-java-5.1.7-bin.jar

3、創(chuàng)建數(shù)據(jù)庫和表,針對(duì)MySQL數(shù)據(jù)庫
SQL腳本如下:
create database mybatis;
use mybatis;
CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(), age INT);
INSERT INTO users(NAME, age) VALUES('孤傲蒼狼', );
INSERT INTO users(NAME, age) VALUES('白虎神皇', );
將SQL腳本在MySQL數(shù)據(jù)庫中執(zhí)行,完成創(chuàng)建數(shù)據(jù)庫和表的操作,如下:

到此,前期的開發(fā)環(huán)境準(zhǔn)備工作全部完成。
2.2、使用MyBatis查詢表中的數(shù)據(jù)
1、添加Mybatis的配置文件conf.xml
在src目錄下創(chuàng)建一個(gè)conf.xml文件,如下圖所示:

conf.xml文件中的內(nèi)容如下:
<?xml version="." encoding="UTF-"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config .//EN" "http://mybatis.org/dtd/mybatis--config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置數(shù)據(jù)庫連接信息 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:/mybatis" />
<property name="username" value="root" />
<property name="password" value="XDP" />
</dataSource>
</environment>
</environments>
</configuration>
2、定義表所對(duì)應(yīng)的實(shí)體類,如下圖所示:

User類的代碼如下:
package me.gacl.domain;
/**
* @author gacl
* users表所對(duì)應(yīng)的實(shí)體類
*/
public class User {
//實(shí)體類的屬性和表的字段名稱一一對(duì)應(yīng)
private int id;
private String name;
private int age;
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;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
3、定義操作users表的sql映射文件userMapper.xml
創(chuàng)建一個(gè)me.gacl.mapping包,專門用于存放sql映射文件,在包中創(chuàng)建一個(gè)userMapper.xml文件,如下圖所示:

userMapper.xml文件的內(nèi)容如下:
<?xml version="." encoding="UTF-" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper .//EN" "
<!-- 為這個(gè)mapper指定一個(gè)唯一的namespace,namespace的值習(xí)慣上設(shè)置成包名+sql映射文件名,這樣就能夠保證namespace的值是唯一的
例如namespace="me.gacl.mapping.userMapper"就是me.gacl.mapping(包名)+userMapper(userMapper.xml文件去除后綴)
-->
<mapper namespace="me.gacl.mapping.userMapper">
<!-- 在select標(biāo)簽中編寫查詢的SQL語句, 設(shè)置select標(biāo)簽的id屬性為getUser,id屬性值必須是唯一的,不能夠重復(fù)
使用parameterType屬性指明查詢時(shí)使用的參數(shù)類型,resultType屬性指明查詢返回的結(jié)果集類型
resultType="me.gacl.domain.User"就表示將查詢結(jié)果封裝成一個(gè)User類的對(duì)象返回
User類就是users表所對(duì)應(yīng)的實(shí)體類
-->
<!--
根據(jù)id查詢得到一個(gè)user對(duì)象
-->
<select id="getUser" parameterType="int"
resultType="me.gacl.domain.User">
select * from users where id=#{id}
</select>
</mapper>
4、在conf.xml文件中注冊u(píng)serMapper.xml文件
<?xml version="." encoding="UTF-"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config .//EN" "http://mybatis.org/dtd/mybatis--config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置數(shù)據(jù)庫連接信息 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:/mybatis" />
<property name="username" value="root" />
<property name="password" value="XDP" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- 注冊u(píng)serMapper.xml文件,
userMapper.xml位于me.gacl.mapping這個(gè)包下,所以resource寫成me/gacl/mapping/userMapper.xml-->
<mapper resource="me/gacl/mapping/userMapper.xml"/>
</mappers>
</configuration>
5、編寫測試代碼:執(zhí)行定義的select語句
創(chuàng)建一個(gè)Test1類,編寫如下的測試代碼:
package me.gacl.test;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import me.gacl.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class Test {
public static void main(String[] args) throws IOException {
//mybatis的配置文件
String resource = "conf.xml";
//使用類加載器加載mybatis的配置文件(它也加載關(guān)聯(lián)的映射文件)
InputStream is = Test.class.getClassLoader().getResourceAsStream(resource);
//構(gòu)建sqlSession的工廠
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
//使用MyBatis提供的Resources類加載mybatis的配置文件(它也加載關(guān)聯(lián)的映射文件)
//Reader reader = Resources.getResourceAsReader(resource);
//構(gòu)建sqlSession的工廠
//SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
//創(chuàng)建能執(zhí)行映射文件中sql的sqlSession
SqlSession session = sessionFactory.openSession();
/**
* 映射sql的標(biāo)識(shí)字符串,
* me.gacl.mapping.userMapper是userMapper.xml文件中mapper標(biāo)簽的namespace屬性的值,
* getUser是select標(biāo)簽的id屬性值,通過select標(biāo)簽的id屬性值就可以找到要執(zhí)行的SQL
*/
String statement = "me.gacl.mapping.userMapper.getUser";//映射sql的標(biāo)識(shí)字符串
//執(zhí)行查詢返回一個(gè)唯一user對(duì)象的sql
User user = session.selectOne(statement, );
System.out.println(user);
}
}
執(zhí)行結(jié)果如下:

有上圖可以看出,數(shù)據(jù)庫中記錄已經(jīng)成功查詢出來。
以上就是本文針對(duì)MyBatis入門學(xué)習(xí)教程(一)-MyBatis快速入門的全部內(nèi)容,希望對(duì)大家有所幫助。
- MyBatis中傳入?yún)?shù)parameterType類型詳解
- mybatis中批量插入的兩種方式(高效插入)
- springboot與mybatis整合實(shí)例詳解(完美融合)
- Mybatis分頁插件PageHelper的使用詳解
- Mybatis Update操作返回值問題
- MyBatis批量插入(insert)數(shù)據(jù)操作
- MyBatisPlus 自定義sql語句的實(shí)現(xiàn)
- Mybatis中使用updateBatch進(jìn)行批量更新
- 結(jié)合mybatis-plus實(shí)現(xiàn)簡單不需要寫sql的多表查詢
- 如何使用MyBatis框架實(shí)現(xiàn)增刪改查(CRUD)操作
相關(guān)文章
NoHttpResponseException異常解決優(yōu)化HttpClient配置以避免連接問題
這篇文章主要為大家介紹了NoHttpResponseException異常解決,優(yōu)化HttpClient配置以避免連接問題詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
java連接池Druid獲取連接getConnection示例詳解
這篇文章主要為大家介紹了java連接池Druid獲取連接getConnection示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
SpringCloud中的Ribbon負(fù)載均衡器詳細(xì)解析
這篇文章主要介紹了SpringCloud中的Ribbon負(fù)載均衡器詳細(xì)解析,Ribbon 是一個(gè)基于 HTTP 和 TCP 的客戶端負(fù)載均衡工具,它基于 Netflix Ribbon 實(shí)現(xiàn),通過封裝可以讓我們輕松地將面向服務(wù)的 REST 模版請(qǐng)求自動(dòng)轉(zhuǎn)換成客戶端負(fù)載均衡的服務(wù)調(diào)用,需要的朋友可以參考下2024-01-01
解決Springboot項(xiàng)目bootstrap.yml不生效問題
Spring Boot 2.4版本開始,配置文件加載方式進(jìn)行了重構(gòu),只會(huì)識(shí)別application.* 配置文件,并不會(huì)自動(dòng)識(shí)別bootstrap.yml,所以本文給大家介紹Springboot項(xiàng)目bootstrap.yml不生效問題的解決方案,需要的朋友可以參考下2023-09-09
SpringCloud實(shí)現(xiàn)SSO 單點(diǎn)登錄的示例代碼
作為分布式項(xiàng)目,單點(diǎn)登錄是必不可少的,這篇文章主要介紹了SpringCloud實(shí)現(xiàn)SSO 單點(diǎn)登錄的示例代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2019-01-01
SpringBoot Nacos實(shí)現(xiàn)自動(dòng)刷新
這篇文章主要介紹了SpringBoot Nacos實(shí)現(xiàn)自動(dòng)刷新,Nacos(Dynamic Naming and Configuration Service)是阿里巴巴開源的一個(gè)動(dòng)態(tài)服務(wù)發(fā)現(xiàn)、配置管理和服務(wù)管理平臺(tái)2023-01-01

