首页 > 其他分享 >springboot整合mybatis

springboot整合mybatis

时间:2023-06-04 17:44:44浏览次数:30  
标签:设置 false springboot 映射 整合 sql mybatis true 加载

整合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

相关文章

  • 2. 搭建Mybatis
    确认开发环境​MySQL不同版本的注意事项1、驱动类driver-class-nameMySQL5版本使用jdbc5驱动,驱动类使用:com.mysql.jdbc.DriverMySQL8版本使用jdbc8驱动,驱动类使用:com.mysql.cj.jdbc.Driver2、连接地址urlMySQL5版本的url:jdbc:mysql://localhost:3306/ssmMySQL8版......
  • Spring和MyBatis整合
    框架整合时三层架构的分工  进行SSM框架整合时,两个框架的分工如下所示。MyBatis负责与数据库进行交互。Spring负责事务管理,Spring可以管理持久层的Mapper对象及业务层的Service对象。由于Mapper对象和Service对象都在Spring容器中,所以可以在业务逻辑层通过Service对象调用......
  • Spring3.2 + cxf1.7.3整合
    参考:[url]http://tsinglongwu.iteye.com/blog/832704[/url][color=red][b]测试调试工具介绍[/b][/color][b]1.SoapUI1.6[/b][url]http://webservices.ctocio.com.cn/tips/263/7817763.shtml[/url][b]2.TestMaker[/b][url]http://webservices.ctocio.com......
  • Spring整合mybatis使用xml配置事务
    自己准备开始教授Java相关的技术,Spring框架是必须让学生学习的框架之一。里面有一个事务的配置以前刚学习Spring框架的时候有接触过,不过已经过了很多年,很多东西都已经忘记。现在再来回忆一下如何使用Spring框架类配置事务。使用到的maven坐标如下:<dependencies>    <......
  • MyBatis之一对多抓取策略
    MyBatis之一对多抓取策略1.情况描述如果只需要使用一方中的数据,而不使用多方数据的情况下,在执行过程中不需要发送查询多方的sql语句,需要配置抓取策略为懒加载。2.适用情况适用于一对多的方式一,通过多条sql查询情况。3.抓取策略fetchType(映射文件collection集合映射标签内......
  • Spring 3.0.5+MyBatis3.0.4整合非完全例子
    基于注解的mybatis和spring整合:[url]http://huangmin001.iteye.com/blog/1185806[/url][color=red]这个文章说的很详细,很值得一看[/color].Maven+SpringMVC+Mybatis【绝非原创,单纯整理】【四】:[url]http://playgod1984.iteye.com/blog/984113[/ur......
  • 1. Mybatis 简介
    1.Mybatis历史MyBatis最初是Apache的一个开源项目iBatis,2010年6月这个项目由ApacheSoftwareFoundation迁移到了GoogleCode。随着开发团队转投GoogleCode旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github。iBatis一词来源于“internet”和“abatis”的组......
  • 【整套视频】spring / springmvc+mybatis
    Spring常用注解redis视频集合,看完这些别说不会redisday88-js对象.rarday87-项目部署和面试指导10.rarday86-订单流程09.rarday85-购物车和订单提交08.rarday84-单品页查询静态化07.rarday83-用户登录和个人中心06.rarday82-商品审核上架和首页筛选05.rarday81-商品添加04.rarday80-......
  • 【视频】SpringBoot为啥到了不学不行的阶段
    Spring常用注解redis视频集合,看完这些别说不会redis01-SpringBoot视频教程_SpringBoot简介.rar02-SpringBoot视频教程_SpringBoot主要特性.rar03-SpringBoot视频教程_SpringBoot四大核心功能.rar04-SpringBoot视频教程_SpringBoot基础开发环境.rar05-SpringBoot视频教程_SpringBoot......
  • 1. Mybatis 简介
    1.Mybatis历史MyBatis最初是Apache的一个开源项目iBatis,2010年6月这个项目由ApacheSoftwareFoundation迁移到了GoogleCode。随着开发团队转投GoogleCode旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github。iBatis一词来源于“internet”和“abatis”的组合......