文档章节

mybatis3-javaapi

writeademo
 writeademo
发布于 07/16 14:46
字数 440
阅读 9
收藏 0

sqlSessionFactoryBuilder->sqlSessionFactory->sqlSession<-rowbound<-resultHandler

 

myBatis uses a Java enumeration wrapper for transaction isolation levels, called TransactionIsolationLevel, but otherwise they work as expected and have the 5 levels supported by JDBC (NONE, READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE).

 

sqlSession是mybatis使用最有用的实例

Statement Execution Methods(select insert update delete method)

 

<T> T selectOne(String statement, Object parameter)

<E> List<E> selectList(String statement, Object parameter)

<K,V> Map<K,V> selectMap(String statement, Object parameter, String mapKey)

int insert(String statement, Object parameter)

int update(String statement, Object parameter) int delete(String statement, Object parameter)

 

没有参数 Object parameter

<T> T selectOne(String statement)

<E> List<E> selectList(String statement)

<K,V> Map<K,V> selectMap(String statement, String mapKey)

int insert(String statement) int update(String statement)

int delete(String statement)

 

操作大的数据集for large dataset

<E> List<E> selectList (String statement, Object parameter, RowBounds rowBounds)

<K,V> Map<K,V> selectMap(String statement, Object parameter, String mapKey, RowBounds rowbounds)

void select (String statement, Object parameter, ResultHandler<T> handler)

void select (String statement, Object parameter, RowBounds rowBounds, ResultHandler<T> handler)

 

Batch update statement Flush Method

List<BatchResult> flushStatements()

 

Transaction control methods

void commit() void commit(boolean force)

void rollback() void rollback(boolean force)

 

 

LocalCache--second level cache

新的session创建的时候创建一个本地缓存,并绑定,使用这个seesion的相同参数查询不会去数据库中查,本地缓存将会清空遇到update ,commit,rollback,close

记得关闭sqlSession

 

try (SqlSession session = sqlSessionFactory.openSession()) { // following 3 lines pseudocode for "doing some work" session.insert(...); session.update(...); session.delete(...); session.commit(); }

 

 

使用selectProvider

@SelectProvider(type = UserSqlBuilder.class, method = "buildGetUsersByName")

List<User> getUsersByName(String name);

class UserSqlBuilder { public static String buildGetUsersByName(final String name) { return new SQL(){{ SELECT("*"); FROM("users"); if (name != null) { WHERE("name like #{value} || '%'"); } ORDER_BY("id"); }}.toString(); } }

 

@SelectProvider(type = UserSqlBuilder.class, method = "buildGetUsersByName")

List<User> getUsersByName( @Param("name") String name, @Param("orderByColumn") String orderByColumn);

class UserSqlBuilder { // If not use @Param, you should be define same arguments with mapper method

public static String buildGetUsersByName( final String name, final String orderByColumn) { return new SQL(){{ SELECT("*"); FROM("users"); WHERE("name like #{name} || '%'"); ORDER_BY(orderByColumn); }}.toString(); } // If use @Param, you can define only arguments to be used public static String buildGetUsersByName(@Param("orderByColumn") final String orderByColumn) { return new SQL(){{ SELECT("*"); FROM("users"); WHERE("name like #{name} || '%'"); ORDER_BY(orderByColumn); }}.toString(); } }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

© 著作权归作者所有

共有 人打赏支持
writeademo
粉丝 25
博文 559
码字总数 205127
作品 0
东城
私信 提问
MyBatis3错误:Parameter 'id' not found. Available parameters are [arg2, arg1, arg0, param3, param1, param2]或者Parameter '0' not found. Available parameter

这个问题涉及到MyBatis3在使用select节点查询时传递多个参数的问题。问题分析如下: 1、如果是单个查询一般是这样配置: public List getUserArticles(int id); 2、如果使用了多个参数之后,...

easonjim
2017/06/20
0
0
解决 Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required

在Spring3和Mybatis3整合的时候,dao层注入'sqlSessionFactory'或'sqlSessionTemplate'会报错解决办法如下 package com.alibaba.webx.MyWebxTest.myWebX.module.dao.impl; import org.apach......

木叶之荣
2016/03/22
0
0
C 调用java接口参数传递

C通过jni调用java,java中接口参数为byte[] ,C中数据为char *,如何将char *数据传递到java的byte[]中 ?? 如: .java int javaapi(byte[] data, int datalen) .c int datatojava(char *da...

fcsong000833
2013/10/25
1K
2
SSM框架之MyBatis3专题5:MyBatis注解式开发

1 注解的基本知识 以下注解知识的讲解,均使用@Override、@Deprecated(过时)、@SuppressWarnings举例。 1.1 注解的基本语法 注解后是没有分号的; 注解首字母是大写的,因为注解与类、接口...

糖醋白糖
06/26
0
0
Mybatis3+Spring4+SpringMVC4 整合

首先在整合这个框架的时候,想想其一般的步骤是怎样的,先有个步骤之后,不至于在后面的搞混了,这样在整合的时候也比较清晰些。 然后我们就细细的一步一步来整合。 1 创建一个Web项目。 2 ...

陈嘻嘻哈哈
2016/03/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

对接比特币钱包的PHP开发包

BtcTool是一个基于第三方服务和离线裸交易实现的PHP比特币应用开发包,适合不希望部署本地 节点旳PHP开发者,开发包主要包含以下特性: 利用第三方服务获取指定地址的utxo集合 离线生成消费裸...

汇智网教程
8分钟前
0
0
【自用】 VHD to VHDX

VHDX: 在VHD 2TB 的基础上提供 64TB的容量。 支持逻辑扇区大小为 4KB,和每块的大小为 256MB,来优化虚拟磁盘性能。 比VHD提供更高的安全性、可靠性和性能。 convert-VHD –path d:\Hyper-v...

Tensor丨思悟
21分钟前
0
0
30 岁转行做Python开发晚吗?而且是零基础

最近有小伙伴问小编,30 岁转行做Python开发晚吗? 小编想说,其实无论男女,只要想学,有这个动力,就直接去行动。无论年龄,无论性别,只要你想一直勇往直前,那么想做的就去做吧~这里有一...

糖宝lsh
31分钟前
7
0
详解Spring中的Profile

前言 由于在项目中使用Maven打包部署的时候,经常由于配置参数过多(比如Nginx服务器的信息、ZooKeeper的信息、数据库连接、Redis服务器地址等),导致实际现网的配置参数与测试服务器参数混淆...

watermelon11
46分钟前
4
0
phper必知必会(二)

  1.说说你对进程,线程以及协程的理解      进程:是系统进行资源分配和调度的基本单位,是基本操作系统结构的基础。进程是程序基本执行的实体。进程与进程之间是独立的,拥有完全独立...

SEOwhywhy
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部