1. 程式人生 > >Mybatis框架入門學習(一)

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