今日内容

  • `Maven`

    • Maven `Maven`概念&简介
    • Maven `Maven`安装配置
    • Maven `Maven`基本使用
    • Idea集成 `Idea`集成`Maven`
    • Maven `Maven`依赖管理
  • `Mybatis`
    • 概念
    • 快速入门
    • 核心配置文件

1. Maven概述

1.1 概念

Apache Maven是一个项目管理工具,有两个核心功能:依赖管理(jar包管理)、项目构建(操作维护项目);

上述两个功能的实现是通过一个POM(Project Object Model,项目对象模型)对象来实现,该对象对应的是一个pom.xml文件;

pom.xml是整个Maven项目中最核心最重要的文件。

1.2 作用

  • 统一项目结构:提供标准的、统一的项目结构
  • 依赖管理:方便快捷的管理项目依赖的资源(Jar包等),避免资源间的版本冲突
  • 项目构建:提供标准、跨平台的自动化项目构建方式(编译、运行、测试、打包、发布等)

1.3 目录结构

// java项目结构
/*
Java项目(模块)根目录
├── pom.xml 核心配置文件
└── src 源代码和测试代码目录
├── main 源代码目录
│   ├── java 源代码Java文件目录
│   └── resources 源代码配置文件目录
└── test 测试代码目录
├── java 测试代码Java文件目录
└── resources 测试代码配置文件目录
*/ // javaweb项目结构
/*
javaweb项目(模块)根目录
├── pom.xml 核心配置文件
└── src 源代码和测试代码目录
├── main 源代码目录
│   ├── java 源代码Java文件目录
│   ├── resources 源代码配置文件目录
│   └── webapp Web项目核心目录
│   └── WEB-INF Web项目安全目录(仅允许服务端访问)
│   └── web.xml Web项目核心配置文件
└── test 测试代码目录
├── java 测试代码Java文件目录
└── resources 测试代码配置文件目录
*/

1.4 相关概念:仓库

存储jar包的仓库

1.5 相关概念:坐标

可以让Maven通过坐标快速的定位到某个jar文件,获取并供我们使用。

站点https://mvnrepository.com/

快速就获取坐标:Bing搜索maven jar包名字

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
  • 概念

    Maven中坐标是资源(jar包)的唯一标识

    使用坐标可以定义项目或引入项目中需要的依赖

  • Maven坐标的主要组成

    groupId:组织ID。当前项目或jar包隶属的组织名称,通常是域名反写;

    artifactId:名称。当前项目/jar包名称,通常是模块名称;

    version:版本号。当前项目/jar包的版本号。

2 安装和配置

2.1 安装

  • 解压

    Maven是绿色免安装版本,解压可用。

    建议所有的开发软件都放在同一个目录(不能有中文、空格及其他特殊字符)

  • 配置Path

    Maven运行需要依赖Java环境,所以要确保已经配置了JAVA_HOME 环境变量

    配置MAVAEN_HOME,值为Maven安装的根目录

    配置path,引用到刚才的Maven根目录,值为:%MAVAEN_HOME%\bin

  • 检测是否成功

    重新打开命令行窗口,键入mvn -version,如果有非错误提示,说明成功。

2.2 配置

仓库的配置只需要修改一个配置文件即可:maven安装目录下面的主配置文件conf/settings.xml

  • 本地仓库

    解压仓库的压缩包到某个目录,然后在settings.xml中配置如下内容:

    解压我分享的仓库到下面配置的位置(本地仓库)中

    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <!-- localRepository
    | The path to the local repository maven will use to store artifacts.
    | 指定本地电脑保存jar包的路径,也就是本地仓库的路径
    |
    | Default: ${user.home}/.m2/repository
    | 如未指定,默认使用 用户目录/.m2/repository,该位置一般是在C盘,不推荐使用。
    重点是下面的内容
    -->
    <localRepository>D:\Develop\Repository\Maven_Repository</localRepository>

    注:

    • 配置好之后,在idea整合maven时,需要重新建立索引,才能让idea有提示。(仅限于先使用idea集成了maven,后解压更新了仓库的情况)。
  • 中央仓库镜像

    配置阿里云对中央仓库的镜像,下载速度快。

    注意放在被注释的mirrors下面,小心层级关系

    <mirrors>
    <!-- 私服的配置方式一:所有的项目默认连接私服获取jar包,连接失败之后再连aliyun -->
    <mirror>
    <!-- 本镜像的id,与这里配置的其他镜像id不一样即可 -->
    <id>nexus</id>
    <!-- central表示镜像的是中央仓库 -->
    <mirrorOf>*</mirrorOf>
    <!-- 镜像路径,固定不变 -->
    <url>http://192.168.21.200:8081/repository/maven-public/</url>
    </mirror>
    <mirror>
    <!-- 本镜像的id,与这里配置的其他镜像id不一样即可 -->
    <id>alimaven</id>
    <!-- central表示镜像的是中央仓库 -->
    <mirrorOf>central</mirrorOf>
    <!-- 名称,可以省略 -->
    <name>aliyun maven</name>
    <!-- 镜像路径,固定不变 -->
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    </mirror>
    </mirrors>
  • 私服的配置方式二:某个项目的pom.xml文件配置

    在每个/某个模块的pom.xml文件中配置如下内容,粘贴在标签下即可

  • <!-- 方式二:为当前模块配置私服,本内容复制到pom.xml的project标签下 -->
    <repositories>
    <repository>
    <!-- 依赖仓库id,不可重复。repositories可以配置多个仓库,如果ID重复后面配置会覆盖之前的配置 -->
    <id>dependencies_Repositories</id>
    <!-- 私服仓库地址,即nexus仓库组的地址 -->
    <url>http://192.168.21.200:8081/repository/maven-public/</url> <!-- 是否下载releases构件 -->
    <releases>
    <enabled>true</enabled>
    </releases> <!-- 是否下载snapshots构件 -->
    <snapshots>
    <enabled>true</enabled>
    </snapshots>
    </repository>
    </repositories>
    <!-- 配置插件从私服下载 -->
    <pluginRepositories>
    <pluginRepository>
    <id>plugins_Repositories</id>
    <url>http://192.168.21.200:8081/repository/maven-public/</url>
    <!-- 是否下载release版本构件 -->
    <releases>
    <enabled>true</enabled>
    </releases>
    <!-- 是否下载snapshots版本构件 -->
    <snapshots>
    <enabled>true</enabled>
    </snapshots>
    </pluginRepository>
    </pluginRepositories>

3. 常见命令&生命周期

3.1 准备工作

Maven项目中最重要的是文件是pom.xml文件,我们先使用编辑好了该文件。

学习Maven常见命令和生命周期,我们就先使用一个配置好了pom.xml文件的可用的Maven项目。

有关pom.xml文件的内容以及maven项目的创建,我们稍后学习。

项目见:今天课程代码文件夹《maven-project》

3.2 常见命令

在模块根目录打开命令行,键入如下命令实现相应的功能。

每个命令都依赖于一到多个插件,首次执行该命令时会先从远程仓库下载插件对应的jar包到本次仓库,再通过下载好的jar包实现相应的命令。

  • mvn clean:清理命令,删除该模块的target目录

  • mvn compile:编译命令,把src目录所有内容编译到同级的target目录中

  • mvn package:打包命令。目前打成jar包,存入target根目录。

  • mvn test:测试命令。自动执行项目中测试代码,并生成测试报告。

  • mvn install:安装命令。自动把打包好的jar包,并保存到本地仓库。

4.3 生命周期

maven生命周期

  1. 生命周期划分为三套

    clean:清理生命周期。

    default:默认生命周期。核心工作,包含编译、测试、打包、安装等

    site:站点生命周期。产生报告、发布站点等。

  2. 同一生命周期内,执行后面的命令时,会自动执行该命令前面的所有命令

  3. 上述生命周期都是常用的,不常用的有很多。

4. Idea集成Maven

4.1 Idea集成Maven

4.2 新建maven管理的java模块

  • 创建模块,选择Maven,点击Next

  • 填写模块名称,坐标信息,点击finish,创建完成

    创建好的项目目录结构如下:

  • 编写 HelloWorld,并运行

4.3 导入maven管理的模块

建议将模块复制到当前项目下,然后再导入,避免因为路径带来不必要的麻烦。

  • 选择右侧Maven面板,点击 + 号

  • 选中对应项目的pom.xml文件,双击即可

  • 如果没有Maven面板,选择

    View --> Appearance --> Tool Window Bars

可以通过下图所示进行命令的操作:

4.4 配置 Maven-Helper 插件

为了方便直接在模块上右击,使用maven相关命令,可以安装Maven helper插件。

  • 选择 IDEA中 File --> Settings

  • 选择 Plugins

  • 搜索 Maven,选择第一个 Maven Helper,点击Install安装,弹出面板中点击Accept

  • 重启 IDEA

安装完该插件后可以通过 选中项目右键进行相关命令操作,如下图所示:

5 依赖

依赖就是之前说的jar包,也可以是一个自己写的项目。

Maven两大功能之一,就是强大的依赖管理。只需要配置简单的坐标,就可以完成依赖的导入。

5.1 配置

pom.xml文件中,通过dependencies的子标签dependency

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>

配置成功后,需要重新当前项目maven可以动将对应版本的jar包导入到当前项目中。

可以每次修改后手动导入

也可以开启自动导入,设置见

如果依赖上报红线,可以通过配置私服解决。如果配置私服无效,看4.3中第6点。

如果部分或全部依赖报红:

  1. 使用第二种方式配置私服,并重新打开项目
  2. 把所有报红的依赖坐标全部剪切掉,挨个贴回来

5.2 依赖范围

通过设置坐标的依赖范围(scope),可以设置 对应jar包的作用范围:编译环境、测试环境、运行环境。

如下所示给 junit 依赖通过 scope 标签指定依赖的作用范围。 那么这个依赖就只能作用在测试环境,其他环境下不能使用。

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
  • Scope取值如下
依赖范围 编译classpath 测试classpath 运行classpath 例子
compile Y Y Y logback
test - Y - Junit
provided Y Y - servlet-api
runtime - Y Y jdbc驱动
system Y Y - 存储在本地的jar包
import 引入DependencyManagement
  • compile :作用于编译环境、测试环境、运行环境。此为默认值,也是绝大多数依赖要配置的范围。
  • test : 作用于测试环境。典型的就是Junit坐标,以后使用Junit时,都会将scope指定为该值
  • provided :作用于编译环境、测试环境。运行环境无效。详见下面代码。
  • runtime : 作用于测试环境、运行环境。jdbc驱动一般将 scope 设置为该值,当然不设置也没有任何问题

注意:

  • 如果引入坐标不指定 scope 标签时,默认就是 compile 值。以后大部分jar包都是使用默认值。

只有下面三个依赖需要指定为provided

<!--
下面三个scope需要配置provided
-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
<scope>provided</scope>
</dependency> <!-- 下面一个scope可以配置test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- 其他不用配置,即使用默认值compile -->

6. Mybatis

6.1 前置知识

6.1.1 框架和工具类

  • 工具类

    • 对程序中一小段代码的封装。项目中大多数代码还是需要我们写。
  • 框架
    • 通俗理解框架
    • 可以看做一个半成品的软件/项目。使用框架开发项目,项目中半数以上代码就不需要 我们编写了。
    • 我们一般需要配置(大多数框架都是重配置轻编码的)+少量编码,就可完成项目中的需求。
    • 框架的目的 就是为了简化编码eg:Mybatis

      我们在学习完Mybatis之后,dao层会很简单。你只需要写一个dao接口,然后写一个SQL语句,dao层就已经写完了。
  • 学习步骤
    • 这个框架能干什么?
    • 导包+配置
    • 框架少量的API,少量编码

6.1.2 ORM

  • Object Relational Mapping 对象关系映射的思想

  • 对象 - Java中的对象 关系-关系型数据库中表的记录 映射 - 一对一关联起来

  • java项目中的每一个实体类,对应数据库中的一个

    java类中的属性,对应数据库表中的字段

    java类中的一个实体对象,对应一个数据表中的一条记录

  • 全自动ORM框架:hibernate

    通过操作实体对象,就可以完成对数据库表中记录的操作。复杂业务性能低下,不可定制,学习成本高。

  • 半自动的ORM框架:Mybatis,ibatis

    基于ORM,但是SQL语句需要我们自己编写。自己优化SQL,可定制性强,效率高。

6.1.3Mybatis&原生JDBC

  • 原生JDBC缺点

    硬编码

    操作繁琐

    大量重复模板代码

  • 原生jdbc

    • 注册驱动,设置连接参数
    • 获取连接
    • 获取执行对象
    • 设置SQL参数并执行SQL语句
    • 封装结果集并封装成实体对象
    • 释放资源
    • 相同的内容已经抽取到工具类中(上述删除线标识的步骤)

    • 模板化(步骤不变,部分步骤相同,上述加粗的内容)的操作,也是可以抽取封装的。

      但是相同的步骤中又有不同的地方,不同的地方如果也要实现解耦,需要通过配置来实现

  • Mybatis解决方案

    • 连接复用:使用数据库连接池初始化并管理连接
    • 解耦:将SQL语句和设置到SQL中的参数抽取到xml配置文件中
    • 自动封装:通过反射内省等技术,实现查询结果集字段实体属性自动映射并赋值
  • Mybatis框架抽取后的样子

6.1.4 Mybatis简介

  • 是一个数据持久层(DAO)框架,封装共性内容让使用者只关注SQL本身。结合了ORM思想,是一个ORM半自动的框架。
  • 使用Mybatis之后,我们只需要定义一个Dao层接口+存储SQL的配置文件Mybatis映射配置文件)+ Mybatis核心配置文件,就可以完成Dao层内容。

6.2 Mybatis快速入门

6.2.1 Mybatis快速入门步骤

  • 配置依赖

    • mybatisMySQL数据库驱动、单元测试Junit
    • 日志相关
  • 编写Mybatis核心配置文件:mybatis-config.xml

    • 连接数据库四要素
    • <mapper>标签中映射文件路径不是./ 建议复制,不要手敲
  • 编写POJO类和Dao层接口,初始化数据库表及数据

  • 编写映射配置文件:UserDao.xml,在映射文件中编写SQL语句

  • 测试

  • 小经验

    • 直接生成mybatis的两类xml文件
    • Mybatis映射配置文件和接口之间相互跳转

依赖坐标

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.itheima</groupId>
<artifactId>web_day04_mybatis01_02_quickstart</artifactId>
<version>1.0-SNAPSHOT</version> <properties>
<!-- 明确编码为U8 -->
<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
<!-- 明确maven使用jdk1.8编译该模块 -->
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties> <!-- 配置依赖 -->
<dependencies>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency> <!-- mysql数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.48</version>
</dependency> <!-- 单元测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<!--<scope>test</scope>-->
</dependency> <!-- druid可以不用,因为Mybatis内置有连接池 --> <!-- logback -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.20</version>
</dependency>
<!-- 添加logback-classic依赖 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<!-- 添加logback-core依赖 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.3</version>
</dependency> </dependencies> <!-- 为当前模块配置私服 -->
<repositories>
<repository>
<!-- 依赖仓库id,不可重复。repositories可以配置多个仓库,如果ID重复后面配置会覆盖之前的配置 -->
<id>dependencies_Repositories</id>
<!-- 私服仓库地址,即nexus仓库组的地址 -->
<url>http://192.168.21.200:8081/repository/maven-public/</url> <!-- 是否下载releases构件 -->
<releases>
<enabled>true</enabled>
</releases> <!-- 是否下载snapshots构件 -->
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<!-- 配置插件从私服下载 -->
<pluginRepositories>
<pluginRepository>
<id>plugins_Repositories</id>
<url>http://192.168.21.200:8081/repository/maven-public/</url>
<!-- 是否下载release版本构件 -->
<releases>
<enabled>true</enabled>
</releases>
<!-- 是否下载snapshots版本构件 -->
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</project>

核心配置文件

<?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="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///web22_day04_mybatis"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment> </environments>
<!-- 加载映射配置文件,xxMapper,本质上就是之前学习的xxxDao -->
<mappers>
<mapper resource="com/cy/dao/UserDao.xml"/>
</mappers>
</configuration>

映射配置文件

<?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">
<!--
目前可以把这个映射配置文件当做是接口的实现类,但是有如下要求:
1. 接口和映射配置文件要放在相同的包下,编译之后会放在一起
2. 映射配置文件名需要和接口名一致
3. namespace(命名空间)的值需要是接口的全限定类名
-->
<mapper namespace="com.cy.dao.UserDao">
<!--public List<User> findAll();-->
<!--
在映射配置文件中,通过一个个的statement标签,”实现“接口的抽象方法
select update delete insert标签都是statement标签 标签的属性
id,唯一标识,值为接口对应的方法名
resultType,值为对应方法的返回值类型/返回集合的元素类型,需要写全类名
parameterType,值为对应方法的参数类型,一般会省略
标签体中书写SQL语句。
-->
<select id="findAll" resultType="com.cy.pojo.User" >
select * from tb_user;
</select> </mapper>

实体类User.java

package com.cy.pojo;

/**
* @Author Vsunks.v
* @Blog blog.sunxiaowei.net
* @Description: User实体类
*/
public class User {
private Integer id;
private String username;
private String password;
private Character gender;
private String addr; public User(Integer id, String username, String password, Character gender, String addr) {
this.id = id;
this.username = username;
this.password = password;
this.gender = gender;
this.addr = addr;
} public User() {
} @Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", gender=" + gender +
", addr='" + addr + '\'' +
'}';
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public Character getGender() {
return gender;
} public void setGender(Character gender) {
this.gender = gender;
} public String getAddr() {
return addr;
} public void setAddr(String addr) {
this.addr = addr;
}
}

接口UserDao.java

package com.cy.dao;

/**
* @Author Vsunks.v
* @Blog blog.sunxiaowei.net
* @Description:
*/
public interface UserDao {
// 查询所有
public List<User> findAll();
}

测试类MybatisTest.ava

package com.cy;
/**
* @Author Vsunks.v
* @Blog blog.sunxiaowei.net
* @Description:
*/
public class MybatisDemo { @Test
public void test01() throws IOException {
// 指定核心配置文件的位置和名称
String resource = "mybatis-config.xml"; // Mybatis提供的加载配置文件功能
InputStream inputStream = Resources.getResourceAsStream(resource); // 读取配置文件,创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); // JDK7新特性,try with resources
/**
* 在try的小括号中建立连接,不需要自己释放资源
*/ // session 会话 理解成 数据库连接Connection
try (SqlSession session = sqlSessionFactory.openSession()) { // ****************************************
// 以上代码,基本上不需要我们写。因为Spring整合Mybatis之后会消失 // 利用反射/动态代理,创建一个指定接口的子类对象
UserDao userDao = session.getMapper(UserDao.class); // 使用子类对象调用实现好的findAll方法
List<User> users = userDao.findAll(); // 打印所有数据
System.out.println(users); // 这里我们不需要自己手动释放资源,try...会帮我们做。
//session.close();
}
}
}

X. Idea中使用Maven注意点

x.1 导入导出注意事项

导出:把模块文件夹复制出来就行,建议删除target

导入:把模块文件夹复制到当前项目文件夹下,然后使用idea的右侧maven窗口添加,添加时选择对应的pom.xml即可;批量添加,如需要按住Ctrl ,选择多个pom.xml文件即可。

x.2 依赖自动导入

当修改了当前模块的pom.xml后,项目需要重新导入才能是修改生效;这个时候如果没有开启自动导入,会在idea右下角弹出提示:

此时可以选择import changes重新导入使本次修改生效;

也可以点击右侧Enable Auto-import开启自动导入,之后所有的修改都会自动重新导入以使其生效。

  • idea2019中设置

  • idea2018中设置

x.3 依赖或插件爆红

两种情况:

  1. 在教室,配置我的私服,然后重启idea
  2. 不在教室,保证自己网络OK的前提下,reimport存在爆红的模块。

如果在下载依赖报错后,才配置了私服,会造成不请求私服的情况。

解决方法:在pom.xml中使用第二种方式配置了私服后(见3.2中私服配置方式2),将当前project关闭,重新打开;重新打开后的项目会重新读取pom.xml文件,识别其中配置的私服。

如果还爆红,把所有报红的依赖坐标全部剪切掉,挨个贴回来

x.4 导入依赖卡finished

  • 问题描述

    如果在导入依赖时,长时间卡在finished,是因为idea为maven分配的内存不足,调大即可。问题如下图:

  • 解决办法

    setting ==> Buid ==> Build Tools ==> Maven ==> Importing ==> VM options for importer ,修改其值为

    表示为maven分配内存,最小1G,最大2G

    -Xms1024m -Xmx2048m

x.5 模块中文件夹失效

  • 问题描述

    模块中srcjavaresources文件夹编程灰色,失效。

  • 解决方式

    两种解决方式任选其一:

    1. 右击模块中对应的文件夹,选择 mark directory as

      Sources Root:源代码的Java目录

      Test Sources Root:测试代码的Java目录

      Resources Root:源代码的配置文件目录

      Test Resources Root:测试代码的配置文件目录

    2. 打开project structure,选中模块-->source,点击每个文件夹,逐个点击修改

x.6 乱码

  • 问题描述

    控制台乱码

  • 解决问题

    设置使用内置骨架和编码(避免控制台/页面乱码)

    配置位置:settings–>buildxxx–>Build Tools –> Maven –> Runner –> VM Options中配置如下内容:

    -DarchetypeCatalog=internal -Dfile.encoding=GBK

    或者

    -DarchetypeCatalog=internal -Dfile.encoding=utf-8

JavaWEB04-Maven&Mybatis的更多相关文章

  1. Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建(转)

    这篇文章主要讲解使用eclipse对Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建过程,包括里面步骤和里面的配置文件如何配置等等都会详细说明. 如果还没有搭建好环境( ...

  2. 详解intellij idea搭建SSM框架(spring+maven+mybatis+mysql+junit)(下)

    在上一篇(详解intellij idea 搭建SSM框架(spring+maven+mybatis+mysql+junit)(上))博文中已经介绍了关于SSM框架的各种基础配置,(对于SSM配置不熟悉 ...

  3. eclipse下SpringMVC+Maven+Mybatis+MySQL项目搭建

    这篇文章主要讲解使用eclipse对Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建过程,包括里面步骤和里面的配置文件如何配置等等都会详细说明. 接下来马上进入项目搭建 ...

  4. IDEA Maven Mybatis generator 自动生成代码

    IDEA Maven Mybatis generator 自动生成代码 一.安装配置maven以及在Idea中配置maven 安装过程步骤可以看上面的博文,里面介绍得很详细. 二.建数据表 DROP ...

  5. Maven+Mybatis+Spring+SpringMVC实现分页查询

    转载:http://www.cnblogs.com/zhangtan/p/5846955.html 一.项目搭建 关于项目搭建,小宝鸽以前写过一篇Spirng+SpringMVC+Maven+Myba ...

  6. IDEA Maven Mybatis generator 自动生成代码(实例讲解)(转)

    IDEA Maven Mybatis generator 自动生成代码(实例讲解) MyBatis Generator • 简称MBG,是一个专门为MyBatis框架使用者定制的代码生成器,可以快速的 ...

  7. Maven+Mybatis+Spring+SpringMVC实现分页查询(附源代码)

    以下小宝鸽将分享一篇Mybatis分页功能的博文,以下将给出具体的步骤.跟着博主的节奏肯定能实现.另外最后还会附上整个project的源代码.假设是没有使用过maven的猿友可自行下载相关的jar包就 ...

  8. java web开发入门十一(idea maven mybatis自动代码生成)基于intellig idea

    6.idea maven mybatis逆向工程(代码生成器) 1.配置pom.xml 在plugins标签下添加mybatis-generator-maven-plugin <plugin&g ...

  9. 整合spring roo,maven,mybatis,spring-flex,blazeds,mysql

    1.      下载spring roo,设置环境变量ROO_HOME,和path,classpath. 使用CMD命令行找到工作区间,新建工程目录转到工程目录:mkdir ten-minutes $ ...

  10. spring+springmvc+maven+mybatis整合

    jar包依赖:网址search.maven.org 1.spring :spring-core            2. myhabits:myhabits 3.整合spring和myhabits: ...

随机推荐

  1. Excel文件读写操作1(xls)

    一.Python-Excel常用的库:xlrd(read).xlwt(write).xlutils.openpyxl 1.xlrd  读取Excel文件,支持 .xls 和 .xlsx 格式. 2.x ...

  2. Linux-进程工具

    1.进程树 pstree pstree 可以用来显示进程的父子关系,以树形结构显示 格式: pstree [OPTION] [ PID | USER ] 常用选项: -p 显示PID -T 不显示线程 ...

  3. 交互式 .Net

    名词解析 1. 交互式 交互式是指输入代码后可直接运行该代码,然后持续输入运行代码. 2. 交互式 .Net .Net 是一种编译型语言,不像 python 这类的脚本型语言,可以边输入代码边运行结果 ...

  4. JUC自定义线程池练习

    JUC自定义线程池练习 首先上面该线程池的大致流程 自定义阻塞队列 首先定义一个双向的队列和锁一定两个等待的condition 本类用lock来控制多线程下的流程执行 take和push方法就是死等, ...

  5. MPLS L3 跨域 optionB 配置

    mpls跨域optionB optionB的核心思想是私网路由传递过程是 PE-ASBR1-ASBR2-PE2 在传递过程中私网标签发生了变化(由ASBR重新分配了私网标签),而在数据平面(不考虑PH ...

  6. linux篇-centos7 安装cacti

    1 cacti运行环境准备 cacti需要php+apache+mysql+snmp+RRDTool,以及cacti本身.cacti本体是用php开发的网站,通过snmp对远端设备信息进行采集.apa ...

  7. 为什么Java有了synchronized之后还造了Lock锁这个轮子?

    众所周知,synchronized和Lock锁是java并发变成中两大利器,可以用来解决线程安全的问题.但是为什么Java有了synchronized之后还是提供了Lock接口这个api,难道仅仅只是 ...

  8. js颜色调试器

    1 /* ColorTestViewer 颜色调试器 2 3 attribute: 4 onchange: Function; //颜色改变回调; 默认null 5 6 //以下属性不建议直接修改 7 ...

  9. vue大型电商项目尚品汇(前台篇)day04

    这几天一直都在做项目,只是没有上传上来,即将把前台项目完结了.现在开始更新整个前台的部分 一.面包屑处理 1.分类操作 点击三级联动进入搜索产生面包屑,直接取参数中的name即可 点击x怎么干掉这个面 ...

  10. [第18届 科大讯飞杯 J] 能到达吗

    能到达吗 题目链接:牛客5278 J 能到达吗 Description 给定一个 \(n\times m\) 的地图,地图的左上角为 \((1, 1)\) ,右下角为 \((n,m)\). 地图上有 ...