mybatis select count(*) 一直返回0 mysql_Mybatis教程1:MyBatis快速入門

點擊上方“Java技術前線”,選擇“置頂或者星標”

與你一起成長

一、Mybatis介紹

8e008c1297225cff6bfdbcd22f1c69bf.png

MyBatis是一個支持普通*SQL*查詢存儲過程高級映射的優秀持久層框架。MyBatis消除了幾乎所有的JDBC代碼和參數的手工設置以及對結果集的檢索封裝。MyBatis可以使用簡單的XML或注解**用于配置和原始映射,將接口和Java的POJO(Plain Old Java Objects,普通的Java對象)映射成數據庫中的記錄。

二、mybatis快速入門

2.1、準備開發環境

1、創建測試項目,普通java項目或者是JavaWeb項目均可,如下圖所示:

3ff936dc740f5fb7f4005fc2cffb2b04.png

2、添加相應的jar包

*  【mybatis】*

mybatis-3.1.1.jar

*  【MYSQL驅動包】* mysql-connector-java-5.1.7-bin.jar

a0c44e0dbf2edc7dce6650e96bb2ba45.png

3、創建數據庫和表,針對MySQL數據庫

SQL腳本如下:

create database mybatis;

use mybatis;

CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT);

INSERT INTO users(NAME, age) VALUES('孤傲蒼狼', 27);

INSERT INTO users(NAME, age) VALUES('白虎神皇', 27);

將SQL腳本在MySQL數據庫中執行,完成創建數據庫和表的操作,如下:

240916633f4b6f4ebac8d3f8670e1d48.png

到此,前期的開發環境準備工作全部完成。

2.2、使用MyBatis查詢表中的數據

1、添加Mybatis的配置文件conf.xml

在src目錄下創建一個conf.xml文件,如下圖所示:

39228bcd8d216b7ae3d6f916e8afb7ec.png

conf.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>

<environments default="development">

<environment id="development">

<transactionManager type="JDBC" />

<dataSource type="POOLED">

<property name="driver" value="com.mysql.jdbc.Driver" />

<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />

<property name="username" value="root" />

<property name="password" value="XDP" />

dataSource>

environment>

environments>

configuration>

2、定義表所對應的實體類,*如下圖所示:*

*  f30ea0e20cc7e039aabb04e2c2bd2f82.png*

User類的代碼如下:

package me.gacl.domain;

/**

* @author gacl

* users表所對應的實體類

*/

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 + "]";

}

}

3、定義操作users表的sql映射文件userMapper.xml

創建一個me.gacl.mapping包,專門用于存放sql映射文件,在包中創建一個userMapper.xml文件,如下圖所示:

6fd8fc09d440ff088e9dd5d541833b35.png

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="me.gacl.mapping.userMapper">

<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="1.0" encoding="UTF-8"?>

DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

<environments default="development">

<environment id="development">

<transactionManager type="JDBC" />

<dataSource type="POOLED">

<property name="driver" value="com.mysql.jdbc.Driver" />

<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />

<property name="username" value="root" />

<property name="password" value="XDP" />

dataSource>

environment>

environments>

<mappers>

<mapper resource="me/gacl/mapping/userMapper.xml"/>

mappers>

configuration>

5、編寫測試代碼:執行定義的select語句

創建一個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 Test1 {

public static void main(String[] args) throws IOException {

//mybatis的配置文件

String resource = "conf.xml";

//使用類加載器加載mybatis的配置文件(它也加載關聯的映射文件)

InputStream is = Test1.class.getClassLoader().getResourceAsStream(resource);

//構建sqlSession的工廠

SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);

//使用MyBatis提供的Resources類加載mybatis的配置文件(它也加載關聯的映射文件)

//Reader reader = Resources.getResourceAsReader(resource);

//構建sqlSession的工廠

//SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);

//創建能執行映射文件中sql的sqlSession

SqlSession session = sessionFactory.openSession();

/**

* 映射sql的標識字符串,

* me.gacl.mapping.userMapper是userMapper.xml文件中mapper標簽的namespace屬性的值,

* getUser是select標簽的id屬性值,通過select標簽的id屬性值就可以找到要執行的SQL

*/

String statement = "me.gacl.mapping.userMapper.getUser";//映射sql的標識字符串

//執行查詢返回一個唯一user對象的sql

User user = session.selectOne(statement, 1);

System.out.println(user);

}

}

執行結果如下:

674585b05a4d97e6a3501c0be03c615d.png

可以看到,數據庫中的記錄已經成功查詢出來了。

作者:孤傲蒼狼

來源:https://www.cnblogs.com/xdp-gacl/p/4261895.html

熱門內容:

  • 888G面試資源分享
  • 騰訊云雙11特惠秒殺:1核2G配置云服務器,88元/1年
  • 2019年Java經典面試題匯總
  • Maven教程1:Maven入門
  • Maven教程2:Maven項目構建過程練習
  • Maven教程3:使用Maven構建項目
  • Maven教程4:Maven核心概念
  • Maven教程5: 聚合與繼承
  • Maven教程6: Maven與Eclipse整合
  • Maven教程7:eclipse中使用Maven創建Web項目.md
  • Maven教程8: 使用Maven構建多模塊項目
  • Maven教程9: 使用Nexus搭建Maven私服

e3e14150a67a46a614879e9fb1277de0.png

喜歡就點個"在看"唄^_^

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

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

相關文章

css預處理器sass使用教程(多圖預警)

css預處理器賦予了css動態語言的特性&#xff0c;如變量、函數、運算、繼承、嵌套等&#xff0c;有助于更好地組織管理樣式文件&#xff0c;以及更高效地開發項目。css預處理器可以更方便的維護和管理css代碼&#xff0c;讓整個網頁變得更加靈活可變。對于預處理器&#xff0c;…

mysql 主從優點_MySql主從配置實踐及其優勢淺談

1、增加兩個MySQL,我將C:\xampp\mysql下的MYSQL復制了一份&#xff0c;放到D:\Mysql2\Mysql5.1修改my.ini(linux下應該是my.cnf)&#xff1a;[client]port 3307[mysqld]port 3307basedirD:/Mysql2/Mysql5.1/mysqldatadirD:/Mysql2/Mysql5.1/mysql/data/之后&#xff0c;再增加…

python 多線程并發編程(生產者、消費者模式),邊讀圖像,邊處理圖像,處理完后保存圖像實現提高處理效率

文章目錄需求實現先導入本次需要用到的包一些輔助函數如下函數是得到指定后綴的文件如下的函數一個是讀圖像&#xff0c;一個是把RGB轉成BGR下面是主要的幾個處理函數在上面幾個函數構建對應的處理函數main函數按順序執行結果需求 本次的需求是邊讀圖像&#xff0c;邊處理圖像…

Sharepoint學習筆記—Site Definition系列-- 2、創建Content Type

Sharepoint本身就是一個豐富的大容器&#xff0c;里面存儲的所有信息我們可以稱其為“內容(Content)”&#xff0c;為了便于管理這些Conent&#xff0c;按照人類的正常邏輯就必然想到的是對此進行“分類”。分類所涉及到的層面又必然包括: 1、分類的標準或特征描述{即&#xf…

arduino byte轉string_Java數組轉List集合的三駕馬車

點擊上方 藍字關注我們來源&#xff1a;blog.csdn.net/x541211190/article/details/79597236前言本文中的代碼命名有的可能不太規范&#xff0c;是因為沒法排版的問題&#xff0c;小仙已經很努力去解決了&#xff0c;希望各位能多多點贊、分享。好了&#xff0c;不多bb了(不要讓…

ES6筆記(4)-- Symbol類型

系列文章 -- ES6筆記系列 Symbol是什么&#xff1f;中文意思是標志、記號&#xff0c;顧名思義&#xff0c;它可以用了做記號。 是的&#xff0c;它是一種標記的方法&#xff0c;被ES6引入作為一種新的數據類型&#xff0c;表示獨一無二的值。 由此&#xff0c;JS的數據類型多了…

mysql類型說明_MYSQL 數據類型說明

MySQL支持大量的列類型&#xff0c;它可以被分為3類&#xff1a;數字類型、日期和時間類型以及字符串(字符)類型。本節首先給出可用類型的一個概述&#xff0c;并且總結每個列類型的存儲需求&#xff0c;然后提供每個類中的類型性質的更詳細的描述。概述有意簡化&#xff0c;更…

LeetCode OJ - Convert Sorted List to Binary Search Tree

題目&#xff1a; Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST. 解題思路&#xff1a; 注意是讓構造平衡二叉搜索樹。 每次將鏈表從中間斷開&#xff0c;分成左右兩部分。左邊部分用來構造左子樹&#xff…

手把手教你如下在Linux下如何寫一個C語言代碼,編譯并運行

文章目錄手把手教你如下在Linux下如何寫一個C語言代碼&#xff0c;編譯并運行打開Ubuntu終端創建 helloworld.c編譯C文件手把手教你如下在Linux下如何寫一個C語言代碼&#xff0c;編譯并運行 打開Ubuntu終端 我這里的終端是Windows下的WSL&#xff0c;如果有疑問&#xff0c;…

郵件群發工具的編寫(二)數據的保存

數據的保存與讀取 人類是在不斷探索與改進中進步的 上一篇&#xff0c;郵件群發工具的編寫&#xff08;一&#xff09;郵件地址提取&#xff0c;我們講到了郵箱的提取。 那么這一篇&#xff0c;講一下提取完的郵箱信息的保存和讀取。 首先&#xff0c;我希望對上一篇郵箱提取類…

mysql 文件描述符_MySQL沒有發布臨時文件描述符

幾天前,我們遇到了MySQL安裝的一些嚴重問題&#xff1a;MySQL不斷打開臨時文件(正常行為)但這些文件從未發布過.結果是,最終磁盤空間耗盡,我們必須重新啟動服務并手動清理/ tmp.使用lsof,我們看到這樣的事情&#xff1a;mysqld 16866 mysql 5u REG 8,3 0 692 /tmp/ibyWJylQ (de…

c++ lambda函數_C++11 之 lambda函數的詳細使用

1. lambda 函數概述lambda 表達式是一種匿名函數&#xff0c;即沒有函數名的函數&#xff1b;該匿名函數是由數學中的λ演算而來的。通常情況下&#xff0c;lambda函數的語法定義為&#xff1a;[capture] (parameters) mutable ->return-type {statement}其中&#xff1a;[c…

zabbix監控 openstack 的實例的資源使用情況

領導提出的需求&#xff1a;在不給云主機安裝客戶端的情況下&#xff0c;監控云主機的 cpui 內存 網絡 io&#xff0c;并且能出圖。想了幾個方案&#xff1a;1、ceilometer取數據&#xff0c;存入mangodb&#xff0c;用zabbix來讀mangodb數據繪圖2 ceilometer 取數據 &#xff…

pytorch 正向與反向傳播的過程 獲取模型的梯度(gradient),并繪制梯度的直方圖

記錄一下怎樣pytorch框架下怎樣獲得模型的梯度 文章目錄引入所需要的庫一個簡單的函數模型梯度獲取先定義一個model如下定義兩個獲取梯度的函數定義一些過程與調用上述函數的方法可視化一下梯度的histogram引入所需要的庫 import os import torch import torch.nn as nn impor…

2012-9

響應式設計的典范 http://www.bostonglobe.com/ 網站測試頁面 http://www.webpagetest.org/ 編程算法 http://blog.sina.com.cn/s/articlelist_1647038822_1_1.html C Programmers Cookbook http://www.cppblog.com/mzty/category/7609.html Blade 是一個現代構建系統&#xff…

PV操作 (轉載)

PV操作與信號量的處理相關&#xff0c;P表示通過的意思&#xff0c;V表示釋放的意思。信號量是最早出現的用來解決進程同步與互斥問題的機制&#xff0c;包括一個稱為信號量的變量及對它進行的兩個原語操作。 信號量&#xff08;semaphore&#xff09;的數據結構為一個值和一個…

ubuntu升級python_Ubuntu 升級python3為更高版本【已實測】

2020-04-13 更新安裝步驟&#xff1a; 1. 先update一下 sudo apt update 2. 安裝依賴庫 sudo apt-get install zlib1g-dev libbz2-dev libssl-dev libncurses5-dev libsqlite3-dev libreadline-dev tk-dev libgdbm-dev libdb-dev libpcap-dev xz-utils libexpat1-dev liblzma-d…

mysql5.0 java連接_Java連接mysql5.0

網上的資料真爛&#xff0c;千篇一律的拷貝的&#xff0c;根本不能用&#xff0c;鄙視&#xff01; 正題&#xff1a; 到MYSQL網站下載mysql-connector-java-5.0.4.zip文件&#xff0c;解壓&#xff1b; 解壓后有一個文件&#xff1a;mysql-connector-java-5.0.4-bin.jar 把這個…

Framework打包

2019獨角獸企業重金招聘Python工程師標準>>> iOS app需要在許多不同的CPU架構下運行&#xff1a; arm7: 在最老的支持iOS7的設備上使用 arm7s: 在iPhone5和5C上使用 arm64: 運行于iPhone5S的64位 ARM 處理器 上 i386: 32位模擬器上使用 x86_64: 64為模擬器上使用…

windows 10 下利用WSL的Linux環境實現vscode C/C++環境的配置

本文主要結合二個工具&#xff0c;介紹如何在windows搭建Linux開發環境&#xff1a; WSL(Windows Subsystem for Linux)VSCode(Visual Studio Code) 文章目錄WSL安裝VSCode安裝配置Linux下的C/C環境1. 打開WSL的控制臺2. 更新ubuntu軟件3. 安裝GCC和GDB4. 配置VSCode(1). 打開…