• JavaWeb、Maven与Mybatis框架


    目录

    一、Maven

    1、Maven简介

    2、Maven的特点

    2.1、Maven提供了一套标准化的的项目结构

    2.2、提供了一套标准化构建流程

    2.3、提供了一套依赖管理机制

            3、安装Maven

    4、Maven常用命令

    5、Maven生命周期

    6、在IDEA中配置Maven

    6.1、配置Maven环境

     6.2、了解Maven坐标​编辑

     6.3、创建Maven项目

    6.4、导入Maven项目

    7、依赖管理

     7.1、导入依赖

     7.2、依赖范围

    二、MyBatis

    1、Mybatis定义

    2、JDBC的缺点

    3、Mybatis简化JDBC

    4、Mybatis快速入门

     1、创建user表,添加数据

     2、创建Maven模块,导入坐标

     3、编写Mybatis核心配置文件 mybatis-config.xml

     4、编写SQL映射文件:SQL语句代码UserMapper.xml

     5、创建User类

     6、编写主程序

     5、IDEA集成操作Navicat

     6、使用Mapper代理方式完成入门案例

     1、定义同名的Mapper接口,并放置在同一目录下

     2、设置SQL映射文件的namespace为接口的全限定名

     3、在Mapper接口中定义方法

    4、编码

    7、Mybatis核心配置文件详解

    8、Mybatis实战案例(使用配置文件实现增删改查)

    1、查询所有数据

    2、查看商品详情

    3、多条件查询

            方法一:散装参数

            方法二:传入对象参数

            方法三:map集合做参数(HashMap)

    4、多条件动态查询

    5、单条件动态查询

     6、添加数据

            直接添加数据

             添加数据--主键返回

    7、修改数据

             修改全部字段

             修改动态字段

    8、删除数据

            删除一个

            批量删除

    9、Mybatis使用注解完成增删改查


    一、Maven

    1、Maven简介

    pom 就是 project object moudle 项目对象模型

    配置完pom.xml文件之后,相对应的jar包就会出现在项目中,不需要再手动导包,而实际在maven中有一个本地仓库,仓库中存放有相对应的jar包,它只是通过本地仓库将jar包导入项目。

     由于中央仓库是由maven团队维护,由于仓库位置在国外,在国内访问速度较慢,所以一般公司会搭建自己的私服,将中央仓库的jar包同步下来,通过访问私服速度更快,中央仓库中存放的都是开源的jar包,带版权的jar只能在私服中

    仓库工作流程:

    项目1中需要某个jar包,向本地仓库申请,本地仓库中没有再向中央仓库中申请,并将相对应的jar包保存在本地仓库,然后导入项目1中,这时项目2需要用到该jar包时直接向本地仓库申请后导入。但如果架设了私服,本地仓库会先向私服请求,私服没有才会向中央仓库请求,然后将jar包下载到私服,再保存到本地仓库。

    2、Maven的特点

    2.1、Maven提供了一套标准化的的项目结构

    2.2、提供了一套标准化构建流程

    2.3、提供了一套依赖管理机制

     maven通过核心配置文件直接导包,不需要再下载后右键导包。

    3、安装Maven

    在setting文件中指定本地仓库

    <localRepository>D:\2ProgramTool\Intellij idea\apache\maven cangkulocalRepository>

    4、Maven常用命令

    compile编译,将代码编译成 字节码文件,生成目标文件target文件

    clean清理,将目标文件删除

    test测试,执行test文件夹下的测试代码,输出测试结果

    package打包,将该maven项目打包成jar文件

    install安装,将该maven项目的jar包下载进本地仓库

    使用Maven可以将项目打包!!

     5、Maven生命周期

    Maven对项目构建的生命周期分为3套 :clean、default、site

    6、在IDEA中配置Maven

    6.1、配置Maven环境

     6.2、了解Maven坐标

     6.3、创建Maven项目

    6.4、导入Maven项目

     7、依赖管理

            7.1、导入依赖

     

    1. <dependencies>
    2. <dependency>
    3. <groupId>mysqlgroupId>
    4. <artifactId>mysql-connector-javaartifactId>
    5. <version>5.1.34version>
    6. dependency>
    7. <dependency>
    8. <groupId>com.alibabagroupId>
    9. <artifactId>druidartifactId>
    10. <version>1.1.12version>
    11. dependency>
    12. dependencies>

             7.2、依赖范围

     运行环境不存在说明这个依赖不会存在打包好的jar包中。

    二、MyBatis

    1、Mybatis定义

     与数据库进行操作的代码称为持久层。三层框架:表现层,业务层,持久层 -> 前端、后端、数据库

    2、JDBC的缺点

    3、Mybatis简化JDBC

    将数据库连接和数据库操作都写在依赖中

    4、Mybatis快速入门

    •  1、创建user表,添加数据

    1. CREATE DATABASE mybatis;
    2. USE mybatis;
    3. DROP TABLE IF EXISTS tb_user;
    4. CREATE TABLE tb_user(
    5. id INT PRIMARY KEY AUTO_INCREMENT,
    6. username VARCHAR(10),
    7. password VARCHAR(10),
    8. gender CHAR(1),
    9. addr VARCHAR(30)
    10. );
    11. INSERT INTO tb_user(username,password,gender,addr)
    12. VALUES
    13. ('张三','12345','男','安徽'),
    14. ('李四','14335','男','芜湖'),
    15. ('王五','16745','女','南京');
    • 2、创建Maven模块,导入坐标

    • 3、编写Mybatis核心配置文件 mybatis-config.xml

    1. configuration
    2. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    3. "http://mybatis.org/dtd/mybatis-3-config.dtd">
    4. <configuration>
    5. <environments default="development">
    6. <environment id="development">
    7. <transactionManager type="JDBC"/>
    8. <dataSource type="POOLED">
    9. <property name="driver" value="com.mysql.jdbc.Driver"/>
    10. <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false"/>
    11. <property name="username" value="root"/>
    12. <property name="password" value="12345"/>
    13. dataSource>
    14. environment>
    15. environments>
    16. <mappers>
    17. <mapper resource="UserMapper.xml"/>
    18. mappers>
    19. configuration>
    •  4、编写SQL映射文件:SQL语句代码UserMapper.xml

    1. mapper
    2. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    4. <mapper namespace="test">
    5. <select id="selectAll" resultType="com.itheima.pojo.User">
    6. select * from tb_user;
    7. select>
    8. mapper>
    • 5、创建User类

    1. public class User {
    2. private Integer id;
    3. private String username;
    4. private String password;
    5. private String gender;
    6. private String addr;
    • 6、编写主程序

    1. public class MybatisDemo {
    2. public static void main(String[] args) throws Exception {
    3. //1、加载Mybatis核心配置文件,获取SqlSessionFactory
    4. String resource = "mybatis-config.xml";
    5. //Mybatis提供了资源加载类Resource,通过静态方法getResourceAsStream将字符串返回成一个字节输入流
    6. InputStream inputStream = Resources.getResourceAsStream(resource);
    7. //再通过SqlSessionFactoryBuilder对象的build方法获取字节输入流创建一个sqlSessionFactory
    8. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    9. //2、用sqlSessionFactory获取对应sqlSession对象
    10. SqlSession sqlSession = sqlSessionFactory.openSession();
    11. //3、执行sql
    12. //传入SQL语句的唯一标识需要跟上名称空间
    13. List users = sqlSession.selectList("test.selectAll");
    14. System.out.println(users);
    15. //4、释放资源
    16. sqlSession.close();
    17. }
    18. }

    5、IDEA集成操作Navicat

    点击右侧DataBase点击加号,创建一个数据库连接,再点击🖊进行SQL语法编写,代码会自动补全

    6、使用Mapper代理方式完成入门案例

    由于入门案例中的Mybatis简化后仍然存在硬编码问题,代码不灵活,所以使用Mapper代理方式进一步解决硬编码问题

    •  1、定义同名的Mapper接口,并放置在同一目录下

     右键单击resources新建文件,文件格式与Mapper接口的包名一致,中间用 / 做分隔符

    文件创建成功后,将Mapper映射文件拖入文件夹中

     编译Maven项目查看class文件,Mapper接口与映射文件在同一文件夹下

    •  2、设置SQL映射文件的namespace为接口的全限定名

    1. 包名.类名
    2. <mapper namespace="com.itheima.mapper.UserMapper">
    3. <select id="selectAll" resultType="com.itheima.pojo.User">
    4. select * from tb_user;
    5. select>
    6. mapper>
    •  3、在Mapper接口中定义方法

    1. public interface UserMapper {
    2. //定义一个与SQL映射文件id同名的方法
    3. //返回SQL映射文件中对应的返回值类型,还要根据SQL语义判断具体返回值类型
    4. List selectAll();
    5. }

     注意:由于Mapper映射文件位置已经更改,所以在Mybatis核心配置文件中修改映射文件的位置

    1. <mappers>
    2. <mapper resource="com/itheima/mapper/UserMapper.xml"/>
    3. mappers>
    • 4、编码

    1. //3、执行sql
    2. //获取UserMapper接口的代理对象
    3. UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    4. List userList = mapper.selectAll();
    5. System.out.println(userList);

    7、Mybatis核心配置文件详解

    1. configuration
    2. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    3. "http://mybatis.org/dtd/mybatis-3-config.dtd">
    4. <configuration>
    5. <typeAliases>
    6. <package name="com.itheima.pojo"/>
    7. typeAliases>
    8. <environments default="development">
    9. <environment id="development">
    10. <transactionManager type="JDBC"/>
    11. <dataSource type="POOLED">
    12. <property name="driver" value="com.mysql.jdbc.Driver"/>
    13. <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false"/>
    14. <property name="username" value="root"/>
    15. <property name="password" value="12345"/>
    16. dataSource>
    17. environment>
    18. environments>
    19. <mappers>
    20. <mapper resource="com/itheima/mapper/UserMapper.xml"/>
    21. mappers>
    22. configuration>

    8、Mybatis实战案例(使用配置文件实现增删改查)

    1、查询所有数据

     发现问题:在查询数据并对数据进行输出时发现,从数据库中查找的数据不能很好的封装成User类存储的值是null。

     由于数据库中列名为user_name,而User实体类中对应的用户名为userName,两者名称不同对应不上无法自动的封装数据。

    三种修改方式:

    1. <!--