1. 程式人生 > >Mybatis兩種開發方式

Mybatis兩種開發方式

MyBatis是支援普通 SQL查詢,儲存過程和高階對映的優秀持久層框架,具有的特點,避免了JDBC對資料庫進行頻繁連線開啟和關閉造成資料庫資源浪費和硬編碼現象的出現。

MyBatis開發dao具有兩種開發方式,原始的dao開發和mapper代理的開發方式
Dao開發方式需要dao介面和dao實現類,向dao實現類中注入SqlSessionFactory,在方法體內通過SqlSessionFactory建立SqlSession

public interface UserDao {	
	
	public User findUserById(int id) throws Exception;
}

public class UserDaoImpl implements UserDao {

	
	private SqlSessionFactory sqlSessionFactory;
	public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {
		this.sqlSessionFactory = sqlSessionFactory;
	}
	@Override
	public User findUserById(int id) throws Exception {
		SqlSession sqlSession = sqlSessionFactory.openSession();
		User user = sqlSession.selectOne("User.findUserById", id);
		sqlSession.close();
		return user;
	}
}

<?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="User ">
       <select id="findUserById" parameterType="int" resultType="cn.itcast.mybatis.po.User">
		SELECT * FROM USER WHERE id=#{value}
	</select>
</mapper>

public class UserDaoImplTest {
	private SqlSessionFactory sqlSessionFactory;
	@Before
	public void setUp() throws Exception {	
		String resource = "SqlMapConfig.xml";		
		InputStream inputStream = Resources.getResourceAsStream(resource);		
		sqlSessionFactory = new SqlSessionFactoryBuilder()
				.build(inputStream);
	}
	@Test
	public void testFindUserById() throws Exception {
		UserDao userDao = new UserDaoImpl(sqlSessionFactory);
		User user = userDao.findUserById(1);
	}
}

Dao開發方式的侷限性主要在於dao介面實現類方法中存在冗餘並且存在硬編碼。

mapper代理的開發方式需要mapper.xml對映檔案

<mapper namespace="cn.itcast.mybatis.mapper.UserMapper">
<select id="findUserList" parameterType="cn.itcast.mybatis.po.UserQueryVo" 
			resultType="cn.itcast.mybatis.po.UserCustom">
	SELECT * FROM USER WHERE id=#{value}
	</select>
<mappers>

public User findUserById(int id) throws Exception;	

<mappers>
     <mapper resource="sqlmap/User.xml"/>
</mappers>
@Test
	public void testFindUserById () throws Exception {	
		SqlSession sqlSession = sqlSessionFactory.openSession();		
		UserMapper userMapper = sqlSession.getMapper(UserMapper.class);		
		List<User> list = userMapper.findUserById ("1");	
		sqlSession.close();



相關推薦

Mybatis開發方式

MyBatis是支援普通 SQL查詢,儲存過程和高階對映的優秀持久層框架,具有的特點,避免了JDBC對資料庫進行頻繁連線開啟和關閉造成資料庫資源浪費和硬編碼現象的出現。 MyBatis開發dao具有兩種開發方式,原始的dao開發和mapper代理的開發方式 Dao開發方式需

2.Mybatis開發模式

throws users pan except family RM Coding apache 不同 普通模式 自定義接口,接口實現類。 思考:需要sqlSessionFactory,生產sqlSession。 UserDao: package dao; import

6、ASP.NET MVC入門到精通——ASP.Net的開發方式

目前,ASP.NET中兩種主流的開發方式是:ASP.NET Webform和ASP.NET MVC。從下圖可以看到ASP.NET WebForms和ASP.NET MVC是並行的,也就是說MVC不會取代WebForms(至少目前是這樣)而是多了一個選擇,Webform在短期之內不會消亡,儘管存在許多缺點,

MyBatis傳參方式的區別

傳參方式 type 方式 數值 參數 識別 jdbc 直接 tis $與#的區別 select * from T_PRINT_LAYOUT where D_RECID = ${recId} 最後生成的SQL為: select * from T_PRINT_LAYO

MyBatis別名的實現方式

MyBatis別名(Alias)## 別名的兩種方式:  一、 <!--          別名的第一種方式,為User類取別名         這種方式比較直觀,把一個type直接用短名字

mybatis - 關於多表查詢 結果的封裝方式(註解版 , xml版)

需求: 一對多查詢,查詢使用者,同時查詢賬號的集合! 案例分析:        1.一個使用者可以有多個賬號 , 也可以沒有賬號.        

Spring Boot 初級入門教程(十八) —— 整合 MyBatis 另外一開發方式

在前面兩篇文章《Spring Boot 初級入門教程(十五) —— 整合 MyBatis》和《Spring Boot 初級入門教程(十七) —— 通過 Oracle 資料庫測試已整合 MyBatis(附原始碼)》中,介紹瞭如何在 SpringBoot 中整合 MyBatis 以及通過 MySQL

mybatis與資料庫的互動方式

這篇文章直接上核心程式碼:service層和controller層基本一樣,不需要改變什麼,只是dao層和xml配置檔案關於和資料庫互動這塊有些許不同。。 1.使用傳統的MyBatis提供的API。 spring----xml檔案: <!-- sqlSessinFa

SpringBoot建立資料庫連線JdbcTemplate和Mybatis方式

Spring Boot有兩種方法與資料庫建立連線,一種是使用JdbcTemplate,另一種整合Mybatis,下面分別為大家介紹一下如何整合和使用這兩種方式。1. 使用JdbcTemplate<dependency>    <groupId>mysq

springboot整合mybatis方式

springboot整合mybaits有兩種方式: 第二種:使用mybatis-spring整合的方式,也就是我們傳統的方式 我們推薦使用第二種,因為這樣我們可以很方便的控制Mybatis的各種配置,下面介紹兩種整合方式詳細步驟: 第一種 pom.xml增加myba

用Python3、NetCore、Shell分別開發一個Ubuntu版的定時提醒(附NetCore跨平臺釋出方式

新增直接執行py檔案的補充:請在py前面加上:#!/usr/bin/env python3 然後再執行 sudo chmod +x ./task.py 下次執行直接 ./task.py 平時經常用定時提醒來提高工作效率,到了Linux。。。。蒙圈了,以前C#寫的不能跨平臺

mybatis批量更新的實現方式

一:當要更新的內容是不樣的 mapper.xml檔案,後臺傳入一個物件集合,另外如果是mysql資料庫,一點在配置檔案上加上&allowMultiQueries=true,這樣才可以執行多條sql,以下為mysql <update id="batchUpda

Android開發中的Service的啟動方式的坑

和大家熟悉的Activity元件一樣,service也是Android應用開程式發中常用的元件,它和acitivy一樣也有自己的生命週期,不同的是service是執行在後臺的,沒有同用戶直接互動的介面。  service的是有兩種啟動方式: 第一種是通過startserv

【Android】Android開發之常用的loading等待效果實現,仿微博等待動畫。實現方式詳解

長期維護的Android專案,裡面包括常用功能實現,以及知識點詳解, 當然還有Java中的知識點。 具體請看github:https://github.com/QQ986945193/DavidAndroidProjectTools 首先大家都知道,當我

Android開發——彈性滑動的實現方式

0. 前言我們在Android開發——View滑動的三種實現方式中學習瞭如何進行View滑動,在第一種方法,利用ScrollBy和ScrollTo進行滑動時,滑動效果是瞬間完成的,為了更好的使用者體驗,

MyBatis開發模式

之前簡單介紹了 MyBatis 持久層框架對於資料的持久化操作。這一篇是對上篇的補充,介紹幾個相關的知識點。 MyBatis 架構 mybatis配置 SqlMapConfig.xml,此檔案作為mybatis的全域性配置檔案,配置了mybatis的執行環境

mybatis與Spring三開發方式詳解(二&三)Mapper動態代理開發&Mapper動態代理掃描包形式開發

mybatis與Spring三種開發方式詳解(二)Mapper動態代理開發 之前我們說到傳統的dao層開發,今天我們來談談第二種mybatis與Spring的開發方式,Mapper動態代理開發。 首先這裡上一波@test測試程式碼,大家先看一下mybat

MyBatis中主鍵回填的實現方式

tis 容易 配置 resultset upd object values 兩種 什麽 主鍵回填其實是一個非常常見的需求,特別是在數據添加的過程中,我們經常需要添加完數據之後,需要獲取剛剛添加的數據 id,無論是 Jdbc 還是各種各樣的數據庫框架都對此提供了相關的支持,本

C++ 類的定義方式

命名 c++ ech += esp set with aced spa 類內定義 class Teacher { private: string _name; int _age; public: Teacher() { printf("create teche

屬性的定義方式

alt obj tro tran padding pad hit object 方式 裝飾器方式:[email protected]/* */ 經典類,[email protected]/* */(如上一步實例) # ###############