首页 > 其他分享 >Mybatis通用DAO设计封装(mybatis)

Mybatis通用DAO设计封装(mybatis)

时间:2023-05-06 16:03:02浏览次数:47  
标签:lang java String DAO param Mybatis statement mybatis return


关键字:Mybatis通用DAO设计封装(mybatis)


说明:
mybatis默认分页机制为逻辑分页,所以要处理成物理分页需要自己写一个拦截器(当然也可以不用这个分页机制,自己直接在SQL文件中实现也是可以的)
RowBounds rowBound = new RowBounds(start, pageSize);
具体封装如下:

package util.dao.impl; 


import java.io.Serializable; 

import java.util.HashMap; 

import java.util.List; 

import java.util.Map; 


import org.apache.commons.lang.StringUtils; 

import org.apache.ibatis.session.ResultHandler; 

import org.apache.ibatis.session.RowBounds; 

import org.mybatis.spring.support.SqlSessionDaoSupport; 


import util.bean.BeanMapUtil; 

import util.dao.IBaseGenericDAO; 

import util.exception.BaseDaoException; 

import util.page.GenericDefaultPage; 

import util.page.IGenericPage; 

import util.reflect.ReflectGeneric; 

/** 

 * 基于Mybatis的基础泛型DAO实现类。 

 * 

 * @author 赵士杰 

 * 

 * @param <T> 业务实体类型 

 * @param <ID> ID类型 ,如:String、Long、Integer 等 

 */ 

public abstract class MybatisBaseGenericDAOImpl<T, ID extends Serializable> 

extends SqlSessionDaoSupport 

implements IBaseGenericDAO<T, ID> { 


 public static final String SQLNAME_SEPARATOR = "."; 


 public static final String SQL_SAVE = "save"; 

 public static final String SQL_UPDATE = "update"; 

 public static final String SQL_GETBYID = "getById"; 

 public static final String SQL_DELETEBYID = "deleteById"; 

 public static final String SQL_DELETEBYIDS = "deleteByIds"; 

 public static final String SQL_FINDPAGEBY = "findPageBy"; 

 public static final String SQL_FINDLISTBY = "findListBy"; 

 public static final String SQL_GETCOUNTBY = "getCountBy"; 


 private static final String SORT_NAME = "SORT"; 


 private static final String DIR_NAME = "DIR"; 

 /** 不能用于SQL中的非法字符(主要用于排序字段名) */ 

 public static final String[] ILLEGAL_CHARS_FOR_SQL = {",", ";", " ", "\"", "%"}; 


 /** 

 * 获取默认SqlMapping命名空间。 

 * 使用泛型参数中业务实体类型的全限定名作为默认的命名空间。 

 * 如果实际应用中需要特殊的命名空间,可由子类重写该方法实现自己的命名空间规则。 

 * @return 返回命名空间字符串 

 */ 

 @SuppressWarnings("unchecked") 

 protected String getDefaultSqlNamespace() { 

 Class<T> clazz = ReflectGeneric.getClassGenricType(this.getClass()); 

 String nameSpace = clazz.getName(); 

 return nameSpace; 

 } 


 /** 

 * 将SqlMapping命名空间与给定的SqlMapping名组合在一起。 

 * @param sqlName SqlMapping名 

 * @return 组合了SqlMapping命名空间后的完整SqlMapping名 

 */ 

 protected String getSqlName(String sqlName) { 

 return sqlNamespace + SQLNAME_SEPARATOR + sqlName; 

 } 


 /** 

 * SqlMapping命名空间 

 */ 

 private String sqlNamespace = getDefaultSqlNamespace(); 


 /** 

 * 获取SqlMapping命名空间 

 * @return SqlMapping命名空间 

 */ 

 public String getSqlNamespace() { 

 return sqlNamespace; 

 } 


 /** 

 * 设置SqlMapping命名空间。 

 * 此方法只用于注入SqlMapping命名空间,以改变默认的SqlMapping命名空间, 

 * 不能滥用此方法随意改变SqlMapping命名空间。 

 * @param sqlNamespace SqlMapping命名空间 

 */ 

 public void setSqlNamespace(String sqlNamespace) { 

 this.sqlNamespace = sqlNamespace; 

 } 


 /** 

 * 生成主键值。 

 * 默认情况下什么也不做; 

 * 如果需要生成主键,需要由子类重写此方法根据需要的方式生成主键值。 

 * @param ob 要持久化的对象 

 */ 

 protected void generateId(T ob) { 


 } 


 /* (non-Javadoc) 

 * @see com.harmony.framework.dao.mybatis.IBaseGenericDAO#save(java.lang.Object) 

 */ 

 public Integer save(T ob) { 

 generateId(ob); 

 return this.getSqlSession().insert( 

 getSqlName(SQL_SAVE), ob); 

 } 


 /* (non-Javadoc) 

 * @see com.harmony.framework.dao.mybatis.IBaseGenericDAO#update(java.lang.Object) 

 */ 

 public Integer update(T ob) { 

 return this.getSqlSession().update( 

 getSqlName(SQL_UPDATE), ob); 

 } 


 /* (non-Javadoc) 

 * @see com.harmony.framework.dao.mybatis.IBaseGenericDAO#getById(java.lang.String) 

 */ 

 @SuppressWarnings("unchecked") 

 public T getById(String id) { 

 return (T) this.getSqlSession().selectOne( 

 getSqlName(SQL_GETBYID), id); 

 } 


 /* (non-Javadoc) 

 * @see com.harmony.framework.dao.mybatis.IBaseGenericDAO#deleteByIds(ID[]) 

 */ 

 public Integer deleteByIds(ID[] ids) { 

 return this.getSqlSession().delete( 

 getSqlName(SQL_DELETEBYIDS), ids); 

 } 


 /* (non-Javadoc) 

 * @see com.harmony.framework.dao.mybatis.IBaseGenericDAO#deleteById(java.io.Serializable) 

 */ 

 public Integer deleteById(ID id){ 

 return this.getSqlSession().delete( 

 getSqlName(SQL_DELETEBYID), id); 

 } 


 /* (non-Javadoc) 

 * @see com.harmony.framework.dao.mybatis.IBaseGenericDAO#findPageBy(java.lang.Object, int, int, java.lang.String, java.lang.String) 

 */ 

 @SuppressWarnings("unchecked") 

 public IGenericPage<T> findPageBy( 

 T param, int pageNo, int pageSize, String sort, String dir) { 


 // 获取满足条件的记录总数,没有记录时返回空页数据 

 int count = getCountBy(param); 

 if (count < 1) { 

 return GenericDefaultPage.emptyPage(); 

 } 


 Map<String, Object> paramMap = null; 

 try{ 

 paramMap = BeanMapUtil.bean2Map(param); 

 }catch(Exception e){ 

 throw new BaseDaoException("获取参数失败", e); 

 } 

 // Where过滤条件 

// paramMap.put("param", param); 

 // 排序条件 

 if (sort != null) { 

 // 排序字段不为空,过滤其中可能存在的非法字符 

 sort = filterIllegalChars(sort, ILLEGAL_CHARS_FOR_SQL); 

 } 

 if (StringUtils.isEmpty(sort) || StringUtils.isEmpty(dir)) { 

// paramMap.put("sort", null); 

// paramMap.put("dir", null); 

 } else { 

 paramMap.put(SORT_NAME, sort); 

 paramMap.put(DIR_NAME, dir); 

 } 

 // 分页条件 

 int start = GenericDefaultPage.getStartOfPage( 

 pageNo, pageSize) - 1; 

 RowBounds rowBound = new RowBounds(start, pageSize); 


 List<T> lst = this.getSqlSession().selectList( 

 getSqlName(SQL_FINDPAGEBY), 

 paramMap, rowBound); 


 return new GenericDefaultPage<T>(pageNo, pageSize, lst, count); 

 } 


 /* (non-Javadoc) 

 * @see com.harmony.framework.dao.mybatis.IBaseGenericDAO#getCountBy(java.lang.Object) 

 */ 

 public Integer getCountBy(T param) { 

 Map<String, Object> paramMap = null; 

 try{ 

 paramMap = BeanMapUtil.bean2Map(param); 

 }catch(Exception e){ 

 throw new BaseDaoException("获取参数失败", e); 

 } 

// paramMap.put("param", param); 

 return (Integer)this.getSqlSession().selectOne( 

 getSqlName(SQL_GETCOUNTBY), paramMap); 

 } 


 /* (non-Javadoc) 

 * @see com.harmony.framework.dao.mybatis.IBaseGenericDAO#findListBy(java.lang.Object, java.lang.String, java.lang.String) 

 */ 

 @SuppressWarnings("unchecked") 

 public List<T> findListBy(T param, String sort, String dir) { 

 Map<String, Object> paramMap = null; 

 try{ 

 paramMap = BeanMapUtil.bean2Map(param); 

 }catch(Exception e){ 

 throw new BaseDaoException("获取参数失败", e); 

 } 

 // Where过滤条件 

// paramMap.put("param", param); 

 // 排序条件 

 if (sort != null) { 

 // 排序字段不为空,过滤其中可能存在的非法字符 

 sort = filterIllegalChars(sort, ILLEGAL_CHARS_FOR_SQL); 

 } 

 if (StringUtils.isEmpty(sort) || StringUtils.isEmpty(dir)) { 

// paramMap.put("sort", null); 

// paramMap.put("dir", null); 

 } else { 

 paramMap.put(SORT_NAME, sort); 

 paramMap.put(DIR_NAME, dir); 

 } 

 List<T> lst = this.getSqlSession().selectList( 

 getSqlName(SQL_FINDLISTBY), paramMap); 

 return lst; 

 } 


 public List<T> findListBy(T param){ 

 return findListBy(param, null, null); 

 } 

 /** 

 * 从给定字符串中将指定的非法字符串数组中各字符串过滤掉。 

 * @param str 待过滤的字符串 

 * @param filterChars 指定的非法字符串数组 

 * @return 过滤后的字符串 

 */ 

 protected String filterIllegalChars(String str, String[] filterChars) { 

 String rs = str; 

 if (rs != null && filterChars != null) { 

 for (String fc : filterChars) { 

 if (fc != null && fc.length() > 0) { 

 str = str.replaceAll(fc, ""); 

 } 

 } 

 } 

 return rs; 

 } 


 /** 

 * 对{@link org.apache.ibatis.session.SqlSession#insert(java.lang.String, java.lang.Object)}的代理。 

 * 将statement包装了命名空间,方便DAO子类调用。 

 * @param statement 映射的语句ID 

 * @param parameter 参数 

 * @return 执行结果——插入成功的记录数 

 * @see org.apache.ibatis.session.SqlSession#insert(java.lang.String, java.lang.Object) 

 */ 

 protected int insert(String statement, Object parameter) { 

 return this.getSqlSession().insert( 

 getSqlName(statement), parameter); 

 } 


 /** 

 * 对{@link org.apache.ibatis.session.SqlSession#insert(java.lang.String)}的代理。 

 * 将statement包装了命名空间,方便DAO子类调用。 

 * @param statement 映射的语句ID 

 * @return 执行结果——插入成功的记录数 

 * @see org.apache.ibatis.session.SqlSession#insert(java.lang.String) 

 */ 

 protected int insert(String statement) { 

 return this.getSqlSession().insert( 

 getSqlName(statement)); 

 } 


 /** 

 * 对{@link org.apache.ibatis.session.SqlSession#update(java.lang.String, java.lang.Object)}的代理。 

 * 将statement包装了命名空间,方便DAO子类调用。 

 * @param statement 映射的语句ID 

 * @param parameter 参数 

 * @return 执行结果——更新成功的记录数 

 * @see org.apache.ibatis.session.SqlSession#update(java.lang.String, java.lang.Object) 

 */ 

 protected int update(String statement, Object parameter) { 

 return this.getSqlSession().update( 

 getSqlName(statement), parameter); 

 } 


 /** 

 * 对{@link org.apache.ibatis.session.SqlSession#update(java.lang.String)}的代理。 

 * 将statement包装了命名空间,方便DAO子类调用。 

 * @param statement 映射的语句ID 

 * @param parameter 参数 

 * @return 执行结果——更新成功的记录数 

 * @see org.apache.ibatis.session.SqlSession#update(java.lang.String) 

 */ 

 protected int update(String statement) { 

 return this.getSqlSession().update( 

 getSqlName(statement)); 

 } 


 /** 

 * 对{@link org.apache.ibatis.session.SqlSession#delete(java.lang.String, java.lang.Object)}的代理。 

 * 将statement包装了命名空间,方便DAO子类调用。 

 * @param statement 映射的语句ID 

 * @param parameter 参数 

 * @return 执行结果——删除成功的记录数 

 * @see org.apache.ibatis.session.SqlSession#delete(java.lang.String, java.lang.Object) 

 */ 

 protected int delete(String statement, Object parameter) { 

 return this.getSqlSession().delete( 

 getSqlName(statement), parameter); 

 } 


 /** 

 * 对{@link org.apache.ibatis.session.SqlSession#delete(java.lang.String)}的代理。 

 * 将statement包装了命名空间,方便DAO子类调用。 

 * @param statement 映射的语句ID 

 * @return 执行结果——删除成功的记录数 

 * @see org.apache.ibatis.session.SqlSession#delete(java.lang.String) 

 */ 

 protected int delete(String statement) { 

 return this.getSqlSession().delete( 

 getSqlName(statement)); 

 } 


 /** 

 * 对{@link org.apache.ibatis.session.SqlSession#selectList(java.lang.String, java.lang.Object, org.apache.ibatis.session.RowBounds)}的代理。 

 * 将statement包装了命名空间,方便DAO子类调用。 

 * @param statement 映射的语句ID 

 * @param parameter 参数 

 * @param rowBounds 用于分页查询的记录范围 

 * @return 查询结果列表 

 * @see org.apache.ibatis.session.SqlSession#selectList(java.lang.String, java.lang.Object, org.apache.ibatis.session.RowBounds) 

 */ 

 protected List selectList( 

 String statement, Object parameter, RowBounds rowBounds) { 

 return this.getSqlSession().selectList( 

 getSqlName(statement), parameter, rowBounds); 

 } 


 /** 

 * 对{@link org.apache.ibatis.session.SqlSession#selectList(java.lang.String, java.lang.Object)}的代理。 

 * 将statement包装了命名空间,方便DAO子类调用。 

 * @param statement 映射的语句ID 

 * @param parameter 参数 

 * @return 查询结果列表 

 * @see org.apache.ibatis.session.SqlSession#selectList(java.lang.String, java.lang.Object) 

 */ 

 protected List selectList(String statement, Object parameter) { 

 return this.getSqlSession().selectList( 

 getSqlName(statement), parameter); 

 } 


 /** 

 * 对{@link org.apache.ibatis.session.SqlSession#selectList(java.lang.String)}的代理。 

 * 将statement包装了命名空间,方便DAO子类调用。 

 * @param statement 映射的语句ID 

 * @return 查询结果列表 

 * @see org.apache.ibatis.session.SqlSession#selectList(java.lang.String) 

 */ 

 protected List selectList(String statement) { 

 return this.getSqlSession().selectList( 

 getSqlName(statement)); 

 } 


 /** 

 * 对{@link org.apache.ibatis.session.SqlSession#selectOne(java.lang.String, java.lang.Object)}的代理。 

 * 将statement包装了命名空间,方便DAO子类调用。 

 * @param statement 映射的语句ID 

 * @param parameter 参数 

 * @return 查询结果对象 

 * @see org.apache.ibatis.session.SqlSession#selectOne(java.lang.String, java.lang.Object) 

 */ 

 protected Object selectOne(String statement, Object parameter) { 

 return this.getSqlSession().selectOne( 

 getSqlName(statement), parameter); 

 } 


 /** 

 * 对{@link org.apache.ibatis.session.SqlSession#selectOne(java.lang.String)}的代理。 

 * 将statement包装了命名空间,方便DAO子类调用。 

 * @param statement 映射的语句ID 

 * @return 查询结果对象 

 * @see org.apache.ibatis.session.SqlSession#selectOne(java.lang.String) 

 */ 

 protected Object selectOne(String statement) { 

 return this.getSqlSession().selectOne( 

 getSqlName(statement)); 

 } 


 /** 

 * 对{@link org.apache.ibatis.session.SqlSession#selectMap(java.lang.String, java.lang.Object, java.lang.String, org.apache.ibatis.session.RowBounds)}的代理。 

 * 将statement包装了命名空间,方便DAO子类调用。 

 * @param statement 映射的语句ID 

 * @param parameter 参数 

 * @param mapKey 数据mapKey 

 * @param rowBounds 用于分页查询的记录范围 

 * @return 查询结果Map 

 * @see org.apache.ibatis.session.SqlSession#selectMap(java.lang.String, java.lang.Object, java.lang.String, org.apache.ibatis.session.RowBounds) 

 */ 

 protected Map selectMap( 

 String statement, Object parameter, String mapKey, 

 RowBounds rowBounds) { 

 return this.getSqlSession().selectMap( 

 getSqlName(statement), 

 parameter, mapKey, rowBounds); 

 } 


 /** 

 * 对{@link org.apache.ibatis.session.SqlSession#selectMap(java.lang.String, java.lang.Object, java.lang.String)}的代理。 

 * 将statement包装了命名空间,方便DAO子类调用。 

 * @param statement 映射的语句ID 

 * @param parameter 参数 

 * @param mapKey 数据mapKey 

 * @return 查询结果Map 

 * @see org.apache.ibatis.session.SqlSession#selectMap(java.lang.String, java.lang.Object, java.lang.String) 

 */ 

 protected Map selectMap( 

 String statement, Object parameter, String mapKey) { 

 return this.getSqlSession().selectMap( 

 getSqlName(statement), parameter, mapKey); 

 } 


 /** 

 * 对{@link org.apache.ibatis.session.SqlSession#selectMap(java.lang.String, java.lang.String)}的代理。 

 * 将statement包装了命名空间,方便DAO子类调用。 

 * @param statement 映射的语句ID 

 * @param mapKey 数据mapKey 

 * @return 查询结果Map 

 * @see org.apache.ibatis.session.SqlSession#selectMap(java.lang.String, java.lang.String) 

 */ 

 protected Map selectMap(String statement, String mapKey) { 

 return this.getSqlSession().selectMap( 

 getSqlName(statement), mapKey); 

 } 


 /** 

 * 对{@link org.apache.ibatis.session.SqlSession#select(java.lang.String, java.lang.Object, org.apache.ibatis.session.RowBounds, org.apache.ibatis.session.ResultHandler)}的代理。 

 * 将statement包装了命名空间,方便DAO子类调用。 

 * @param statement 映射的语句ID 

 * @param parameter 参数 

 * @param rowBounds 用于分页查询的记录范围 

 * @param handler 结果集处理器 

 * @see org.apache.ibatis.session.SqlSession#select(java.lang.String, java.lang.Object, org.apache.ibatis.session.RowBounds, org.apache.ibatis.session.ResultHandler) 

 */ 

 protected void select( 

 String statement, Object parameter, RowBounds rowBounds, 

 ResultHandler handler) { 

 this.getSqlSession().select( 

 getSqlName(statement), 

 parameter, rowBounds, handler); 

 } 


 /** 

 * 对{@link org.apache.ibatis.session.SqlSession#select(java.lang.String, java.lang.Object, org.apache.ibatis.session.ResultHandler)}的代理。 

 * 将statement包装了命名空间,方便DAO子类调用。 

 * @param statement 映射的语句ID 

 * @param parameter 参数 

 * @param handler 结果集处理器 

 * @see org.apache.ibatis.session.SqlSession#select(java.lang.String, java.lang.Object, org.apache.ibatis.session.ResultHandler) 

 */ 

 protected void select( 

 String statement, Object parameter, ResultHandler handler) { 

 this.getSqlSession().select( 

 getSqlName(statement), parameter, handler); 

 } 


 /** 

 * 对{@link org.apache.ibatis.session.SqlSession#select(java.lang.String, org.apache.ibatis.session.ResultHandler)}的代理。 

 * 将statement包装了命名空间,方便DAO子类调用。 

 * @param statement 映射的语句ID 

 * @param handler 结果集处理器 

 * @see org.apache.ibatis.session.SqlSession#select(java.lang.String, org.apache.ibatis.session.ResultHandler) 

 */ 

 protected void select(String statement, ResultHandler handler) { 

 this.getSqlSession().select( 

 getSqlName(statement), handler); 

 } 


// protected Integer update(String sqlName, Object param){ 

// return this.getSqlSession().update(sqlNamespace+"."+sqlName, param); 

// } 

// protected Integer save(String sqlName, Object param){ 

// return this.getSqlSession().insert(sqlNamespace+"."+sqlName, param); 

// } 

// protected Integer delete(String sqlName, Object param){ 

// return this.getSqlSession().delete(sqlNamespace+"."+sqlName, param); 

// } 

// protected Integer delete(String sqlName, Object[] param){ 

// return this.getSqlSession().delete(sqlNamespace+"."+sqlName, param); 

// } 

// protected List<Object> getMap(String sqlName, Object param){ 

// Map paramMap = new HashMap(); 

// paramMap.put("param", param); 

// return this.getSqlSession().selectList(sqlNamespace+"."+sqlName, paramMap); 

// } 

// protected List<Object> getMap(String sqlName, Map param){ 

// return this.getSqlSession().selectList(sqlNamespace+"."+sqlName, param); 

// } 

// protected List findPageBy(String sqlName, Object param,int pageNo, int pageSize,String sort,String dir){ 

// Map paramMap = new HashMap(); 

// paramMap.put("param", param); 

// if (StringUtils.isEmpty(sort) || StringUtils.isEmpty(dir)) 

// { 

// paramMap.put("sort", null); 

// paramMap.put("dir", null); 

// } 

// int start =0; 

// if (pageNo > -1) 

// start = (pageNo - 1) * pageSize; 

// RowBounds rowBound = new RowBounds(start,pageSize); 

// List lst = this.getSqlSession().selectList(sqlNamespace+"."+sqlName, paramMap,rowBound); 

// return lst; 

// } 

// 

// protected Integer getCountBy(String sqlName, Object param){ 

// Map paramMap = new HashMap(); 

// paramMap.put("param", param); 

// return (Integer)this.getSqlSession().selectOne(sqlNamespace+"."+sqlName, paramMap); 

// } 

// protected Object getBy(String sqlName, String id){ 

// return this.getSqlSession().selectOne(sqlNamespace+"."+sqlName, id); 

// } 

// protected List getListBy(String sqlName,String id) { 

// return this.getSqlSession().selectList(sqlNamespace+"."+sqlName, id); 

// } 

// protected List findListBy(String sqlName,Object[] params) { 

// return this.getSqlSession().selectList(sqlNamespace+"."+sqlName, params); 

// } 

// protected Object getBy(String sqlName,Object param) { 

// return this.getSqlSession().selectOne(sqlNamespace+"."+sqlName, param); 

// } 

// protected List findByParam(String sqlName,Object param) { 

// return this.getSqlSession().selectList(sqlNamespace+"."+sqlName, param); 

// } 

}

标签:lang,java,String,DAO,param,Mybatis,statement,mybatis,return
From: https://blog.51cto.com/u_7450530/6250455

相关文章

  • mybatis优化
    关键字:mybatis优化1、每个bean都要有对应的get/set方法(因为找不到get方法的话mybatis会按照复杂对象处理)2、使用mybatis.config.xml进行调优,参考如下:<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEconfigurationPUBLIC"-//mybatis..org//DT......
  • spring cloud gradle mybatis
    一、引入依赖在build.gradle文件中的dependencies的对象中引入依赖implementation'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.4'二、配置数据库及mybatis在application.yml文件中配置数据库spring:datasource:url:jdbc:mysql://192.168.0.1:3306/dbName......
  • mybatis-plus-generator生成代码
    mybatis-plus-generator生成代码依赖包 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.0.6</version></dependenc......
  • iBatis与MyBatis区别
     iBatis框架的主要优势:1、iBatis封装了绝大多数的JDBC样板代码,使得开发者只需关注SQL本身,而不需要花费精力去处理例如注册驱动,创建Connection,以及确保关闭Connection这样繁杂的代码。2、从iBatis到MyBatis,不只是名称上的变化,MyBatis提供了更为强大的功能,同时并没有损......
  • 自定义mybatis插件之全局数据过滤
    目录一、介绍二、实现三、效果四、源码一、介绍通过开发mybatis的插件来实现对全局的sql查询语句进行拦截,并新增全局的过滤条件做到无感知的数据过滤,比如全局过滤某个租户的数据。二、实现实现思路1、通过mybatis的拦截器拦截所有查询的sql2、使用Druid里面的工具类解析sq......
  • MyBatis 配置详解
    目录mybatis-config.xml核心配置文件1.environments元素1.1子元素environment1.2transactionManager事务管理器(共两种)2.mappers元素(定义映射SQL语句文件)3.properties4.typeAliases(定义别名)其他配置【设置】mybatis-config.xml核心配置文件mybatis-config.xml包含的......
  • Spring整合Mybatis
    1、Spring整合Mybatis思路分析1.1、环境准备在准备环境的过程中,我们也来回顾下Mybatis开发的相关内容:步骤1:准备数据库表Mybatis是来操作数据库表,所以先创建一个数据库及表createdatabasespring_dbcharactersetutf8;usespring_db;createtabletbl_account(id......
  • mybatis批量插入支持默认值和自定义id生成策略的免写sql插件
    最近做项目时用了免写sql的插件但是发现批量操作不满足现有需求。所以,在原有基础之上扩展了批量的操作支持[支持插入默认值和自定义id生成策略]。使用方法如下:一:在pom文件中引入jar配置<dependency><groupId>io.gitee.wang_ming_yi</groupId><artifactId>easy_mapper</......
  • Mybatis映射
        转译小于号字符:<       CDATA区:大写CD       多条件动态sql查询   单条件动态sql查询 添加:   修改  删除功能: 批量删除  参数传递:......
  • Mybatis中的动态 SQL
    一、MyBatis动态sql是什么?1.动态SQL是MyBatis的强大特性之一。在JDBC或其它类似的框架中,开发人员通常需要手动拼接SQL语句。根据不同的条件拼接SQL语句是一件极其痛苦的工作。例如,拼接时要确保添加了必要的空格,还要注意去掉列表最后一个列名的逗号。而动态SQL恰好......