mybatis

sql配置语法

insert:

<insert id="saveUser" parameterType="com.czy.mvc.model.dict.User">
-- 获取insert后数据id,keyProperty是javabean的属性 keyColumn是数据库表字段名 order="AFTER"表示执行sql语句之后执行这个
   <selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER">
       select last_insert_id();
   </selectKey>
   insert into sys_user(code,emp_code,name)values(#{code},#{emp_code},#{name})
</insert>

update:

delete:

select:循环、模糊查询

select * from sys_user
<where>
	   <if test="name !=null">
	      and name like #{name}
	   </if>
	   <if test="ids !=null and ids.size()>0">
		    <foreach collection="ids" open="and id in(" close=")" separator="," index="id">
		        #{id}
		    </foreach>
		</if>
</where>

resultMap:

  <resultMap id="abc" type="com.czy.mvc.model.dict.User">
        <id property="id" column="id"/>
        <result property="code" column="code"/>
    </resultMap>

注解:
在这里插入图片描述

别名:

springboot:yml配置:

mybatis:
  type-aliases-package: com.czy.springTest1.mvc.model

mybatis配置

<typeAliases>
<!--<typeAlias type="com.czy.mvc.model.dict.User" alias="user"/>-->
    <package name="com.czy.mvc.model"/>
</typeAliases>

指定dao(mapper)所在位置:

mybatis:

<mappers>
<!--        <mapper class="com.czy.mvc.dao.IUserDao"/>-->
<!--        <mapper resource="com/czy/mvc/dao/IUserDao.xml"/>-->
<!--        <mapper resource="com/czy/mvc/dao/MyIUserDao.xml"/>-->
    <package name="com.czy.mvc.dao"/>
</mappers>

springboot yml

mybatis:
  type-aliases-package: com.czy.springTest1.mvc.model
#  configuration:
#    mapUnderscoreToCamelCase: true # 开启驼峰命名转换法
  config-location: classpath:mybatis/MybatisConfig.xml
  mapper-locations: classpath:mybatis/mapper/*.xml
#  mapper-locations: com.czy.springTest1.mvc.dao

驼峰命名

yml:

mybatis:
  configuration:
    map-underscore-to-camel-case: true

springboot配置类:

@Bean
public ConfigurationCustomizer configurationCustomizer(){
    return new ConfigurationCustomizer(){
        @Override
        public void customize(org.apache.ibatis.session.Configuration configuration) {
            configuration.setMapUnderscoreToCamelCase(true);
        }
    };
}

mybatis:

延时加载

<settings>
	<!-- 启用延迟加载特性,不配置默认关闭该特性-->
	<setting name="lazyLoadingEnabled" value="true"></setting>
	<!-- 按需加载: false:使用关联属性,及时加载;    true,加载对象,则加载所有属性, -->
	 <setting name="aggressiveLazyLoading" value="false"/>
</settings>

延迟加载和按需加载都要开启,不然不会延迟加载。
延迟加载通常是用在一对多的场景:一对多

注解:

一级缓存

一级缓存不需要配置,自动开启。
一级缓存是sqlsession对象的缓存,执行查询时会把结果存入sqlsession中,下次查询会先从sqlsession缓存取。
当sqlsession对象消失,一级缓存就消失了。
调用sqlsession的修改、添加、删除、commit()、close()等方法时,会清空一级缓存。

sqlSession.clearCache();也可以清空缓存

二级缓存

在SqlSessionFactory对象的缓存,使用二级缓存需要三个地方配置

  1. 主配置文件:
<configuration>
    <settings>
        <setting name="cacheEnabled" value="true"/>
    </settings>
</configuration>
  1. mapper:
<mapper >
  <cache/>
  1. select方法:
 <select id="findAll01" resultType="user" useCache="true">

注解:
SpringBoot中默认帮我们全局开启了二级缓存,只需要在mapper上注明。

@CacheNamespace
public interface EmployeeMapper

一对一

<resultMap id="userMap" type="user">
    <id column="id" property="id"></id>
    <result column="name" property="name"></result>
    <association property="user" column="id">
        <id column="id" property="id"/>
        <result column="username" property="username"/>
    </association>
</resultMap>

注解:
在这里插入图片描述

一对多

<resultMap id="userMap" type="user">
   <id column="id" property="Id"></id>
   <result column="name" property="Name"></result>
   <result column="remark" property="Remark"></result>
   <collection property="user" javaType="user"  column="id" select="com.czy.mvc.dao.IUserDao.findById"></collection>
</resultMap>

注解:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值