1. 程式人生 > >Mybatis入門例項(註解實現)(3)

Mybatis入門例項(註解實現)(3)

這裡做一個補充實現,前面我們是使用的基於配置檔案XML實現的,但是Mybatis其實還提供了另一種實現方式,那就是使用註解實現,所以我在這裡補充一下註解的實現。

1. 程式碼結構

這裡寫圖片描述

從程式碼結構看我們只是增加了UserDaoAnnotation.java和一個人用於測試註解的測試類TestAnnotations.java;
接下來我們就來看看我們是如何使用註解的吧。

2. 註解的使用

2.1 UserDaoAnnotation.java的實現

package com.stephen.mybatis.dao;

import org.apache.ibatis.annotations.*;

import
com.stephen.mybatis.model.User; public interface UserDaoAnnotation { //使用@Insert註解指明add方法要執行的SQL @Insert("INSERT INTO users(name, age) VALUES(#{name}, #{age})") @Options(useGeneratedKeys=true, keyProperty="id") Boolean add(User user); //使用@Delete註解指明deleteById方法要執行的SQL @Delete
("DELETE FROM users WHERE id=#{id}") Boolean delete(Integer id); //使用@Update註解指明update方法要執行的SQL @Update("UPDATE users SET name=#{name},age=#{age} WHERE id=#{id}") Boolean update(User user); //使用@Select註解指明getById方法要執行的SQL @Select("SELECT * FROM users WHERE id=#{id}") @Results
( { @Result(id = true, column = "id", property = "id"), @Result(column = "name", property = "name"), @Result(column = "age", property = "age") }) User get(Integer id); }

這就是使用註解的實現方式

2.2 註冊我們的註解類到配置檔案

需要在mappers下面註冊我們的介面:
<mapper class="com.stephen.mybatis.dao.UserDaoAnnotation"/>
在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 -->
<configuration>
    <!-- 載入配置檔案
    <properties resource="jdbc.properties"></properties>
     -->

    <!-- 定義具體的別名 -->
    <typeAliases>
        <!-- 定義某個類的別名
            <typeAlias alias="User" type="com.stephen.mybatis.model.User"/>
         -->
        <!-- package這個包下的所有的實體類的別名為其類名 -->
        <package name="com.stephen.mybatis.model"/>
    </typeAliases>

    <!-- 多個環境,如開發環境,正式環境等 -->
    <environments default="development">
        <!-- 定義development環境 -->
        <environment id="development">
            <!-- 事務管理的型別JDBC和MANAGED(容器管理模式) -->
            <transactionManager type="JDBC" />

            <!-- 資料來源配置
                UNPOOLED:開一個,用完後關閉
                POOLED:資料庫連線池
                JNDI:JNDI的資料來源
            -->
            <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="root" />
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <!-- 註冊UserMapper.xml檔案 ,所有的mapper檔案需要註冊到mappers中-->
        <mapper resource="com/stephen/mybatis/model/UserMapper.xml"/>
        <!-- 註冊UserMapper對映介面-->
        <mapper class="com.stephen.mybatis.dao.UserDaoAnnotation"/>
     </mappers>
</configuration>

2.3 測試註解實現

測試類唯一不同的是如何獲取我們的介面,當讓mybatis有它的方式:
UserDaoAnnotation的物件有UserDaoAnnotation介面使用sqlSession.getMapper(UserDaoAnnotation.class)動態構建出來。

package com.stephen.mybatis;

import com.stephen.mybatis.dao.UserDaoAnnotation;
import com.stephen.mybatis.model.User;
import com.stephen.mybatis.util.MybatisUtil;

public class TestAnnotations {

    /**
     * @param args
     */
    public static void main(String[] args) {
        //得到UserDaoAnnotation介面的實現類物件,UserDaoAnnotation介面的實現類物件由
        //sqlSession.getMapper(UserDaoAnnotation.class)動態構建出來
        UserDaoAnnotation userDao =
                MybatisUtil.getSession().getMapper(UserDaoAnnotation.class);

        User user = new User();
        user.setName("Stephen Huang");
        user.setAge(18);
        userDao.add(user);
        System.out.println("add user:" + user);

        System.out.println("get user id:" + user.getId());
        System.out.println(userDao.get(user.getId()));

        user.setAge(28);
        userDao.update(user);
        System.out.println("update user age=28:" + user);

        Integer userId = user.getId();
        userDao.delete(userId);
        System.out.println("delete user id=" + userId);
        System.out.println("get deleted user: " + userDao.get(userId));

    }

}

2.4 測試結果

log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory).
log4j:WARN Please initialize the log4j system properly.
add user:User [id=12, name=Stephen Huang, age=18]
get user id:12
User [id=12, name=Stephen Huang, age=18]
update user age=28:User [id=12, name=Stephen Huang, age=28]
delete user id=12
get deleted user: null

從我個人的愛好來看還是喜歡配置XML方式實,所以對註解還是有很多不夠全面的。後面的整理我們還是使用配置xml方式。
上面只是mybatis註解的基本用法,更多的用發還需要參見其他:
這裡給一個註解的使用介紹:
1. mybatis註解詳解
2. 淺入淺出MyBatis(14):使用註解

相關推薦

Mybatis入門例項(註解實現)(3)

這裡做一個補充實現,前面我們是使用的基於配置檔案XML實現的,但是Mybatis其實還提供了另一種實現方式,那就是使用註解實現,所以我在這裡補充一下註解的實現。 1. 程式碼結構 從程式碼結構看我們只是增加了UserDaoAnnotation.j

Spring Boot入門系列(十九)整合mybatis,使用註解實現動態Sql、引數傳遞等常用操作!

前面介紹了Spring Boot 整合mybatis 使用註解的方式實現資料庫操作,介紹瞭如何自動生成註解版的mapper 和pojo類。 接下來介紹使用mybatis 常用註解以及如何傳引數等資料庫操作中的常用操作。 其實,mybatis 註解方式 和 XML配置方式兩者的使用基本上相同,只有在構建 SQL

Mybatis自定義註解實現DAO層--實現DAO層介面

  Java新增自定義註解:https://www.cnblogs.com/0xcafedaddy/p/6095187.html 1、自定義一個註解@MybatisRepository用作dao掃描 /** * @author cao * @description 前沿my

Mybatis入門例項

MyBatis 簡介 MyBatis 是一款優秀的持久層框架,它支援定製化 SQL、儲存過程以及高階對映。MyBatis 避免了幾乎所有的 JDBC 程式碼和手動設定引數以及獲取結果集。MyBatis 可以使用簡單的 XML 或註解來配置和對映原生資訊,將介面和 Java 的

Java 註解入門例項 && 註解傳參

概念:java提供了一種原程式中的元素關聯任何資訊和任何元資料的途徑和方法 JDK內建系統註解: @Override 用於修飾此方法覆蓋了父類的方法; @Deprecated 用於修飾已經過時的方法; @Suppvisewarnings 用於通知java編譯器禁止特定的編譯警

Mybatis入門例項(一)

ibatis的3.X版本改名了,叫做MyBatis,暫且不討論之間的差別,今天來做一個MyBatis的小例子 其實MyBatis雖然在原始碼層面上和ibatis差別較大,但是我們實際用的時候差別並不大,只不過xml裡面的標籤名變了變,類名變了而已,其他的基本上一樣. 如果學

mybatis 詳解(三)------入門例項(基於註解

目錄 1、建立MySQL資料庫:mybatisDemo和表:user 2、建立一個Java工程,並匯入相應的jar包,具體目錄如下 3、在 MyBatisTest 工程中新增資料庫配置檔案 mybatis-configuration.xml 4、定義表所對應的實體

MyBatis入門實驗(4)之基於註解實現對資料的增刪查改

實驗內容 在上一章中,實現了基於XML檔案的方式對資料庫表進行增刪查改操作。 本次實驗將使用基於註解的方式實現對資料庫表的增刪查改操作。 操作步驟 一、安裝 新增Maven依賴(本文使用版本為3.4.6) <dependency&g

Spring Boot入門系列(十八)整合mybatis,使用註解的方式實現增刪改查

之前介紹了Spring Boot 整合mybatis 使用xml配置的方式實現增刪改查,還介紹了自定義mapper 實現複雜多表關聯查詢。雖然目前 mybatis 使用xml 配置的方式 已經極大減輕了配置的複雜度,支援 generator 外掛 根據表結構自動生成實體類、配置檔案和dao層程式碼,減輕很大一

S2SH簡單例項註解版——登入功能實現

第一步:Spring4 整合 Hibernate4 Spring4 接管 Hibernate4 所有 Bean 例項,以及 SessionFactory,事務管理器; 泛型注入; Entity  package com.java1234.entity; import j

經典三層框架初識(二)---Spring 2.3使用註解實現建立物件--補充

前面我們說的是資料持久層的dao物件的建立實現.現在我們希望加入業務邏輯層.那如何來做呢? 和使用xml實現bean裝配一樣,我們現在src下建立一個service包,裡面定義UserService介面 package service; public interface UserServi

經典三層框架初識(二)---Spring 2.3使用註解實現建立物件

前面我們都是xml配置檔案的形式實現bean的裝配,接下來我們介紹一下用註解實現bean的裝配.和前面的Mybatis一樣,使用註解會很方便. 首先我們介紹一下幾個註解: @Component  :用於建立物件 就等價於 <bean class=""></bean

Python字串格式化快速入門例項(自3.7官方文件)

Python字串格式化例子 Shawn python3.7 文件: https://docs.python.org/3/library/string.html#formatstrings 完整功能介紹見官方文件. 本文可用於快速查詢Python字串格

SpringBoot 通過自定義註解實現AOP切面程式設計例項

一直心心念的想寫一篇關於AOP切面例項的博文,拖更了許久之後,今天終於著手下筆將其完成。 基礎概念 1、切面(Aspect) 首先要理解‘切’字,需要把物件想象成一個立方體,傳統的面向物件變成思維,類定義完成之後(封裝)。每次例項化一個物件,對類定義中的成員變數賦值,就相當於對這個立方體進行了一個定義,

ZYBOZ7從入門到進階-3 zyboz7裸機實現Hello World

版權宣告:本文為博主原創文章,未經博主允許不得轉載。https://blog.csdn.net/a646123070 上一節,我們已經學會了純PL端的LED點燈實驗,也學會了如何建立一個空的專案,現在我們來學習一下PS端的裸機執行Hello World。 1、建立新工程 首先,按

Spring入門之五-------SpringIoC之通過註解實現

string類型 protected abstract 準備工作 @service urn 解決辦法 sin val 一、準備工作 創建一個Class註解@Configuration,如下例子: @Configuration // 該註解可理解為將當前class等同於一個

3.RobotFramework入門例項

一.介面詳解 1. project、suite頁面,edit欄 2.testcase頁面,edit欄 設定區:主要用來配製此TestCase執行階段的的操作 Documentation:說明,可新增TestCase的說明、上下文、引數說明、業務等。無內容限制

IT資源社群原創-新手學破解入門例項3

本節解決2個問題:1、去掉NAG視窗2、爆破註冊   1、去掉NAG視窗方法一:我們使用反編譯軟體“VBExplorer資源編輯.exe”對程式的時鐘進行修改,改為1毫秒,達到去掉NAG視窗效果。方法二:使用網上所講的4C偏移進行啟動視窗順序修改。詳細操作請看視訊演示2、爆破註冊使用反編譯軟

3、maven的第一個入門例項

學習目標: 1、瞭解maven的專案結構 2、掌握maven建立專案,並能正常編譯 3、掌握使用eclipse的maven外掛編譯專案 學習過程: 一、下面我們使用maven管理我們的第一個專案 1、maven的專案的目錄結構,maven有一套標準的目錄結構,雖然可以修改,但

Spring+SpringMVC+MyBatis入門實踐(3

註解方式IOC/DI 修改spring-config.xml ... <context:annotation-config/> <bean name="c" class="com.happycoder.pojo.Categ