Mybatis框架入門學習(一)
什麼是MyBatis?
MyBatis是一個支援普通SQL查詢,儲存過程和高階對映的優秀持久層框架。MyBatis消除了幾乎所有的JDBC程式碼和引數的手工設定以及對結果集的檢索封裝。MyBatis可以使用簡單的XML或註解用於配置和原始對映,將介面和Java的POJO(Plain Old Java Objects,普通的Java物件)對映成資料庫中的記錄。
這次設計到的內容有什麼?
- MyBatis所需的Jar包
mybatis包和用於Java連線資料庫的mysql-connector-java.jar
- 建立資料庫和表
這邊將欄位名設為SNAME是為了後面的高階對映和說明不區分大小寫
create database mybatis;
use mybatis;
CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, SNAME VARCHAR(20), age INT);
INSERT INTO users(SNAME, age) VALUES('張三', 27);
INSERT INTO users(SNAME, age) VALUES('李四', 30);
- 新增MyBatis的配置檔案
1.新增Mybatis的配置檔案MyBatis-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> <properties resource="com/baizhi/czd/conf/jdbc.properties"></properties> <environments default="mysql"> <environment id="mysql"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driverClassName}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/baizhi/czd/mapper/userMapper.xml"/> </mappers> </configuration>
其中,包括properties對properties檔案的載入和mappers註冊對映檔案
1.這裡我將mysql資料庫的資訊寫在jdbc.properties中
2.對映檔案中定義了操作資料庫的sql,每個sql是一個statement
- 定義實體類
定義表所對應的實體類,如下圖:
程式碼如下:
package com.baizhi.czd.entity; public class User { 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 + "]"; } }
- 定義sql對映檔案
定義操作User表的sql對映檔案userMapper.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="com.baizhi.czd.mapper.userMapper">
<resultMap type="com.baizhi.czd.entity.User" id="userMapper">
<result column="SNAME" property="name"/>
</resultMap>
<select id="getUser" parameterType="int" resultType="com.baizhi.czd.entity.User" resultMap="userMapper">
select * from users where id=#{id};
</select>
</mapper>
- 在配置檔案中註冊對映檔案
在MyBatis-config.xml中註冊這個對映檔案
- 編寫測試類
編寫testUser.java
package com.baizhi.czd.test;
import java.io.InputStream;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.baizhi.czd.entity.User;
public class TestUser {
public static void main(String[] args) {
//mybatis的配置檔案
String resource="MyBatis-config.xml";
//使用類載入器載入mybatis的配置檔案(它也載入關聯的對映檔案)
InputStream is=TestUser.class.getClassLoader().getResourceAsStream(resource);
//構建sqlSession的工廠
SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(is);
//建立能執行對映檔案中sql的sqlSession
SqlSession session = sessionFactory.openSession();
//對映sql的標識字串
String statement = "com.baizhi.czd.mapper.userMapper.getUser";
//執行查詢返回一個唯一user物件的sql
User user = session.selectOne(statement, 1);
System.out.println(user);
}
}
- 當表的欄位名和實體類的屬性名不一致時,可以用高階對映實現對映關係
userMapper.xml中的resultMap就是註明對應的對映關係
result中 type對應實體類的全路徑,id是唯一表示這個對映關係
column對應表的欄位名,property對應實體類的屬性名
在sql語句中,註明要配置此對映,如下:
注:資料庫欄位名和實體的屬性名對應時,不區分大小寫
相關推薦
Mybatis框架入門學習(一)
什麼是MyBatis? MyBatis是一個支援普通SQL查詢,儲存過程和高階對映的優秀持久層框架。MyBatis消除了幾乎所有的JDBC程式碼和引數的手工設定以及對結果集的檢索封裝。MyBatis可以使用簡單的XML或註解用於配置和原始對映,將介面和Java
Mybatis入門學習(一)
Mybatis是一款優秀的開源持久層框架。 入門demo 解壓,把mybatis-3.3.0.jar,以及lib下的所有jar,額外引入mysql的驅動包到Eclipse的lib目錄,並加入到classpath中。 第二步:新建資料庫表,建立myb
VueJS入門學習(一)
try pre 發的 沒有 cnpm lan light install 上一個 剛剛接觸VueJs的時候,還不懂NodeJs是什麽,單頁面應用是什麽?隨著慢慢的深入慢慢的理解了這些東西。簡單介紹一些VueJs,一個頁面一個Vue實例,包含了頁面中控件所需要的方法,事件
NS3入門學習(一)之指令碼執行例項
ns3中使用的編譯系統是waf,所有的c++工程都需要經過waf編譯後執行,除錯時也需要waf的。 在3.1.3中還是使用C++寫指令碼,在/ns-3.1.3/examples/tutorial/的second.cc指令碼中可以看出來,在3.2.6以上版本中已經增加了python
Spring框架入門教程(一)——框架簡介
介紹 Spring是一個分層的(一站式) 輕量級開源框架 Spring的核心是控制反轉(IoC)和麵向切面(AOP) 為什麼說分層一站式呢? javaEE分三層開發 WEB層,業務層,持久層。在ssh整合框架中s == Struts2, s == spring,h
OpenCV入門學習(一)
OpenCV入門學習(2) IplImage* img = cvLoadImage(argv[1]); 上面的函式程式碼聲明瞭一個IPLImage* 影象指標,然後根據影象名稱的字串argv[1],將影象載入到記憶體中。 影象結構體IplImage IplImage
scrapy框架 - 入門使用(一)
目標 掌握如何建立專案 掌握如何建立爬蟲 熟悉建立專案後每個檔案的作用 掌握pipeline的使用 掌握scrapy中logging的使用 1 scrapy專案實現流程 建立一個scrapy專案:scrapy startproject myS
Java NIO入門學習(一)
本文為NIO入門學習的第一篇,將會介紹NIO中幾個重要的概念。 I/O即輸入輸出,指的是計算機和外界的介面,或者是單個程式同計算機其他部分的介面。 在Java1.4之前的I/O系統中,提供的都是面向流的I/O系統,系統每次處理一個位元組,輸入流(input stream)生
mybatis框架的總結(一)
MyBatis 是一個開源的資料持久層框架。它內部封裝了通過JDBC訪問資料庫的操作,支援普通的SQL查詢、儲存過程和高階對映,幾乎消除了所有的JDBC程式碼和引數的手工設定以及結果集的檢索。MyBatis 作為持久層框架,其主要思想是將程式中的大量SQL語句剝離出來,配置在配置檔案中,實現SQL
MQ框架的學習(一)
相關說明: TPS 訊息佇列已經被分為兩組:brokerless和brokered。 brokerless訊息佇列是對等的,沒有中間商參與資訊的傳遞,而brokered佇列有一些伺服器端點之間。 Brokerless nanomsg
Python入門學習(一),安裝Eclipse開發環境
近日,山東省在其最新出版的小學資訊科技六年級教材中,加入了Python的內容。 簡單來說,Python是一種廣泛使用的高階程式語言,屬於通用型程式語言,由荷蘭人Guido van Rossum創造。它的第一版釋出於1991年。由於可擴充套件性,
【Node.js Koa框架入門】(一)Koa 框架介紹以及環境搭建、簡單使用
一、框架介紹 Koa -- 基於 Node.js 平臺的下一代 web 開發框架 koa是由 Express 原班人馬打造的,致力於成為一個更小、更富有表現力、更健壯的 Web 框架。 使用 koa 編寫 web 應用,可以免除重複繁瑣的回撥函式巢狀, 並極大地提升錯誤
Linux執行緒入門學習(一)-認識執行緒
1. 執行緒的概念 執行緒,又稱輕量級程序,是程序中執行運算的最小單位,是程序中的一個實體,是被系統獨立排程和分派的基本單位,主要有以下特點: 1)執行緒自己不擁有系統資源,只擁有一點在執行中必不可少的資源; 2)與同屬一個程序的其它執行緒共享程序所擁有的全
Hibernate入門學習(一)
都說年底了,大夥應該都在衝回款,忙的不可開交啊啥的。唯獨我這個剛轉正三個月的閒來無事,只得在上班時間來給自己充充電,也不好玩別的,畢竟剛來公司不久,沒有那些老鳥膽子大,凡事低調點,就開始看起了視訊。下面簡單記錄下自己學習到的東西,今天一天看了Hibernate的學習視訊,自
Quartz時間排程框架的學習(一)
文章轉載自: http://blog.csdn.net/qwe6112071/article/details/50991563 https://blog.csdn.net/wenniuwuren/article/details/41
安卓入門學習(一)使用者介面設計
第三章 使用者介面設計 寫在前面: 有人問為什麼網路上那麼多教程,直接學習就好了,為啥還要浪費時間跟精力自己重新寫一系統的帖子? 寫部落格不是一種情懷,而是對自己所學所用知識的總結。寫文章是一種態度,是對自己已知能力的輸出的考核。 最重要一點,人生在世,總要留
mybatis底層原理學習(一):SqlSessionFactory和SqlSession的建立過程
上篇文章和大家簡單入門了mybatis的增刪改查操作:寫給mybatis小白的入門指南。這篇文章就從原始碼角度分析一下mybatis的SqlSessionFactory的建立過程 SqlSessionFactory是SqlSession的建立工廠,每一
Linux程序入門學習(一)-認識程序
1.程序的概念 一個可執行的程式檔案(ELF格式)被載入到記憶體當中,然後讓CPU逐條執行其程式碼,根據程式碼作出相應的動作,這樣一個動態程序就產生了。因此,程序是一個動態變化的過程。 下面用一張圖來表示一個程式從編寫到最終執行的過程: 一段固化在磁碟
OpenCV入門學習(一)影象放縮【簡單的按比例放縮,無技術含量】
其中,filename 是待載入影象的名稱,包括影象的副檔名;iscolor是一個輔助引數項,可選正數、零和負數三種值,正數表示作為三通道(CV_LOAD_IMAGE_COLOR)影象載入,零(CV_LOAD_IMAGE_GRAYSCALE)表示該影象作為單通道影象,負數(CV_LOAD_IMAGE_UNCH
salesforce 零基礎開發入門學習(一)Salesforce功能介紹,IDE配置以及資源下載
目前國內已經有很多公司做salesforce,但是國內相關的資料確是少之又少。上個月末跳槽去了新公司,主要做的就是salesforce,不過當時想要看一些相關資料確實比較難。為了避免想要零基礎學習的人少走一點彎路,所以整理一下這幾天學到的簡單的東西,包括登入salesforce後如何操作,如何下載配置IDE