mybatis3-javaapi

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).sql

 

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)session

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

int insert(String statement, Object parameter)app

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

 

没有参数 Object parameterui

<T> T selectOne(String statement)spa

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

<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(); } }

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息