Maven
Maven是专门用于管理和构建Java项目的工具,它主要功能有
提供了一套标准化的项目结构
提供了一套标准化的构建流程(编译、测试、打包、发布.....)
提供了一套依赖管理机制信
安装Maven
1.解压maven安装包
2.配置环境变量
系统变量:
MAVEN_HOME:maven的安装目录**(路径中不能含有中文)**
Path中:
在cmd中查看:
3.配置本地仓库
在maven目录下新建目录:mvn_resp用来作为maven的本地仓库
修改conf目录下的setting.xml文件**(路径中不能含有中文)**
4.搭建阿里云私服
修改conf/setting.xml中的 < mirrors >标签
阿里云路径现在已经由http://改为https://
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/nexus/content/groups/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
Maven使用
常用命令:
1.compile
在要编译的文件下:mvn compile
2.clean(删除target目录)
target:该目录是项目编译后产生的一个目录,主要存放的是编译后的.class文件。
mvn clean
3.test
mvn test
4.package
mvn package
5.install
mvn install
生命周期:
在IDEA中配置Maven
1.在IDEA中选中File–>Settings
2.找到maven进行配置,配置使用本地安装的maven,并且修改配置文件路径
maven的坐标:
创建maven项目:
按ctrl+alt+shift+s:
选择Modules
创建完成:
导入maven项目:
右边Maven找不到:
配置maven-helper插件:
依赖管理:
在pom.xml文件中新建标签
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.48</version>
</dependency>
</dependencies>
设置自动生效
依赖范围:
编译环境:main下
测试环境:test下
运行环境:导入项目运行
Mybatis
官网:https://mybatis.net.cn/
Mybatis是一款优秀的持久层框架,用于简化JDBC开发
1.持久层:
负责将数据保存到数据库的那一层代码
JavaEE三层架构:表现层、业务层、持久层
2.框架
框架就是一个半成品软件,是一套可重用的、通用的、软件基础代码模型
在框架的基础上构建软件编写更加高效、规范、通用、可扩展。
1.创建一个Maven项目,在pom.xml中添加如下依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>x.x.x</version>
</dependency>
这里添加mysql驱动、junit单元测试、日志等依赖并在main下的resources下添加日志文件logback.xml
2.编写mybatis核心配置文件
<?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">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!--数据库连接信息-->
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<!--用来指定加载sql映射文件-->
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
3.编写SQL映射文件
<?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">
<!--
namespace:命名空间
-->
<mapper namespace="test">
<select id="selectBlog" resultType="Blog">
select * from Blog where id = #{id}
</select>
</mapper>
注意:id为sql语句的唯一标识
查询tb_user表的全部数据
在mybatis-config.xml中改写中的数据
4.编码
定义Pojo类
User类:
package com.itheima.Pojo;
public class User {
private int id;
private String name;
private String sex;
private int age;
public User(int id, String name, String sex, int age) {
this.id = id;
this.name = name;
this.sex = sex;
this.age = age;
}
public User()
{
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", sex='" + sex + '\'' +
", age=" + age +
'}';
}
}
加载mybatis核心配置文件,获取SqlSessionFactory
//加载mybatis核心配置文件,获取SqlSessionFactory
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
获取sqlSession对象,执行sql语句
//获取sqlSession对象
SqlSession sqlSession=sqlSessionFactory.openSession();
//执行sql,
List<User> users=sqlSession.selectList("test.selectAll");
释放资源
运行结果
解决SQL映射文件的警告提示
mapper代理开发
**
mapper代理使用的是JDK动态代理策略
使用这种方式可以不用写接口的实现类,免除了复杂的方法,使得代码更加清晰易懂
1.新建mapper目录存放Mapper接口和SQL映射文件,确保在同一目录下
前提:配置文件一般都放在resources目录下
注意:在resources目录下创建新的目录的时候不能使用“.”,否则SQL映射文件和Mapper接口不在同一目录下
2.设置映射文件的namespace为Mapper接口的全限定名
3.在Mapper接口中定义方法,方法名称就是SQL映射文件的id,保持参数和返回类型
4.修改mybatis-config.xml配置文件中的mapper,为SQL映射文件的全限定名
这里可以采用包扫描的方式
5.编码
运行结果:
mybatis核心配置文件
在配置文件中配置标签要遵循顺序
起别名:在mybatis核心配置文件mybatis-config.xml中位于< environments > < /environment>标签之上
<typeAliases>
<package name="com.itheima.Pojo"/>
</typeAliases>
这样配置好之后,在SQL映射文件中,可以直接使用类名,不区分大小写
mybatis案例:
1.以配置文件的方式实现对数据库的增删改查
效果:
步骤:编写接口方法–>编写SQL–>执行方法
问题:当实体类字段和数据库字段不一致时候,无法自动封装数据
解决方案:
1.起别名
对不一样的列名起别名,别名和实体类中的字段名保持一致
缺点:每次查询都要定义一遍别名
2.定义SQL片段
缺点:不灵活
3.resultMap方式
type:指的是映射的类型,下面这里给Brand类起了别名,否则要写这个类的全限定名
id标签为主键字段的映射,result为其他字段的映射
result标签中 column为表的列名,property为实体类列名
按条件查询数据
按单值查询
接口方法:
mapper配置文件:
注意:#{和接口方法中的参数保持一致}
mybatis中参数占位符:
1.#{}:会将其替换为?,为了防止SQL注入
2.${}:将参数值直接拼到SQL语句中,存在SQL注入问题
3.使用时机:
*参数传递的时候用#{}
*表名或者列名不固定的时候
4.参数类型:parameterType:可以省略
mapper配置文件中特殊字符处理:
1.转义字符
小于号< <
2.CDATA区
<![CDATA[
<
]]>
按多值查询
1.散装参数要使用@Param注解
解决模糊查询查不出数据的问题:
在mybatis核心配置文件中,添加
查询结果:
2.对象参数:对象的属性名要和参数占位符名称一致
3.Map参数
动态SQL查询
1.多条件动态查询
if的使用 test里面写条件表达式
解决使用if标签出现的问题:第一个条件不需要逻辑运算符and或or
1.恒等式 where 1=1
where后写1=1就是为了使下面的语句符合语法规则
2.< where >标签来替换where关键字
2.单条件动态查询
添加
1.常规添加
接口方法:
SQL语句:
执行代码:
** 2.主键返回 **
在数据添加完成后,需要获取插入数据库数据的主键的值
例如:
1.添加订单
2.添加订单项,订单项中需要设置所属订单的id
修改
1.修改全部字段
SQL映射
接口方法:
2.修改动态字段
SQL映射文件:
删除
1.删除一个
接口方法
SQL
测试:
2.批量删除
接口方法:
注意:mybatis会将数组参数封装为一个Map集合
key:array
value:数组
SQL文件:
这里collection的值如果写ids,则要使用@Param注解
否则collection=array
实现类: