摘要:概述上一篇針對進行了入門體驗,本節將繼續介紹基本映射單表查詢。本系列文章是基于版本。總結本節實例了基本查詢及映射,這些也是實際工作中用的最多的功能,雖然簡單,日積月累會構建起我們的知識結構和體系,一步一步來。。。
概述
上一篇針對Mybatis進行了入門體驗,本節將繼續介紹Mybatis基本映射--單表查詢。
本系列文章是基于Mybatis 3.4.6 版本。
創建表針對于上一節,我們對sys_user表結構進行了優化,字段類型更規范了些,這樣做更有利于數據庫性能,我們參考了一些數據庫設計規范,后續抽時間整理分享出來,修改后SQL語句為:
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 "手機號", `created_date` datetime NOT NULL COMMENT "創建時間", `modified_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "修改時間", `yn` tinyint(1) unsigned NOT NUll DEFAULT 1 COMMENT "是否有效(0無效,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="用戶信息表";實體
我們的SysUser實體代碼如下(使用lombok注解,在類中不必寫get/set方法,提高開發效率以及代碼更整潔):
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,支持使用接口調用方法,并且對于多參數需求,支持在方法參數中使用注解@Param設置參數的名字(2.0中需要使用對象或map來傳多參數),接口代碼如下:
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 ListselectAll() throws Exception; // 返回單個或0個使用對象接收 public SysUser selectUserById(Long id) throws Exception; // 多參數方法 public SysUser selectUserByAccountAndPass(@Param("userAccount") String userAccount, @Param("userPassword") String userPassword) throws Exception; }
接口類中定義了無參、一個參數和多個參數的查詢方法,在mapper配置文件中需定義三個id為方法名的select查詢標簽。
需注意的是查詢SQL返回的結果數量,當返回1個或0個時,使用對象,返回多個時使用List,否則會報錯。
mapper配置文件定義mapper映射文件,代碼如下:
mybatis配置文件
mybatis配置文件代碼如下:
測試
編寫測試用例對mapper方法進行測試,代碼如下:
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); Listusers = 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(); } } }
運行測試方法即可。
總結本節實例了mybatis基本查詢及映射,這些也是實際工作中用的最多的功能,雖然簡單,日積月累會構建起我們的知識結構和體系,一步一步來。。。
最后創建了qq群方便大家交流,可掃描加入,同時也可加我qq:276420284,共同學習、共同進步,謝謝!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71261.html
摘要:執行沒有,批處理不支持,將所有都添加到批處理中,等待統一執行,它緩存了多個對象,每個對象都是完畢后,等待逐一執行批處理。 Mybatis常見面試題 #{}和${}的區別是什么? #{}和${}的區別是什么? 在Mybatis中,有兩種占位符 #{}解析傳遞進來的參數數據 ${}對傳遞進來的參數原樣拼接在SQL中 #{}是預編譯處理,${}是字符串替換。 使用#{}可以有效的防止...
摘要:內部將通過創建事務管理應用服務器負責管理數據庫連接生命周期使用。對于大型數據庫而言這會導致很差的性能問題。這是指檢索出的對象不會被共享并且可以被調用者安全地修改不會其他潛在的調用者或者線程的潛在修改干擾。 第一章 mybatis 簡介 以下內容是自己在看本書時覺得重要的地方記錄下來,一方面自己做個筆記也希望對其他同行有幫助 簡介 mybatis: 是一個簡化和實現了Java數據持久層的...
摘要:將語句硬編碼到代碼中,修改語句需要重新編譯代碼設想使用配置文件配置。從結果集中遍歷數據的時候存在硬編碼。表示一個拼接符號,會引用注入,所以不建議使用。和表示查詢出一條記錄進行映射。 MyBatis是什么 mybatis是托管在github上的ORM框架,讓程序員將主要精力放在SQL上,通過mybatis提供映射方式,自由靈活(SQL的可定制性較高,半自動化)生成滿足需求的SQL語句。m...
閱讀 3450·2019-08-30 15:55
閱讀 2050·2019-08-30 15:44
閱讀 1453·2019-08-30 12:47
閱讀 741·2019-08-30 11:05
閱讀 1629·2019-08-30 10:54
閱讀 655·2019-08-29 16:07
閱讀 3568·2019-08-29 14:17
閱讀 2223·2019-08-23 18:31