01-Maven概述
02-Maven简介
03-Maven基本使用
04-IDEA配置Maven
helloworld 版本错误
已解决 https://blog.csdn.net/qq_41428418/article/details/124169175
05-依赖管理&依赖范围
找不到Any changes??? 感觉无关紧要
- compile 最大的
默认的scope,表示 dependency 都可以在生命周期中使用。而且,这些dependencies 会传递到依赖的项目中。适用于所有阶段,会随着项目一起发布 - provided
跟compile相似,但是表明了dependency 由JDK或者容器提供,例如Servlet AP和一些Java EE APIs。这个scope 只能作用在编译和测试时,同时没有传递性。 - runtime 作用在运行和测试时
表示dependency不作用在编译时,但会作用在运行和测试时,如JDBC驱动,适用运行和测试阶段。 - test 测试时有效
表示dependency作用在测试时,不作用在运行时。 只在测试时使用,用于编译和运行测试代码。不会随项目发布。 - system
跟provided 相似,但是在系统中要以外部JAR包的形式提供,maven不会在repository查找它
01-MyBatis:
免除了几乎所有JDBC代码以及设置参数和获取结果集的工作
02-MyBatis快速入门
导入<!--mybatis 依赖-->报错
The project group that produced the dependency, e.g. org.apache.maven.
maven工程关于pom.xml文件导入mybatis版本失败_等你说等我说的博客-CSDN博客_maven导入mybatis不行
!!!就nima无语 我卡这块最少卡一个小时就是解决不了
后来重新打开apache-maven文件从里面翻出来org.mybatis !!!pom.xml就不报错了 服了
03-解决SQL语句警告提示
IDEA 配置连接数据库报错 Server returns invalid timezone. Need to set ‘serverTimezone‘ property._小薛的BUG日志的博客-CSDN博客
04-Mapper代理开发
[FATAL] Non-parseable settings D:\黑马Java资料\Javaweb\apache-maven-3.6.1\conf\settings.xml: end tag name </mirror> must match start tag name <mirrors> from line 147 (position: TEXT seen ...</mirror>\n -->\n </mirror>... @160:14) @ D:\黑马Java资料\Javaweb\apache-maven-3.6.1\conf\settings.xml, line 160, column 14
真nima服了
<mirror> 原来因为/是结束标签 弄反了 </mirror>
Maven 编译遇到 Process terminated【四种情况全部解决】_是我,Zack的博客-CSDN博客_maven process terminated
05-Mybatis核心配置文件
environments:配置数据库连接环境信息。可以配置多个environment,通过default属性切换不同的environment
06-Mybatis案例-环境准备
蓝鸟代表Mapper接口 红鸟代表SQL映射文件
[已解决] idea插件下载不了_罪恶老司机的博客-CSDN博客_idea下载不了插件
07-查询-查询所有&结果映射
都是这三步 难点在于:面对不同需求 !!!SQL语句咋写;要不要参数;返回什么结果
java:提示程序包org.junit不存在时的解决方法_错在贪恋你温柔的博客-CSDN博客_java: 程序包org.junit不存在
数据库表的字段名称 和 实体类的属性名称 不一样,则不能自动封装数据
* 起别名: 对不一样的列名起别名,让别名和实体类属性名一样
select id,brand_name as brandname, ordered from tb_brand;
*缺点: 每次查询都要定义别名 解决方法:定义SQL片段
*缺点: 不够灵活
*resultMap(非常常用):就是将名字不一样的放在外面起别名
id:唯一标识
type:映射类型 支持别名
*resultMap使用步骤:
1.定义<resultMap>标签
2.在<select>标签中,使用resultMap属性替换 resultType属性
<resultMap id="brandResultMap" type="brand">
<!--子标签:
id:完成主键字段的映射
column:表的列名
property:实体类的属性名
result:完成一般字段的映射-->
<result column="brand_name" property="brandName" />
<result column="company_name" property="companyName" />
</resultMap>
<select id="selectAll" resultMap="brandResultMap">
select *
from tb_brand;
</select>
08-查询-查看详情
*参数占位符:
1.#{}:会将其(#)替换为?(作为占位符) 为了防止SQL注入
2.${}:直接把{}里面的拼SQL参数,会存在SQL注入问题
3.使用时机:
*参数传递的时候:#{}
*表名或者列名不固定情况下:${} 存在SQL注入问题
*参数类型: "parameterType: int" 一般都省略 麻烦
*SQL语句中特殊字符处理:
1.转义字符;
2.CDATA区:
<![CDATA[
<(特殊字符)
]]>
09-查询-条件查询
存在BUG,必须三个条件都有才能查询
10-查询-动态条件查询 动态SQL
11-添加&修改功能
就加这两个属性就能返回 添加数据的主键
<set>
12-删除功能
mybatis会将数组参数,封装为一个Map集合
*默认:array =数组
*使用@Param 改变map集合的默认key名称
void deleteByIds( @Param("ids") int[] ids);
</delete>
<delete id="deleteByIds">
delete from tb_brand where id
in
<foreach collection="array" item="id" separator="," open="(" close=")">
#{id}
</foreach>
;
</delete>