Mybatis依赖引入及其配置

Mybatis使用入门1.1(关于环境之间的配置)

  1. Maven工程pom.xml需要引入的Mybatis有关依赖
<!--        Mybatis依赖-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.5</version>
        </dependency>
<!--        Mysql连接依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.21</version>
        </dependency>
  1. 配置Mybatis的xml配置
<!--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">
<!--config配置-->   
<configuration>
    <settings>
    <!--这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为.
常用的有:
1、cacheEnabled(全局性地开启或关闭所有映射器配置文件中已配置的任何缓存)
2、lazyLoadingEnabled(延迟加载的全局开关。当开启时,所有关联对象都会延迟			            加载。 特定关联关系中可通过设置 fetchType 属性来覆盖该项的开关状态)
3、logImpl(指定 MyBatis 所用日志的具体实现,未指定时将自动查找,value的值可为SLF4J、LOG4J、LOG4J2、JDK_LOGGING、COMMONS_LOGGING、STDOUT_LOGGING、NO_LOGGING )
[关于settings的更多详情配置请点击](https://mybatis.org/mybatis-3/zh/configuration.html#settings)
-->
<!--        自动配置日志输出-->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
<!--        开启延迟加载-->
        <setting name="lazyLoadingEnabled" value="true"/>
<!--        开启二级缓存-->
        <setting name="cacheEnabled" value="true"/>
    </settings>
<!--        类型别名typeAliases,类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写-->
    <typeAliases>
  		<typeAlias alias="alias(自己后面用的类型别名)" type="domain.blog.Author(类型详细地址)"/>
<!--也可以指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean,比如:-->
<!--<package name="domain.blog"/>-->
	</typeAliases>
    <environments default="development">
<!--environment这种机制有助于将 SQL 映射应用于多种数据库之中,可以配置多个数据库运行环境。不过要记住:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。如果你想连接两个数据库,就需要创建两个 SqlSessionFactory 实例,每个数据库对应一个。-->
        <environment id="development">
<!--            配置JDBC事务管理-->
            <transactionManager type="JDBC"></transactionManager>
<!--            POOLED配置JDBC数据源连接池-->
            <dataSource type="POOLED">
            <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&amp;characterEncoding=UTF-8"/>
            <property name="username" value="******"/>
            <property name="password" value="******"/>
            </dataSource>
        </environment>
        <!--同时允许你配置多个environment,默认使用是environments中default所指定的id,这里就不赘述了
        <environment id="development">.....</environment>
        注意:
        1.默认使用的环境 ID(比如:default="development")。
		2.每个 environment 元素定义的环境 ID(比如:id="development")。
	    3.事务管理器的配置(比如:type="JDBC")。
		4.数据源的配置(比如:type="POOLED")。
       </environment>-->
    </environments>
    
    <!--           映射器注册mapper.xml映射接口-->
    <mappers>
        <mapper resource="com/ruobai/mapper/account.xml"></mapper>
    </mappers>
</configuration>    
  1. 关于缓存
<!--缓存的xml配置信息-->
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">
    <!-- diskStore标签:磁盘存储 path;磁盘存储对象的位置(可不填)-->
         <diskStore/>   
	<!-- 
	defaultCache:默认的缓存配置信息,如果不加特殊说明,则所有对象按照此配置项处理 
	maxElementsInMemory:设置了缓存的上限,最多存储多少个记录对象
    eternal:代表对象是否永不过期
    timeToIdleSeconds:最大的发呆时间
    timeToLiveSeconds:最大的存活时间
    overflowToDisk:是否允许对象被写入到磁盘
    -->
    <defaultCache
            maxElementsInMemory="1000"
            maxElementsOnDisk="10000000"
            eternal="false"
            overflowToDisk="false"
            timeToIdleSeconds="120"
            timeToLiveSeconds="120"
            diskExpiryThreadIntervalSeconds="120"
            memoryStoreEvictionPolicy="LRU">
    </defaultCache>
    <!--
        cache:为指定名称的对象进行缓存的特殊配置,ehcahe的子配置,默认使用defaultCache的配置
        name:指定对象的完整名
        <cache 
    name="com.zbaccp.entity.Person" 
    maxElementsInMemory="10000" 
    eternal="false"        
    timeToIdleSeconds="300" 
    timeToLiveSeconds="600" 
    overflowToDisk="true" />
     -->
    </ehcache>

  1. 关于XML映射器
    MyBatis 的真正强大在于它的语句映射,这是它的魔力所在。
    SQL 映射文件只有很少的几个顶级元素(按照应被定义的顺序列出):
cache – 该命名空间的缓存配置。
cache-ref – 引用其它命名空间的缓存配置。
resultMap – 描述如何从数据库结果集中加载对象,是最复杂也是最强大的元素。
parameterMap – 老式风格的参数映射。此元素已被废弃,并可能在将来被移除!请使用行内参数映射。文档中不会介绍此元素。
sql – 可被其它语句引用的可重用语句块。
insert – 映射插入语句。
update – 映射更新语句。
delete – 映射删除语句。
select – 映射查询语句。

下一部分将从语句本身开始来描述每个元素的细节

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruobai.repository.AccountRepository">
<!--        缓存配置-->
    <cache type="org.mybatis.caches.ehcache.EhcacheCache">
<!--        缓存创建之后最后一次访问缓存的时间至缓存失效的时间-->
        <property name="timeToIdleSeconds" value="3600"/>
<!--        缓存自创建起至失效的时间-->
        <property name="timeToLiveSeconds" value="3600"/>
<!--        缓存回收策略,LRU表示移除近期使用最少的对象-->
        <property name="memoryStoreEvictionPolicy" value="LRU"/>
    </cache>
    <!--查询语句 :id 对应接口方法名,parameterType="传入的参数类型" resultType="结果参数类型" 其余的参数[请参照](https://mybatis.org/mybatis-3/zh/sqlmap-xml.html#select)-->
	<select id="selectPerson" parameterType="int" resultType="hashmap">
	  SELECT * FROM PERSON WHERE ID = #{id}
	</select>
	<!--添加、修改、删除-->
	<insert id="insertAuthor">
	  insert into Author (id,username,password,email,bio) values (#{id},#{username},#{password},#{email},#{bio})
	</insert>
	<update id="updateAuthor">
	  update Author set username = #{username},password = #{password},email = #{email},bio = #{bio}where id = #{id}
	</update>
	<delete id="deleteAuthor">
  		delete from Author where id = #{id}
	</delete>
	<!--sql这个元素可以用来定义可重用的 SQL 代码片段,以便在其它语句中使用。 参数可以静态地(在加载的时候)确定下来,并且可以在不同的 include 元素中定义不同的参数值
-->
	<sql id="userColumns">
		${alias}.id,${alias}.username,${alias}.password 
	</sql>
	<!--可以调用include标签引入sql-->
	<select id="selectUsers" resultType="map">
  	select
	    <include refid="userColumns"><property name="alias" value="t1"/>	</include>,
	    <include refid="userColumns"><property name="alias" value="t2"/></include>
	  from some_table t1
	  cross join some_table t2
	</select>
</mapper>

本篇博客引用于Mybatis文档

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Mybatis依赖注入是指通过配置文件或注解来自动将依赖对象注入到需要使用的地方。这样可以减少程序员手动创建对象的工作量,并且提高了代码的可维护性和可测试性。 在Mybatis中,依赖注入一般是通过配置文件来实现的。通过配置文件中的<property>标签或<constructor-arg>标签,可以指定需要注入的依赖对象以及其属性值。这样,在使用这些依赖对象时,Mybatis会自动将其注入到相应的位置。 另外,在Mybatis中也可以使用注解来实现依赖注入。使用注解可以更加灵活地指定需要注入的依赖对象,并且可以减少配置文件的使用。通过在需要注入的字段或方法上添加注解,Mybatis会自动将依赖对象注入到相应的位置。 总的来说,Mybatis提供了多种方式来实现依赖注入,可以根据具体的需求选择适合的方式。无论是通过配置文件还是注解,都可以实现依赖对象的自动注入,提高代码的开发效率和可维护性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [MyBatis学习记录(使用Maven注入依赖)](https://blog.csdn.net/weixin_53700782/article/details/125356611)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Mybatis(持久层的框架),注入的三种方式](https://blog.csdn.net/qq_30225725/article/details/86666635)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Mybatis增强工具包(Mybatis plus).rar](https://download.csdn.net/download/2301_78834737/88016822)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值