JavaWeb学习(二)----Maven&Mybatis

发布于:2022-10-17 ⋅ 阅读:(963) ⋅ 点赞:(0)

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.转义字符
	小于号<   &lt;
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

实现类:
在这里插入图片描述

参数传递

在这里插入图片描述

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到