Mybatis学习笔记

基于Java的持久层框架

Mybatis原来叫iBatis

DAO Data Access Object 数据持久层对象

transactionManager 事务管理

xml中&需要转义,写成&amp

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
SQL映射规范的名称:XxxMapper.xml,Xxx表示要操作的表名,如UserMapper.xml、OrderMapper.xml
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
接口都放在一个包里
maven项目里java代码和配置文件resource要分开,便于管理
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
红色头绳的鸟代表SQL的映射文件
蓝色头绳的鸟代表Mapper的接口
遇到的问题:
MybatisX插件安装好后,别名爆红
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
解决方法:在包扫描别名过后对实体类进行别名注解。
在这里插入图片描述
遇到的问题:xml文件中SQL代码没有自动补全
解决办法:鼠标晃一晃会出现小灯泡,点击小灯泡,选择Inject language or reference,SQL语句出现浅绿色背景就能自动补全了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
快捷键添加行注释Ctrl+/、块注释Ctrl+Shift+/

在配置文件中完成增删改查:
在这里插入图片描述

BrandMapper.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
		PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
		"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--
	namespace:名称空间
-->
<mapper namespace="com.itheima.mapper.BrandMapper">
	
	<!--
		数据库表的字段名称和实体类的属性名称不一样,则不能自动封装数据
			*起别名:对不一样的列名起别名,让别名和实体类的属性名一样
				*缺点:每次查询都要定义一次别名
					*sql片段
						*缺点:不灵活
			*rsultMap:
				1. 定义<resultMap>标签
				2. 在<selsect>标签中,使用resultMap属性替换resultType属性
	-->
	<!--
		id:唯一标识
		type:映射的类型,支持别名
	-->
	<resultMap id="brandResultMap" type="brand">
	<!--
		id:完成主键字段的映射
			column:表的列名
			property:实体类的属性名
		result:完成一般字段的映射
			column:表的列名
			property:实体类的属性名
	-->
		<result column="brand_name" property="brandName"/>
		<result column="company_name" property="companyName"/>
	
	</resultMap>
	
	<select id="selectAll" resultMap="brandResultMap">
		select *
		from tb_brand;
	</select>
	
	<!--
		sql片段
	-->
	<!--<sql id="brand_column">
		id, brand_name as brandName, company_name as companyName, ordered , description, status
	</sql>
	<select id="selectAll" resultType="brand">
		select
			<include refid="brand_column"/>
		from tb_brand;
	</select>-->
	<!--<select id="selectAll" resultType="brand">
		select *
		from tb_brand;
	</select>-->
</mapper>

MybatisText.java:

package com.itheima;

import com.itheima.mapper.BrandMapper;
import com.itheima.pojo.Brand;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class MyBatisTest {


    @Test
    public void testselectAll() throws IOException {
        //1. 获取SqlSessionFactory
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //2. 获取SqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();

        //3. 获取Mapper接口的代理对象
        BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);

        //4. 执行方法
        List<Brand> brands = brandMapper.selectAll();
        System.out.println(brands);

        //5. 释放资源
        sqlSession.close();


    }
}

在这里插入图片描述
接口里默认方法都是public
在这里插入图片描述
模糊查询like
在这里插入图片描述
遇到的问题:
idea mybatis xml 提示 <statement> or DELIMITER expected
解决办法:
language injection setting -->GenericSQL

%代表零个或多个字符
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
遇到的问题:
写sql语句的时候要么表不提示,要么表中的字段不提示
解决办法:
在这里插入图片描述
自动提交事务(autoCommit:true),就是没有开事务
关闭自动提交事务(autoCommit:false),就是手动提交,要写sqlSession.commit();
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

为什么用@Param而不用arg和param:
@Param注解增加了可读性
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
学习视频:黑马mybatis教程全套视频教程,2天Mybatis框架从入门到精通

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值