zoukankan      html  css  js  c++  java
  • springboot 整合 mybatis

    spirngboot 整合mybatis有两种方式

    第一种 无配置文件注解版,这一种符合springboot的风格

    第二种 有配置文件xml版本,这一种就是传统的模式

    无论哪一种,首先都需要加入MySQL,MyBatis依赖

    步骤:打开pom.xml文件,然后按键alt+/,Open 'Edit Spring Starters' Dialog,在Sql中勾选MySQL,MyBatis,最后点击ok,这样就在pom.xml中自动加入了相应的依赖

    其次,配置数据库链接信息

    步骤:在application.properties文件中配置数据库链接信息,如下:

    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.datasource.url=jdbc:mysql:///springboot?useUnicode=true&characterEncoding=utf8&useSSL=false
    spring.datasource.username=root
    spring.datasource.password=root

    第三,在启动类中添加对mapper包扫描@MapperScan。也可以在者直接在Mapper类上面添加注解@Mapper,但是一个一个加费事,不推荐。

     com.zxp.boot.mapper为mapper类所在包

    下边开始对上面的提到的两种方式分开讲解

    第一种方式

    直接在接口方法上注解sql,对列名的别称,分别使用了两种方式实现,以满足列名和实体字段名不一致的情况。为了满足生产上的各种复杂环境,

    我特意把数据库表字段和实体字段设置为不一致。

    • @Select 是查询类的注解,所有的查询均使用这个
    • @Result 修饰返回的结果集,关联实体类属性和数据库字段一一对应,如果实体类属性和数据库属性名保持一致,就不需要这个属性来修饰。
    • @Insert 插入数据库使用,直接传入实体类会自动解析属性到对应的值
    • @Update 负责修改,也可以直接传入对象
    • @delete 负责删除

     继续演示:

     注意:Insert时,如果需要返回插入后的主键id值,则需要在插入方法上面添加 @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")

    剩下的就是在需要调用的地方直接注入mapper类使用了。

       @Autowired
        private BookDao bookDao;

    第二种方式

    这种方式就是传统的方式,和整合springmvc没啥区别

    1,在application.properties新增以下配置
       mybatis.mapper-locations=classpath:mapper/*.xml

    2,在resources中添加文件夹mapper,对应上面配置的classpath:mapper路径,用于存放写sql的xml文件。

    3,编写mapper接口,和以前的完全一样

    4,在xml中写SQL语句

     

    剩下的就是在需要调用的地方直接注入mapper类使用了。

      @Autowired
        private BookMap bookMap;

    最后:需要说明的是,这二种方式可以添加自定义配置文件mybatis-config.xml,配置更多的信息,然后在application.properties添加配置文件的引用

    mybatis.config-location=classpath:mybatis-config.xml

    mybatis-config.xml的内容如下:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <!-- 设置运行参数 -->
        <settings>
            <!-- 打印查询语句,缺少该配置则可能不打印sql -->
            <setting name="logImpl" value="LOG4J2" />
            
            <!-- 全局映射器启用缓存 -->
            <setting name="cacheEnabled" value="true" />
            <!-- 查询时,关闭关联对象及时加载以提高性能 -->
            <setting name="lazyLoadingEnabled" value="false" />
            <!-- 设置关联对象加载的形态,此处为按需加载字段(加载字段由SQL指定),不会加载关联表的所有字段,以提高性能 -->
            <setting name="aggressiveLazyLoading" value="false" />
            <!-- 对于位置的SQL查询,允许返回不同的结果集以达到通用的效果 -->
            <setting name="multipleResultSetsEnabled" value="true" />
            <!-- 允许使用列标签代替列明 -->
            <setting name="useColumnLabel" value="true" />
            <!-- 允许使用自定义的主键值(比如由程序生成的UUID 32位编码作为键值), 数据表的pk生成策略将被覆盖 -->
            <setting name="useGeneratedKeys" value="true" />
            <!-- 给予被嵌套的resultMap以字段-属性的映射支持 -->
            <setting name="autoMappingBehavior" value="PARTIAL" />
            <!-- 对于批量更新操作缓存SQL以提高性能 -->
            <setting name="defaultExecutorType" value="REUSE" />
            <!-- 数据库超过25秒仍未响应则超时 -->
            <setting name="defaultStatementTimeout" value="25" />
        </settings>
    </configuration>

    如果在项目中使用了log4j2,还可以对这两种实现打印它们的Sql,

    步骤

    先在resources目录中添加log4j2.xml配置文件

    其次在配置文件中配置要打印sql语句的Logger

    log4j2.xml的完整配置如下:

    <?xml version="1.0" encoding="UTF-8" ?>
    <Configuration status="warn" strict="true" schema="Log4J-V2.2.xsd">
        <Appenders>
            <!-- 输出到控制台 -->
            <Console name="Console" target="SYSTEM_OUT">
                <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %m%n"/>
            </Console>
        </Appenders>
        <Loggers>
            <!--全局配置-->
            <Root level="INFO">
                <AppenderRef ref="Console"/>
            </Root>
            <!-- 数据库操作日志输出, additivity="false" 防止Root重复输出-->
            <Logger name="com.zxp.boot.map" level="DEBUG" additivity="false">
                <AppenderRef ref="Console"/>  
            </Logger>
        </Loggers>
    </Configuration>

    如果配置以上内容,还不能正常打印执行的Sql语句的话,则可以在mybatis-config.xml中添加以下配置项

      <!-- 打印查询语句,缺少该配置则可能不打印sql -->
     <setting name="logImpl" value="LOG4J2" />

  • 相关阅读:
    可变形参 Day07
    流程控制 Day06
    基本数据类型的值传递 和引用数据类型的引用传递 Day06
    一维数组的求平均成绩 Day06
    一维数组的初始化及遍历 Day06
    字符串分割+二维数组 Day15练习
    Java对数组和列表的排序1.8新特性
    Java Stream
    JPA学习(六、JPA_JPQL)
    JPA学习(五、JPA_二级缓存)
  • 原文地址:https://www.cnblogs.com/tyhj-zxp/p/8058663.html
Copyright © 2011-2022 走看看