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ǔ)過程和高級映射的優(yōu)秀持久層框架。MyBatis消除了幾乎所有的JDBC代碼和參數(shù)的手工設(shè)置以及對結(jié)果集的檢索封裝。MyBatis可以使用簡單的XML或注解用于配置和原始映射,將接口和Java的POJO(Plain Old Java Objects,普通的Java對象)映射成數(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ù)庫和表,針對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、定義表所對應(yīng)的實(shí)體類,如下圖所示:
User類的代碼如下:
package me.gacl.domain; /** * @author gacl * users表所對應(yīng)的實(shí)體類 */ public class User { //實(shí)體類的屬性和表的字段名稱一一對應(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類的對象返回
User類就是users表所對應(yīng)的實(shí)體類
-->
<!--
根據(jù)id查詢得到一個(gè)user對象
-->
<select id="getUser" parameterType="int" resultType="me.gacl.domain.User"> select * from users where id=#{id} </select> </mapper>
4、在conf.xml文件中注冊userMapper.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> <!-- 注冊userMapper.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)識字符串, * 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)識字符串 //執(zhí)行查詢返回一個(gè)唯一user對象的sql User user = session.selectOne(statement, ); System.out.println(user); } }
執(zhí)行結(jié)果如下:
有上圖可以看出,數(shù)據(jù)庫中記錄已經(jīng)成功查詢出來。
以上就是本文針對MyBatis入門學(xué)習(xí)教程(一)-MyBatis快速入門的全部內(nèi)容,希望對大家有所幫助。
- 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)文章
Java并行執(zhí)行任務(wù)的幾種方案小結(jié)
這篇文章主要介紹了Java并行執(zhí)行任務(wù)的幾種方案小結(jié),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11Java SSH 秘鑰連接mysql數(shù)據(jù)庫的方法
這篇文章主要介紹了Java SSH 秘鑰連接mysql數(shù)據(jù)庫的方法,包括引入依賴的代碼和出現(xiàn)異常報(bào)錯(cuò)問題,需要的朋友可以參考下2021-06-06SpringBoot統(tǒng)一響應(yīng)格式及統(tǒng)一異常處理
在我們開發(fā)SpringBoot后端服務(wù)時(shí),一般需要給前端統(tǒng)一響應(yīng)格式,本文主要介紹了SpringBoot統(tǒng)一響應(yīng)格式及統(tǒng)一異常處理2023-05-05使用SpringBoot整合ssm項(xiàng)目的實(shí)例詳解
Spring Boot 現(xiàn)在已經(jīng)成為 Java 開發(fā)領(lǐng)域的一顆璀璨明珠,它本身是包容萬象的,可以跟各種技術(shù)集成。這篇文章主要介紹了使用SpringBoot整合ssm項(xiàng)目,需要的朋友可以參考下2018-11-11