JAVA入門[6]-Mybatis簡單示例

初次使用Mybatis,先手寫一個hello world級別的例子,即根據id查詢商品分類詳情。

一、建表

create table Category (
Id INT not null,
Name varchar(80) null,
constraint pk_category primary key (Id)
);

插入測試數據

INSERT INTO category VALUES (1,'Fish');
INSERT INTO category VALUES (2,'Dogs');
INSERT INTO category VALUES (3,'Birds');

二、新建測試項目

新建Maven項目,最終的項目結構如下:

Image(32)

修改pom.xml,引入mybatis相關依賴。

<dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.1</version></dependency><dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.2</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!-- Mysql數據庫鏈接jar包 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.21</version><scope>runtime</scope></dependency></dependencies>

?

三、建立pojo

建立Category對應的實體,這里為了方便測試重寫了toString()方法。

public class Category implements Serializable {private int id;private String name;private static final long serialVersionUID = 1L;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 == null ? null : name.trim();}@Overridepublic String toString() {StringBuilder sb = new StringBuilder();sb.append(getClass().getSimpleName());sb.append(" [");sb.append("Hash = ").append(hashCode());sb.append(", id=").append(id);sb.append(", name=").append(name);sb.append("]");return sb.toString();}
}

四、定義數據訪問接口

在src/main/cathy.mybatis/mapper包,新增CategoryMapper接口,這里只定義GetById方法。

public interface CategoryMapper {public Category GetById(int id);
}

五、配置mybatis xml文件

1.mybatis的配置都基于XML文件,我們放在resources/config/mybatis-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><typeAliases><typeAlias type="model.Category" alias="Category" /></typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC"></transactionManager><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver" /><property name="url" value="jdbc:mysql://localhost:3306/store" /><property name="username" value="root" /><property name="password" value="root" /></dataSource></environment></environments><mappers><mapper resource="mapper/CategoryMapper.xml" /></mappers>
</configuration>
  • typeAliases: 類型別名是為 Java 類型設置一個短的名字,用來減少類完全限定名的冗余。
  • dataSource:使用標準的 JDBC 數據源接口來配置 JDBC 連接對象的資源。
  • mappers:用來定義SQL映射語句

六、SqlSession工具類

構建SqlSession有多種方式,這里我們先從mybatis-config.xml配置文件構建SqlSessionFactory,然后從SqlSessionFactory獲取SqlSession。

public static SqlSession getSqlSession() {SqlSession session = null;try {InputStream stream = Resources.getResourceAsStream(CONFIG_PATH);SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(stream);session = factory.openSession();} catch (Exception e) {e.printStackTrace();}return session;}

?

七、調用:

public static void main(String[] args) {SqlSession sqlSession=MybatisUtils.getSqlSession();try{CategoryMapper categoryMapper=sqlSession.getMapper(CategoryMapper.class);Category category=categoryMapper.GetById(1);if(category==null){System.out.println("該分類不存在");}else{System.out.println(category.toString());}}catch (Exception e){System.out.println(e.getMessage());}finally {MybatisUtils.closeSession(sqlSession);}}

?

運行結果:Category [Hash = 731395981, id=1, name=Fish]

?

源碼地址:https://pan.baidu.com/s/1kUKXnMn

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/259558.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259558.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259558.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

qpsk調制matlab實現,QPSK調制解調Matlab實現(ing待補充說明)

自寫%QPSKclose all;clc;%思路&#xff1a;1.輸入一組隨機初始信息x[01矩陣]&#xff1b;% 2.按兩兩一組通過for循環判別4種組合&#xff0c;分別對應星座圖4個點% 3.做星座圖% a.過程中考慮過將01序列兩兩分開表示出來&#xff0c;不知是否有必要&#xff0c;未實現% b.考慮兩…

猴子吃桃問題(南陽ACM324)

猴子吃桃問題 時間限制&#xff1a;3000 ms | 內存限制&#xff1a;65535 KB難度&#xff1a;0描述有一堆桃子不知數目&#xff0c;猴子第一天吃掉一半&#xff0c;又多吃了一個&#xff0c;第二天照此方法&#xff0c;吃掉剩下桃子的一半又多一個&#xff0c;天天如此&#…

ASP.NET MVC5 + EF6 入門教程 (6) View中的Razor使用

ASP.NET MVC5 EF6 入門教程 (6) View中的Razor使用 原文:ASP.NET MVC5 EF6 入門教程 (6) View中的Razor使用文章來源&#xff1a; Slark.NET-博客園 http://www.cnblogs.com/slark/p/mvc-5-ef-6-get-started-model.html 上一節&#xff1a;ASP.NET MVC5 EF6 入門教程 (5) M…

matlab中求三維中的多個體積,用matlab計算由下面2個幾何體圍成的體積: x^2+y^2+z^2=36,((x-4)/5)^2+((y-1)/3)^2+((z-2)/5)^2=1...

答&#xff1a;>> triplequad((x,y,z)1*(x.^2y.^2z.^2答&#xff1a;首先建立一個m文件 我取的名字叫 syfs0000 function ysyfs0000(x) y[9*x(1)^236*x(2)^24*x(3)^2-36; x(1)^2-2*x(2)^2-20*x(3); 16*x(1)-x(1)^3-2*x(2)^2-16*x(3)^2;]; end 然后在command window 輸入 …

分析分布式服務框架

出處&#xff1a;http://www.cnblogs.com/zhangs1986/ 技術是為需求而服務的&#xff0c;分布式服務框架也同樣如此&#xff0c;它不是憑空誕生的&#xff0c;也是因為有這樣的需求才會有分布式服務框架這么樣的東西誕生&#xff0c;在這篇blog中來詳細的分析分布式服務框架誕…

PL/SQL注冊碼

code:j6stndb9tk72xfbhbqczcdqnjd8lyj466n number:882851 ps&#xff1a;xs374ca轉載于:https://www.cnblogs.com/myblogslh/p/4203173.html

遞歸--基于回溯和遞歸的八皇后問題解法

八皇后問題是在8*8的棋盤上放置8枚皇后&#xff0c;使得棋盤中每個縱向、橫向、左上至右下斜向、右上至左下斜向均只有一枚皇后。八皇后的一個可行解如圖所示&#xff1a; 思路 對于八皇后的求解可采用回溯算法&#xff0c;從上至下依次在每一行放置皇后&#xff0c;進行搜索&a…

matlab emf 讀取,20140219-Emf_Demo EMF 矢量圖 可以讀取和保存EMF 的封閉類 非常實用 matlab 238萬源代碼下載- www.pudn.com...

文件名稱: 20140219-Emf_Demo下載收藏√ [5 4 3 2 1 ]開發工具: Visual C文件大小: 6312 KB上傳時間: 2014-07-10下載次數: 2詳細說明&#xff1a;EMF 矢量圖 可以讀取和保存EMF矢量圖的封閉類非常實用-EMF EMF vector can read and save the class very useful vector cl…

orcale 之 集合操作

集合操作就是將兩個或者多個 sql 查詢的結果合并成復合查詢。常見的集合操作有UNION(并運算)、UNION ALL、INTERSECT(交運算)和MINUS(差運算)。 UNION UNION 運算可以將多個查詢結果集相加,形成一個結果集, 其結果相當于集合運算的并運算. UNION 可以將第一個查詢結果的所有行與…

PDFMate PDF Converter Pro

http://www.pdfmate.com轉載于:https://www.cnblogs.com/scgw/p/4203999.html

linux 廣播

廣播是一臺主機向局域網內的所有主機發送數據。這時&#xff0c;同一網段的所有主機都能接收到數據。發送廣播包的步驟大致如下: (1)確定一個發送廣播的接口&#xff0c;如eth0 (2)確定廣播的地址&#xff0c;通過ioctl函數&#xff0c;請求碼設置為SIOCGIFBRDADDR得到廣播的地…

thinkphp5.1 php7,空白目錄 · 細數ThinkPHP5.1.7版本新特性 · 看云

>[danger] 官方已經在前不久發布了ThinkPHP5.1.7版本&#xff0c;5.1版本相較于5.0版本而言&#xff0c;本身更加嚴謹和規范&#xff0c;更接近主流設計思想。近半年來&#xff0c;5.1版本更新頻繁&#xff0c;此次最新版本更是帶來了很多的新特性。正在或者打算使用5.1版本…

JS中popup.js

為什么80%的碼農都做不了架構師&#xff1f;>>> //popup class 顯示彈出窗口&#xff0c;。/*以下為使用popup對象&#xff0c;傳入相應的配置參數&#xff0c;彈出不同類型的窗口 function ShowIframe() //顯示iframe { var popnew P…

圖像連通域標記算法研究

搬以前寫的博客【2014-03-01 08:09】 圖像連通域標記算法研究 ConnectedComponent Labeling 最近在研究一篇復雜下背景文字檢測的論文。 “Detecting Text in Natural Scenes with Stroke Width Transform ” CPVR 2010的文章&#xff0c;它主要探討利用文字內…

lightoj 1214

lightoj 1214 Large Division &#xff08;大數除法&#xff09; 鏈接&#xff1a;http://www.lightoj.com/volume_showproblem.php?problem1214 題意&#xff1a;給定 a&#xff0c; b 兩個數&#xff0c;判斷 a 是否整除 b 。&#xff08;a 為 大數&#xff09; 思路&#…

二階振蕩衰減 matlab,基于Matlab/Simulink的二階控制系統仿真研究

1 二階控制系統模型本文引用地址&#xff1a;http://www.eepw.com.cn/article/201612/328597.htm能夠用二階微分方程描述的系統稱為二階控制系統。在控制工程實踐中&#xff0c;二階控制系統十分常見&#xff0c;例如&#xff0c;電樞控制的直流電動機&#xff0c;RLC網絡和彈簧…

CCF201409-5 拼圖(30分)

試題編號&#xff1a; 201409-5 試題名稱&#xff1a; 拼圖 時間限制&#xff1a; 3.0s 內存限制&#xff1a; 256.0MB 問題描述&#xff1a; 問題描述給出一個nm的方格圖&#xff0c;現在要用如下L型的積木拼到這個圖中&#xff0c;使得方格圖正好被拼滿&#xff0c;請問總共有…

歐幾里得算法(即輾轉相除法)的時間復雜度

本文是參考新浪博客而寫。 歐幾里得算法, 又稱輾轉相除法, 用于求兩個自然數的最大公約數. 算法的思想很簡單, 基于下面的數論等式 gcd(a, b) gcd(b, a mod b) 其中gcd(a, b)表示a和b的最大公約數, mod是模運算, 即求a除以b的余數. 代碼如下: #include <iostream> #i…

UIImageJPEGRepresentation和UIImagePNGRepresentation

在Iphone上有兩種讀取圖片數據的簡單方法: UIImageJPEGRepresentation和UIImagePNGRepresentation. UIImageJPEGRepresentation函數需要兩個參數:圖片的引用和壓縮系數.而UIImagePNGRepresentation只需要圖片引用作為參數.通過在實際使用過程中,比較發現: UIImagePNGRepresenta…

C++ 0x

轉載于:https://www.cnblogs.com/iiiDragon/p/3230006.html