成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Mybatis基本映射--SELECT

printempw / 621人閱讀

摘要:概述上一篇針對(duì)進(jìn)行了入門(mén)體驗(yàn),本節(jié)將繼續(xù)介紹基本映射單表查詢。本系列文章是基于版本。總結(jié)本節(jié)實(shí)例了基本查詢及映射,這些也是實(shí)際工作中用的最多的功能,雖然簡(jiǎn)單,日積月累會(huì)構(gòu)建起我們的知識(shí)結(jié)構(gòu)和體系,一步一步來(lái)。。。

概述

上一篇針對(duì)Mybatis進(jìn)行了入門(mén)體驗(yàn),本節(jié)將繼續(xù)介紹Mybatis基本映射--單表查詢。

本系列文章是基于Mybatis 3.4.6 版本。

創(chuàng)建表

針對(duì)于上一節(jié),我們對(duì)sys_user表結(jié)構(gòu)進(jìn)行了優(yōu)化,字段類型更規(guī)范了些,這樣做更有利于數(shù)據(jù)庫(kù)性能,我們參考了一些數(shù)據(jù)庫(kù)設(shè)計(jì)規(guī)范,后續(xù)抽時(shí)間整理分享出來(lái),修改后SQL語(yǔ)句為:

CREATE TABLE `sys_user` (
  `id` bigint(11) unsigned NOT NULL AUTO_INCREMENT COMMENT "主鍵",
  `user_account` varchar(50) NOT NULL COMMENT "用戶賬戶",
  `user_password` char(32) NOT NULL COMMENT "MD5加密的用戶密碼",
  `user_email` varchar(20) DEFAULT NULL COMMENT "用戶郵箱",
  `user_phone` varchar(20) DEFAULT NULL COMMENT "手機(jī)號(hào)",
  `created_date` datetime NOT NULL COMMENT "創(chuàng)建時(shí)間",
  `modified_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "修改時(shí)間",
  `yn` tinyint(1) unsigned NOT NUll DEFAULT 1 COMMENT "是否有效(0無(wú)效,1有效)",
  `modified_user` varchar(50) DEFAULT NULL COMMENT "修改人",
  `remark` varchar(500) DEFAULT NULL COMMENT "備注",
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT="用戶信息表";
實(shí)體

我們的SysUser實(shí)體代碼如下(使用lombok注解,在類中不必寫(xiě)get/set方法,提高開(kāi)發(fā)效率以及代碼更整潔):

package com.github.dalianghe.model;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.util.Date;

@Getter
@Setter
@ToString
public class SysUser {

    private Long id;

    private String userAccount;

    private String userPassword;

    private String userEmail;

    private String userPhone;

    private Date createdDate;

    private Date modifiedDate;

    private Integer yn;

    private String modifiedUser;

    private String remark;

}

接口

Mybatis3.0相比于2.0,支持使用接口調(diào)用方法,并且對(duì)于多參數(shù)需求,支持在方法參數(shù)中使用注解@Param設(shè)置參數(shù)的名字(2.0中需要使用對(duì)象或map來(lái)傳多參數(shù)),接口代碼如下:

package com.github.dalianghe.mapper;

import com.github.dalianghe.model.SysUser;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface SysUserMapper {

    // 返回多值需用List接收
    public List selectAll() throws Exception;
    // 返回單個(gè)或0個(gè)使用對(duì)象接收
    public SysUser selectUserById(Long id) throws Exception;
    // 多參數(shù)方法
    public SysUser selectUserByAccountAndPass(@Param("userAccount") String userAccount,
                                              @Param("userPassword") String userPassword) throws Exception;

}

接口類中定義了無(wú)參、一個(gè)參數(shù)和多個(gè)參數(shù)的查詢方法,在mapper配置文件中需定義三個(gè)id為方法名的select查詢標(biāo)簽。

需注意的是查詢SQL返回的結(jié)果數(shù)量,當(dāng)返回1個(gè)或0個(gè)時(shí),使用對(duì)象,返回多個(gè)時(shí)使用List,否則會(huì)報(bào)錯(cuò)。

mapper配置文件

定義mapper映射文件,代碼如下:






    
    
        
        
        
        
    
    
    
    
    
    
    


mybatis配置文件

mybatis配置文件代碼如下:







    
        
        
        
        
    

    
        
        
    
    
    
        
            
                
            
            
                
                
                
                
            
        
    

    
        
        

        
        
    


測(cè)試

編寫(xiě)測(cè)試用例對(duì)mapper方法進(jìn)行測(cè)試,代碼如下:

package com.github.dalianghe;

import com.github.dalianghe.mapper.SysUserMapper;
import com.github.dalianghe.model.SysUser;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class UserMapperTest {

    private static SqlSessionFactory sqlSessionFactory;

    @Before
    public void init(){
        try{
            Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        }catch (IOException e){
            e.printStackTrace();
        }
    }

    public SqlSession getSqlSession(){
        return sqlSessionFactory.openSession();
    }

    @Test
    public void testSelectAll(){
        SqlSession sqlSession = getSqlSession();
        try{
            SysUserMapper sysUserMapper = sqlSession.getMapper(SysUserMapper.class);
            List users = sysUserMapper.selectAll();
            users.forEach(user -> {
                System.out.println(user.toString());
            });
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    @Test
    public void testSelectUserById(){
        SqlSession sqlSession = getSqlSession();
        try{
            SysUserMapper sysUserMapper = sqlSession.getMapper(SysUserMapper.class);
            SysUser sysUser = sysUserMapper.selectUserById(1L);
            System.out.println(sysUser);
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    @Test
    public void testSelectUserByAccountAndPass(){
        SqlSession sqlSession = getSqlSession();
        try{
            SysUserMapper sysUserMapper = sqlSession.getMapper(SysUserMapper.class);
            SysUser sysUser = sysUserMapper.selectUserByAccountAndPass("admin","123");
            System.out.println(sysUser);
        }catch (Exception e){
            e.printStackTrace();
        }
    }

}

運(yùn)行測(cè)試方法即可。

總結(jié)

本節(jié)實(shí)例了mybatis基本查詢及映射,這些也是實(shí)際工作中用的最多的功能,雖然簡(jiǎn)單,日積月累會(huì)構(gòu)建起我們的知識(shí)結(jié)構(gòu)和體系,一步一步來(lái)。。。

最后創(chuàng)建了qq群方便大家交流,可掃描加入,同時(shí)也可加我qq:276420284,共同學(xué)習(xí)、共同進(jìn)步,謝謝!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/71261.html

相關(guān)文章

  • Mybatis常見(jiàn)面試題

    摘要:執(zhí)行沒(méi)有,批處理不支持,將所有都添加到批處理中,等待統(tǒng)一執(zhí)行,它緩存了多個(gè)對(duì)象,每個(gè)對(duì)象都是完畢后,等待逐一執(zhí)行批處理。 Mybatis常見(jiàn)面試題 #{}和${}的區(qū)別是什么? #{}和${}的區(qū)別是什么? 在Mybatis中,有兩種占位符 #{}解析傳遞進(jìn)來(lái)的參數(shù)數(shù)據(jù) ${}對(duì)傳遞進(jìn)來(lái)的參數(shù)原樣拼接在SQL中 #{}是預(yù)編譯處理,${}是字符串替換。 使用#{}可以有效的防止...

    liuchengxu 評(píng)論0 收藏0
  • Java Persistence with MyBatis 3讀書(shū)筆記

    摘要:內(nèi)部將通過(guò)創(chuàng)建事務(wù)管理應(yīng)用服務(wù)器負(fù)責(zé)管理數(shù)據(jù)庫(kù)連接生命周期使用。對(duì)于大型數(shù)據(jù)庫(kù)而言這會(huì)導(dǎo)致很差的性能問(wèn)題。這是指檢索出的對(duì)象不會(huì)被共享并且可以被調(diào)用者安全地修改不會(huì)其他潛在的調(diào)用者或者線程的潛在修改干擾。 第一章 mybatis 簡(jiǎn)介 以下內(nèi)容是自己在看本書(shū)時(shí)覺(jué)得重要的地方記錄下來(lái),一方面自己做個(gè)筆記也希望對(duì)其他同行有幫助 簡(jiǎn)介 mybatis: 是一個(gè)簡(jiǎn)化和實(shí)現(xiàn)了Java數(shù)據(jù)持久層的...

    JinB 評(píng)論0 收藏0
  • Mybatis學(xué)習(xí)筆記(一)——基本的CRUD操作

    摘要:將語(yǔ)句硬編碼到代碼中,修改語(yǔ)句需要重新編譯代碼設(shè)想使用配置文件配置。從結(jié)果集中遍歷數(shù)據(jù)的時(shí)候存在硬編碼。表示一個(gè)拼接符號(hào),會(huì)引用注入,所以不建議使用。和表示查詢出一條記錄進(jìn)行映射。 MyBatis是什么 mybatis是托管在github上的ORM框架,讓程序員將主要精力放在SQL上,通過(guò)mybatis提供映射方式,自由靈活(SQL的可定制性較高,半自動(dòng)化)生成滿足需求的SQL語(yǔ)句。m...

    evin2016 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<