1. 程式人生 > >springboot學習筆記(七)——整合mybatis(註解方式)

springboot學習筆記(七)——整合mybatis(註解方式)

目錄

前言:

開發環境:

專案結構:

配置檔案:

          資料庫表:

開始開發:

測試:

總結:

前言:

          這一篇博文的延續上一篇的。只是使用mybatis的註解形式。相對來說註解形式和xml形式是有一些不同的。在之前學習的時候就遇到了一個小坑。   

開發環境:

         win10+IntelliJ IDEA +JDK1.8  

         springboot版本:springboot 1.5.14 ——2.0後的springboot增加了挺多新特性,暫時先不做了解

專案結構:

                             

專案完整案例:

配置檔案:

        pom.xml檔案:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.wen</groupId>
	<artifactId>demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>demo</name>
	<description>Demo project for Spring Boot</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.3.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.3.2</version>
		</dependency>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>


</project>

        application.properties檔案:

spring.datasource.url=jdbc:mysql://localhost:3306/xmsx
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

#日期期時格式設定置
#Format setting for date time
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss

          資料庫表:

                      使用者表:

         

                       用於一對多的list表

           

開始開發:

            Mapper層:     

package com.wen.test.mapper;

import com.wen.test.vo.Lists;
import com.wen.test.vo.Users;
import org.apache.ibatis.annotations.*;

import java.util.List;

public interface UserMapper {
    /**
     * 最低階的使用。保持實體屬性名和資料庫列名一致
     *
     * @return
     */

    @Select("select * from user")
    List<Users> findAllUsers();

    /**
     * 高階一點的操作,
     * 實體的屬性名可以與資料庫列名不一致進行對映
     *
     * @return
     */

    @Results({@Result(id = true, property = "user_id", column = "user_id", javaType = Integer.class),
            @Result(property = "phone", column = "phone", javaType = String.class),
            @Result(property = "password", column = "password", javaType = String.class)
    })
    @Select("select * from user")
    List<Users> findAllUsers1();

    /**
     * 註解形式一對多
     *
     * @param user_id
     * @return
     */

    @Results({
            @Result(id = true, column = "user_id", property = "user_id"),
            @Result(column = "phone", property = "phone"),
            @Result(column = "password", property = "password"),
            @Result(column = "user_id", property = "lists", javaType = List.class,
                    many = @Many(
                            select = "com.wen.test.mapper.UserMapper.selectAllByUserId"
                    )
            )
    })
    @Select("select user.user_id,user.phone,user.password from user where  user.user_id=#{user_id}")
    Users getUsersAndLists(@Param("user_id") Integer user_id);


    /**
     * 被引用查詢多個物件的方法
     *
     * @param user_id
     * @return
     */
    @Select("select list.lists,list.ids from list where list.user_id=#{user_id}")
    @Results({
            @Result(id = true, column = "ids", property = "id"),
            @Result(column = "lists", property = "lists")
    })
    List<Lists> selectAllByUserId(@Param("user_id") Integer user_id);

    /**
     * 一對一的話,用的是one [email protected]()這個註解。。
     * 在寫一個查詢單個的介面。就可以了。。這裡就不寫了。。持續懶惰中。。。。
     */


}

            Controller層:

package com.wen.test.mapper;

import com.wen.test.vo.Lists;
import com.wen.test.vo.Users;
import org.apache.ibatis.annotations.*;

import java.util.List;

public interface UserMapper {
    /**
     * 最低階的使用。保持實體屬性名和資料庫列名一致
     *
     * @return
     */

    @Select("select * from user")
    List<Users> findAllUsers();

    /**
     * 高階一點的操作,
     * 實體的屬性名可以與資料庫列名不一致進行對映
     *
     * @return
     */

    @Results({@Result(id = true, property = "user_id", column = "user_id", javaType = Integer.class),
            @Result(property = "phone", column = "phone", javaType = String.class),
            @Result(property = "password", column = "password", javaType = String.class)
    })
    @Select("select * from user")
    List<Users> findAllUsers1();

    /**
     * 註解形式一對多
     *
     * @param user_id
     * @return
     */

    @Results({
            @Result(id = true, column = "user_id", property = "user_id"),
            @Result(column = "phone", property = "phone"),
            @Result(column = "password", property = "password"),
            @Result(column = "user_id", property = "lists", javaType = List.class,
                    many = @Many(
                            select = "com.wen.test.mapper.UserMapper.selectAllByUserId"
                    )
            )
    })
    @Select("select user.user_id,user.phone,user.password from user where  user.user_id=#{user_id}")
    Users getUsersAndLists(@Param("user_id") Integer user_id);


    /**
     * 被引用查詢多個物件的方法
     *
     * @param user_id
     * @return
     */
    @Select("select list.lists,list.ids from list where list.user_id=#{user_id}")
    @Results({
            @Result(id = true, column = "ids", property = "id"),
            @Result(column = "lists", property = "lists")
    })
    List<Lists> selectAllByUserId(@Param("user_id") Integer user_id);

    /**
     * 一對一的話,用的是one [email protected]()這個註解。。
     * 在寫一個查詢單個的介面。就可以了。。這裡就不寫了。。持續懶惰中。。。。
     */


}

            vo層:(實體)

package com.wen.test.vo;

import lombok.Data;

import java.util.List;

@Data
public class Users  {

    private Integer user_id;
    private String phone;
    private String password;
    /**
     * 一對多
     */
    private  List<Lists> lists;


}
package com.wen.test.vo;

import lombok.Data;

@Data
public class Lists {
    private Integer id;
    private String lists;
}

測試:

        測試一對多:(顯示部分,太多不完全截圖)

       測試列名與實體屬性名不一致的方法:

        測試列名與實體屬性名一致的方法:

總結:

            註解形式的開發和jpa等ORM框架都很類似,只是一些註解不同。相信對jpa等orm有經驗的同學一下子就可以直接編寫了。本次入門案例簡化了很多。但是依舊有很多知識點要注意的,當然,最重要的是自己的學習能力。如果實在不瞭解Mybatis的話,可以去找找學習的部落格。最後,注大家學習進步,步步高昇。                                                           — —謝謝

程式人生,與君共勉~!

相關推薦

springboot學習筆記——整合mybatis註解方式

目錄 前言: 開發環境: 專案結構: 配置檔案:           資料庫表: 開始開發: 測試: 總結: 前言:           這一篇博文的延續上一篇的。只是使用mybatis的註解形式。相對來說註解形式和xml形式是

dubbox在異構系統中的使用-整合mybatis註解方式到spring

原來在spring中使用mybatis一直採用了mapper-xml配置檔案方式,編寫Mapper介面檔案,然後編寫對應的sql指令碼xml配置檔案,最後在spring-context.xml配置檔案中配置mapper。得益於eclipse良好的程式碼提示功能,整合並不困難。

Spring AOP學習筆記(一)-AOP相關概念和基於註解方式實現AOP的規則

一、 Spring AOP 概念 其實AOP就是要將我們Aspect中的Pointcut和Target Object中的JointPoint動態的連線起來,同時我們通過Advice指明Pointcut執行的一個時機。這是個人理解 AOP相關名詞解釋

SpringBoot學習筆記SpringBoot整合Mybatis-Plus+程式碼生成

簡介 官網:http://baomidou.oschina.io/mybatis-plus-doc/ 平時業務程式碼不復雜的時候我們寫什麼程式碼寫的最多,就是我們的SQL語句啊,配置那麼多的Mapper.xml,還要配置什麼resultMap這些東西,還要去管理paramtype

SpringBoot學習筆記SpringBoot整合MybatisSpringBoot事務管理、SpringBoot多資料來源

SpringBoot整合Mybatis 第一步我們需要在pom.xml裡面引入mybatis相關的jar包 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artif

SpringBoot學習筆記MyBatis-Plus

@[Toc] # 一、MyBatis-Plus簡介 MyBatis-Plus (簡稱 MP)是一個 MyBatis 的增強工具,在 MyBatis 的基礎上只做增強不做改變,為簡化開發、提高效率而生。 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/202011

SpringBoot學習筆記1:配置Mybatis

target oca run class .com gpo connect auto users SpringBoot學習筆記(1):配置Mybatis 參考資料:   1.AndyLizh的博客   2.xiaolyuh123的博客 快速開始 添加Mybatis依賴(

SpringBoot學習筆記05——SpringBoot整合RabbitMQ

下面我們來學習一下rabbitMQ消費者配置,話不多說直接上程式碼。 1.向application.properties檔案中新增配置 #rabbitMQ的 5672 埠 spring.rabbitmq.addresses=192.168.31.199:32771 #使用者名稱密碼 spri

SpringBoot學習筆記04——SpringBoot整合RabbitMQ

首先需要搭建一個RabbitMQ的服務,我是在docker跑了一個rabbitMQ的服務, docker的命令語句  docker run --name rabbit -P -d rabbitmq:3-management 映射出來的埠號如下圖 rabbitMQ這裡我

SpringBoot學習筆記---配置多資料來源Mybatis

介紹 為什麼配置多資料來源,因為在實際業務需求中 資料的來源可能不是一個數據庫中可進行配置兩套資料來源就可以避免跨庫查詢 pom檔案需要引入的依賴 <dependency> <groupId>org.mybatis.spring.boot</gr

SpringBoot學習記錄——整合Mybatis

以前整合了Spring+SpringMVC+Mybatis,今天用SpringBoot整合了Mybatis,發現這個比之前的SSM的整合方便的太多,省去大量的配置檔案,也許是我還沒用到很深入吧,話不多說,直接進入正題。 1、建立一個SpringBoot專案: 2、下一步:

SpringBoot學習筆記SpringBoot整合lombok工具、SpringBoot整合Shiro安全框架

SpringBoot整合lombok工具 什麼是lombok? 自動生成setget方法,建構函式,列印日誌 官網:http://projectlombok.org/features/index. 平時我們寫的一些重複程式碼,比如每個實體類的setter,getter方法,給每個類寫

SpringBoot學習筆記SpringBoot訪問靜態檔案、捕獲全域性異常、整合Thymeleaf、整合JSP

SpringBoot訪問靜態檔案 什麼是靜態檔案? 不需要通過web容器去得到的檔案,直接通過路徑就能得到的檔案,比如專案的css,js,img等檔案。 所有的資原始檔都應該在src/main/resources(maven專案中會自動建立這個資料夾)資料夾下面,但在SpringBo

SpringBoot學習筆記:非同步呼叫

@[Toc] “非同步呼叫”對應的是“同步呼叫”, 在實際開發中,有時候為了及時處理請求和進行響應,我們可能使用非同步呼叫,同步呼叫指程式按照定義順序依次執行,每一行程式都必須等待上一行程式執行完成之後才能執行;非同步呼叫指程式在順序執行時,不等待非同步呼叫的語句返回結果就執行後面的程式。非同步呼

springboot學習筆記

web stc depend tar 添加 pen quest lips 整合   在我看來,spring-boot 的好處在於能快速的搭建起一個項目的框架 ,省略了繁瑣的xml配置,能通過spring boot Application類快速啟動工程   快速搭建sprin

SpringBoot-- 整合MyBatis

con data pac erl div ini 文件 true mave 1.pom.xml 配置maven依賴 <dependency> <groupId>org.mybatis.spring.boot</g

springboot整合Mybatis——入門

target 連接池 param 不支持 void 2.6 batis gpo onf 一、概述   1.先導     mybatis入門隨筆:http://www.cnblogs.com/jiangbei/p/6884641.html   2.引入依賴

SpringBoot學習筆記5:處理前端JSON返回的日期的格式

處理 date() ring row 學習筆記 post 直觀 val rtt SpringBoot學習筆記(4):處理前端JSON返回的日期的格式 問題描述   前端頁面顯示的時間為毫秒格式,不利於直觀顯示! 解決方法1——後端解決 public class Flow

Linux學習筆記周一次課3月19日

w vmstat top sar nload 10.1 使用w查看系統負載10.2 vmstat命令顯示狀態,每一秒一次,共5次,命令為#vmstat 1 5r,run表示運行;b,block表示阻塞,阻止;swpd,虛擬內存,若這個值大於0,表示內存不夠用;si磁盤輸入虛擬內存;so虛擬

Linux學習筆記周三次課3月21日

iptables netfilter INPUT OUTPUT ifconfig 10.11 Linux網絡相關ifconfig -a可以顯示禁止或down掉的網卡;啟動網卡#ifup ens33;禁掉網卡#ifdown ens33;網卡配置文件 /etc/sysconfig/networ