整合mybatis
基础配置
-
启动类添加@MapperScan
-
配置文件
#=================================数据库相关配置==================================== spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://10.1.1.1:3306/db?useUnicode=true&characterEncoding=utf-8&userSSL=false spring.datasource.username=root spring.datasource.password=xxxxxx #如果不使用默认的数据源 (com.zaxxer.hikari.HikariDataSource) spring.datasource.type =com.alibaba.druid.pool.DruidDataSource # mybatis 下划线转驼峰配置,两者都可以 #mybatis.configuration.mapUnderscoreToCamelCase=true mybatis.configuration.map-underscore-to-camel-case=true #打印sql,方便调试 mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
configuration
mappers
<mappers>
<mapper resource="mapper/VideoMapper.xml"/>
</mappers>
typeAliases
<typeAliases>
<typeAlias type="com.xdclass.xdmybatis.domain.Video" alias="Video"></typeAlias>
<package name="com.xdclass.xdmybatis.domain"/>
<<可以将包里的所以类自动取别名>>
</typeAliases>
environments
<!--引入properties文件-->
<properties resource="db.properties"/>
<!--环境的配置-->
<environments default="development">
<environment id="development">
<!-- 配置事务-->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源-->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
setting
属性名 | 含义 | 简介 | 有效值 | 默认值 |
---|---|---|---|---|
cacheEnabled | 是否使用缓存 | 是整个工程中所有映射器配置缓存的开关,即是一个全局缓存开关 | ture|false | ture |
lazyLoadingEnabled | 是否开启延迟加载 | 控制全局是否使用延迟加载。当有特殊关联关系需要单独配置时,可以使用fetchType属性来覆盖此配置 | ture|false | false |
aggressiveLazyLoading | 是否按需加载属性 | 开启时,不论调用什么方法加载某个对象,都会加载该对象的所有属性,关闭后只会按需加载 | ture|false | false |
multipleResultSetsEnabled | 是否允许单一语句返回多结果集 | 即mapper配置中一个单一的sql配置是否能够返回多个结果集 | ture|false | true |
useColumnLabel | 使用列标签代替列名 | 设置是否使用列标签代替列名 | ture|false | true |
useGenerateKeys | 是否支持JDBC自动生成主键 | 设置之后将会强制使用自动生成主键的策略 | ture|false | false |
autoMappingBehavior | 指定MyBatis自动映射字段或属性的方式 | 有三种方式,NONE时将自动映射;PARTIAL时只会自动映射没有定义结果集的结果映射;FULL时会映射任意复杂的结果集 | NONE;PARTIAL;FULL | PARTIAL |
autoMappingUnknownColumnBehavior | 设置当自动映射时发现未知列的动作 | 有三种动作,NONE时不做任何操作;WARNING时会输出提醒日志;FAILING时会抛出SqlSessionException异常表示映射失败 | NONE,WARNING,FAILING | NONE |
defaultExectorType | 设置默认的执行器 | 有三种执行器,SIMPLE为普通执行器;REUSE执行器会重用处理语句;BATCH执行器将重用语句并执行批量更新 | SIMPLE,REUSE,BATCH | SIMPLE |
defaultStatementTimeout | 设置超时时间 | 该超时时间即数据库驱动连接数据库时,等待数据库回应的最大秒数 | 任意正整数 | 无 |
defaultFetchSize | 设置驱动的结果集 | 为了防止从数据库查询出来的结果过多,而导致内存溢出,可以通过设置fetchSize参数来控制结果集的数量 | 任意正整数 | 无 |
safeRowBoundsEnabled | 允许在嵌套语句中使用分页 | 如果允许在sql的行内嵌套语句中使用分页,就设置该值为false | true|false | false |
safeResultHandlerEnabled | 允许在嵌套语句中使用分页,ResultHanlder,即结果集处理 | 如果允许对sql的结果集使用分页,就设置该值为false | true|false | true |
mapUnderscoreToCamelCase | 是否开启驼峰命名规则映射 | 数据库中的字段名称和Java实体类映射 | true|false | false |
localCacheScope | MyBatis利用本地缓存机制防止循环引用和加速重复嵌套查询 | 默认值Session,这种情况下会缓存一个会话中执行的所有查询。若设置为STATEMENT,本地会话仅用在语句执行上,对相同SqlSession的不同调用将不会共享数据 | SESSION|STATEMENT | SESSION |
jdbcTypeForNull | JDBC类型的默认设置 | 当没有为参数提供特定的jdbc类型时,为空值指定jdbc类型。某些驱动需要指定列的JDBC类型,多数情况直接用一般类型即可,比如NULL、VARCHAR或者OTHER | 常用NULL、VARCHAR、OTHER | OTHER |
lazyLoadTriggerMethods | 指定哪个对象的方法触发一次延迟加载 | 配置需要出发延迟加载的方法的名字,该方法就会出发一次延迟加载 | 一个逗号分隔的方法名称列表 | equals,clone,hasCode,toString |
defaultScriptingLanguage | 动态sql默认语言 | 指定动态sql生成的默认语言 | 一个类型别名或者一个类的全路径 | org.apache.ibatis.scripting.xmltags.XMLLanguageDriver |
callSettersOnNulls | 是否为空值情况下调用Set方法 | 指定当结果集中值为null时是否调用映射对象setter(map对象为put)方法,这对于有Map.keySet()依赖或null值初始化时是有用的。注意基本类型不能设置为null | true|false | false |
returnInstanceForEmptyRow | 返回空实体集对象 | 当返回行的所有列都是空时,MyBatis默认返回null。当开启这个设置时,MyBatis会返回一个空实列。同时,从MyBatis3.4.2开始,它也适用于嵌套的结果集 | true|false | false |
logPrefix | 日志前缀 | 指定MyBatis增加日志名称的前缀 | 任意字符串 | 无 |
logImpl | 日志实现 | 指定MyBatis所用的日志的具体实现,未指定将自动查找 | SLF4J|LOG4J|LOG4J2|JDK_LOGGING|COMMONS_LOGGING|STDOUT_LOGGING|NO_LOGGING | 无 |
proxyFactory | 代理工厂 | 指定MyBatis创建具有延迟加载能力的对象用到的代理工具 | CGLIB|JAVASSIST | JAVASSIST |
vfsImpl | vfs实现 | 指定vfs的实现 | 自定义VFS的实现的类全限定名,已逗号分隔 | 无 |
useActualParamName | 适用方法签名 | 允许适用方法签名中的名称作为语句参数名称。要适用该特性,工程必须采用java8编译,并且加上-parameters选项(从3.4.1开始) | true|false | false |
configurationFactory | 配置工厂 | 指定提供配置实列的类。返回的配置实列用于加载反序列化的懒加载参数。这个类必须有一个签名的静态配置getconfiguration()方法(从3.2.3开始) | 一个类型别名或者一个类的全路径名 | 无/ |
shrinkWhitespacesInSql | Removes extra whitespace characters from the SQL. Note that this also affects literal strings in SQL. (Since 3.5.5) | true|false | false | |
defaultSqlProviderType | Specifies an sql provider class that holds provider method (Since 3.5.6). This class apply to the type(or value) attribute on sql provider annotation(e.g. @SelectProvider), when these attribute was omitted. | A type alias or fully qualified class name | no set |
基础语法
-
Select
@Select("select * from video") @Results({ @Result(column = "cover_img",property = "coverImg"), @Result(column = "create_time",property = "createTime") })
-
Insert
@Insert("INSERT INTO `video` ( `title`, `summary`, " + "`cover_img`, `view_num`, `price`, `create_time`," + " `online`, `point`)" + "VALUES" + "(#{title}, #{summary}, #{coverImg}, #{viewNum}, #{price},#{createTime}" + ",#{online},#{point});") @Options(useGeneratedKeys=true, keyProperty="id", keyColumn="id")
-
Delete
@Delete("DELETE FROM video WHERE id =#{id}")
-
UpdateProvider(动态语句构建)
InsertProvider DeleteProvider SelectProvider
@UpdateProvider(type = VideoProvider.class,method = "updateVideo") int update(Video Video); public class VideoProvider { public String updateVideo(final Video video){ return new SQL(){{ UPDATE("video") //条件写法. if(video.getTitle()!=null){ SET("title=#{title}"); } WHERE("id=#{id}"); }}.toString(); } }
PageHelper分页使用
config类
@Configuration
public class MyBatisConfig {
@Bean
public PageHelper pageHelper(){
PageHelper pageHelper = new PageHelper();
Properties p = new Properties();
// 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用
p.setProperty("offsetAsPageNum","true");
//设置为true时,使用RowBounds分页会进行count查询
p.setProperty("rowBoundsWithCount","true");
p.setProperty("reasonable","true");
pageHelper.setProperties(p);
return pageHelper;
}
}
pom.xml
<!-- 分页插件依赖 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.0</version>
</dependency>
使用
PageHelper.startPage(page,size);
PageInfo<Video> pageInfo = new PageInfo<>(list);//参数,查询出的数据
//总条数 pageInfo.getTotal()
//总页数 pageInfo.getPages()
//当前页 page
//数据 pageInfo.getList()
标签:设置,false,springboot,映射,整合,sql,mybatis,true,加载
From: https://www.cnblogs.com/dzystudy/p/17455985.html