note:该篇Mybatis的学习基于maven项目的基础上
一、解决SQL映射文件的警告提示
注:完成IDEA与数据库的连接后,可解决该问题(详见上一篇文章)
IDEA连接上数据库,相当于一个便捷的数据库客户端工具,可编写SQL脚本对数据进行管理。而且IDEA拥有强大的命令补全功能,简化SQL脚本编写成本,极为方便。
二、maven项目基础要点
- Maven:一款服务于java平台的自动化构建工具。
- 构建maven项目
(1)构建定义:把动态的Web工程经过编译得到的编译结果部署到服务器上的整个过程。
编译:java源文件[.java]->编译->Classz字节码文件[.class]
部署:最终在sevlet容器中部署的不是动态web工程,而是编译后的文件。
(2)构建的各个环节
清理clean:将以前编译得到的旧文件class字节码文件删除。
编译compile:将java源程序编译成class字节码文件。
测试test:自动测试,自动调用junit程序。
报告report:测试程序执行的结果。
打包package:动态Web工程打War包,java工程打jar包。
安装install:Maven特定的概念-----将打包得到的文件复制到“仓库”中的指定位置。
部署deploy:将动态Web工程生成的war包复制到Servlet容器下,使其可以运行。
- maven的目录结构及常用命令
根目录:工程名 |—src:源码 |—|—main:存放主程序 |—|—|—java:java源码文件 |—|—|—resource:存放框架的配置文件 |—|—test:存放测试程序 |—pop.xml:maven的核心配置文件
常用命令:必须进入到pom.xml的目录中执行maven命令
mvn clean:清理
mvn compile:编译主程序
mvn test-compile:编译测试程序
mvn test:执行测试
mvn package:打包
mvn install:安装 - Maven的仓库和坐标
①pom.xml:Project Object Model 项目对象模型。它是maven的核心配置文件,所有构建的配置都在这里设置。
②默认仓库:c:\Usrs(登录当前系统的用户名).m2\repository
③坐标:使用三个向量在仓库中唯一的定位一个maven工程。
④scope表示依赖的范围:
compile,默认值,适用于所有阶段(开发、测试、部署、运行),本jar会一直存在所有阶段。
provided,只在开发、测试阶段使用,目的是不让Servlet容器和你本地仓库的jar包冲突 。如servlet.jar。
runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。
⑤本地仓库:设置在maven\apache-maven-3.6.3\conf的settings文件。
maven坐标和本地仓库对应的映射关系(只针对被依赖的项目坐标?):groupId/artifactId/version/artifactId-version.jar
三、Mapper 代理开发
官网文档:
入门案例:
1、定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下。
2、设置SQL映射文件的namespace属性为Mapper接口全限定名。
3、在 Mapper 接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致。
4、编码
①通过 SqlSession 的 getMapper方法获取 Mapper接口的代理对象。
②调用对应方法完成sql的执行。
step1:确保Mapper接口和SQL映射文件放置在同一目录下–>创建同名多级包
IDEA中Mybatis框架下构建多级包:遵循maven的目录结构+Mybatis框架,需在java目录下创建Mapper层,以此对应resource目录下的Mapper.xml配置文件(SQL映射文件)。分别在java和resource下建包:
① java下命名规则:XXX.YYY.ZZZ(用 . 隔开)
②resource下的命名规则:XXX/YYY/ZZZ(用 / 隔开)
step2:编写Mapper接口中的方法(selectAll)。
复制Mapper接口的全限定名:com/itheima/mapper/UserMapper.java
step3:将映射文件和Mapper接口做对应。
step4:将核心配置文件(mybatis-config.xml)和映射文件做对应。
复制配置文件的全限定名:com/itheima/mapper/UserMapper.xml
step5:编码,调用方法执行sql
工作机制简化如下:获取SqlSession对象–>获取Mapper接口的代理对象(userMapper),可调用接口中的方法,同时可获取到同名的映射文件(UserMapper.xml)–>代理对象调用方法,方法名对应映射文件中的id,进而执行该id下的sql语句*
未采用mapper代理开发时:
tips:如果Mapper接口名称和SQL映射文件名称相同,并在同一目录下,则可以使用包扫描的方式简化SQL映射文件的加载。