栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【软件开发架构平台】CH8 Mybatis进阶

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【软件开发架构平台】CH8 Mybatis进阶

Spring Boot整合Mybatis
  • 将Configuration.xml的内容整合到application.properties中统一配置

  • 使用Spring IoC 容器管理SqlSessionFactiory 和SqlSession对象

  • 使用面向接口的编程+Mapper配置文件方式实现DAO层类

  • 支持注解编程

Configuration

Configuration的配置内容

  • environments:环境配置

  • mappers:映射器

  • typeAliases:类型别名

    • mybatis.type-aliases-package=org.csu.demo.domain
      
  • settings:设置

    • 延迟加载:默认值为false。应用场景为关联查询,当开启时,所有关联对象都会延迟加载(当真正使用时才会查询数据库),目的在于提高程序执行效率

    • mybatis.configuration.lazy-loading-enabled = true
      
  • typeHandler:类型处理器

    • 用于解决数据库中的数据类型和Java语言中的数据类型不匹配问题

    • Mybatis从结果集中取出一个值时,都会用类型处理器将获取到的值以合适的方式转换为Java类型

    • mybatis.type-handlers-package = org.csu.demo.persistence.util
      
Mapper

CRUD元素常用属性

  • parameterType:用于指定传入SQL语句的参数类型
  • resultType:用于指定SQL语句执行完成后的返回值类型
  • sql参数:使用“#{}”语法在SQL语句中预留参数

参数类型指定

  • 如果出现参数类型(Java)和数据库字段类型不匹配的情况,就需要参数类型指定
#{property,javaType=int,jdbcType=NUMERIC}

结果映射ResultMap

可实现“对简单的查询零配置(80%),对复杂的查询只需描述语句关系(20%)”的设计目标

结果映射常用的两个属性是resultType和resultMap

  • resultType用于设置将结果集应色号到已有类型上,可以是普通类型、集合类型、自定义bean等
  • resultMap用于设置复杂映射,指返回的结果集和已有的类型不完全匹配的情况下,二者不能同时使用




        INSERT INTO SIGNON (USERNAME,PASSWORD)
	  		VALUES(#{username}, #{password})

动态SQL语句

由于实际项目的业务逻辑的复杂性,豁达配置需要动态的拼接SQL,如模糊搜索、条件查询等

Mybatis中有if,choose(when,otherwise),trim(where,set),foreach四个用于动态SQL的标签元素

if


	SELECT* FROM BLOG WHERe state = 'ACTIVE'
	
		
			AND title like #{title}
		
		
			...
		
		
			...
		
	

trim(where,set)——防止特殊情况SQL错误


	SELECT* FROM BLOG
	
		
			AND title like #{title}
		
		
			...
		
	

foreach——复杂查询


Mybatis其他使用

MyBatis 三剑客
Mybatis-generator:自动代码生成工具。自动生成Javabean和Mapper映射器文件


	

Mybatis plugin:Mapper接口到xml映射器的自动导航
Mybatis PageHelper:查询数据量大的数据库表时,可以减少数据库查询压力,降低客户端的数据加载量

Mybatis plus:包含三剑客的功能,无侵入、损耗小,直接面向对象操作。

public void addAccount(String username,String password){
        accountMapper.addAccount(username,password);
    }

public List getItemListByProduct(String productId){

        return itemMapper.getItemListByProduct(productId);
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/844975.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号