Mapper三種形式、工具類以及簡單的增刪改查
Mapper三種形式
第一種 : sqlSession執行對應語句,就是我上篇文章測試的那種,所以下面就從第二種開始註解.
第二種 : 使用註解(基本不用)
第三種 : 利用介面代理(常用)
第二種 : 使用註解(基本不用)
1 註解方式不需要User.xml
2 需要再對應的介面上新增對應的註解語句
3 mybatis-config.xml中新增對映配置
呼叫
第三種 : 利用介面代理(常用)
1 需要User.xml
2 介面中不需要新增對應的註解
3 mybatis-config.xml中新增對映配置
User.xml
Namespace的值要和介面全名一致
Id的值要和介面中的方法名一致
呼叫
工具類
以上程式碼中,紅框部分我們每次都需要重複編寫,mybatis-config.xml在整個生命週期只需要載入一次就行
而SqlSessionFactory也只需要建立一個
所以 我們把這些封裝成方法
public class MyBatisUtil {
private MyBatisUtil() {
}
private static SqlSessionFactory sessionFactory = null;
static {
String resource = "mybatis-config.xml";
// 讀取總配置檔案
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
// 獲取session工廠
sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (inputStream != null) {
inputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static SqlSession getSession() {
return sessionFactory.openSession();
}
public static void closeSession(SqlSession session) {
if (session != null) {
session.close();
}
}
}
引入工具類之後 呼叫處就輕鬆了
@Test
public void testAddUser() {
SqlSession session = MyBatisUtil.getSession();
User user = new User();
user.setUsername(“test”);
user.setPassword(“test”);
user.setNickname(“平民”);
user.setType(0);
session.getMapper(IUserDao.class).add(user);
session.commit();
MyBatisUtil.closeSession(session);
}
總結 :
使用工具類,能夠降低我們dao的程式碼量,
並且也能更好的優化程式碼,比如關閉資源,和建立資源(能夠保證某些資源在生命週期中只會被建立一次)
工具類,使用方便,複用價值高
基礎的增刪改查
User.xml
insert into t_user
(username,password,nickname,type) values
(#{username},#{password},#{nickname},#{type})
delete from t_user where id =
#{id}
update t_user set password =
#{password} , nickname=#{nickname} ,type=#{type} where id = #{id}
select * from
t_user where id = #{id}
<!–
SQL語句中,不能出現 < > 用< > >=
resultType : 返回值型別,並且能夠自動注入,前提是 資料庫查詢的列 必須和成員變數一致,如果不一致 可以使用別名的方式一致,或者手動對映
resultMap : 返回值型別,但是資料需要手動注入,一般查詢列和成員變數不一致時 使用resultMap手動對映,尤其是多表查詢
parameterType : 引數型別
parameterMap : 和resultMap類似
-->
UserDao實現類
新增
@Override
public void add(User user) {
SqlSession session = null;
try {
session = MyBatisUtil.getSession();
session.insert(“User.add”, user);
session.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
MyBatisUtil.closeSession(session);
}
}
刪除
@Override
public void delete(int id) {
SqlSession session = null;
try {
session = MyBatisUtil.getSession();
session.delete("User.delete", id);
session.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
MyBatisUtil.closeSession(session);
}
}
更新
@Override
public void update(User user) {
SqlSession session = null;
try {
session = MyBatisUtil.getSession();
session.update("User.update", user);
session.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
MyBatisUtil.closeSession(session);
}
}
查詢
@Override
public User load(int id) {
SqlSession session = null;
User user = null;
try {
session = MyBatisUtil.getSession();
user = session.selectOne("User.load", id);
session.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
MyBatisUtil.closeSession(session);
}
return user;
}
相關文章
- CoreData - 簡單 增刪改查
- 使用Mongoose類庫實現簡單的增刪改查Go
- Golang中map的三種宣告方式和簡單實現增刪改查Golang
- layui+ssm簡單增刪改查UISSM
- Java實現簡單的增刪改查操作Java
- Django基於類的增刪改查,簡單邏輯都不用寫Django
- 單表增刪改查
- Mybatis-plus實現簡單增刪改查MyBatis
- 寫一個簡單的Linkedlist,實現增刪改查
- 利用Express+MySQL進行簡單的增刪改查ExpressMySql
- 最簡單的sql語句(增刪改查統計)SQL
- 使用Django開發簡單介面:文章增刪改查Django
- 增刪改查
- [.NET學習]EFCore學習之旅 -2 簡單的增刪改查
- 列表的增刪改查
- 字典的增刪改查
- layui的增刪改查UI
- mybatis的增刪改查MyBatis
- redist的增刪改查Redis
- JavaScript中陣列的增刪改查以及應用方式JavaScript陣列
- SQL增刪改查SQL
- Mongoose查增改刪Go
- indexedDB 增刪改查Index
- mysql增刪改查MySql
- 單連結串列實現增刪改查
- Node+Express+MySql實現簡單增刪改查和登入ExpressMySql
- 資料庫的簡介和MySQL增刪改查資料庫MySql
- SQLAlchemy - 模組檔案以及增刪改查(CURD操作)SQL
- 如何使用 Node.js 和 MySQL 快速搭建簡單的增刪查改 APINode.jsMySqlAPI
- mongodb 基本增刪改查MongoDB
- MongoDB增刪改查操作MongoDB
- EFCore之增刪改查
- sql指令,增,刪,查,改SQL
- mysql基本增刪改查MySql
- springboot整合mybatis增刪改查(三):mybatis逆向工程Spring BootMyBatis
- 02-CoreData 的增刪改查
- cobra.Command的增刪改查
- [增刪改查] 最簡單的 JPA 一對多/多對一 CRUD 設計