JavaWEB04-Maven&Mybatis
今日内容
- `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
生命周期
生命周期划分为三套
clean
:清理生命周期。default
:默认生命周期。核心工作,包含编译、测试、打包、安装等site
:站点生命周期。产生报告、发布站点等。同一生命周期内,执行后面的命令时,会自动执行该命令前面的所有命令
上述生命周期都是常用的,不常用的有很多。
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点。
如果部分或全部依赖报红:
- 使用第二种方式配置私服,并重新打开项目
- 把所有报红的依赖坐标全部剪切掉,挨个贴回来
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
快速入门步骤
配置依赖
mybatis
、MySQL
数据库驱动、单元测试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 依赖或插件爆红
两种情况:
- 在教室,配置我的私服,然后重启
idea
- 不在教室,保证自己网络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 模块中文件夹失效
问题描述
模块中
src
、java
、resources
文件夹编程灰色,失效。解决方式
两种解决方式任选其一:
右击模块中对应的文件夹,选择
mark directory as
Sources Root
:源代码的Java
目录Test Sources Root
:测试代码的Java
目录Resources Root
:源代码的配置文件目录Test Resources Root
:测试代码的配置文件目录打开
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的更多相关文章
- Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建(转)
这篇文章主要讲解使用eclipse对Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建过程,包括里面步骤和里面的配置文件如何配置等等都会详细说明. 如果还没有搭建好环境( ...
- 详解intellij idea搭建SSM框架(spring+maven+mybatis+mysql+junit)(下)
在上一篇(详解intellij idea 搭建SSM框架(spring+maven+mybatis+mysql+junit)(上))博文中已经介绍了关于SSM框架的各种基础配置,(对于SSM配置不熟悉 ...
- eclipse下SpringMVC+Maven+Mybatis+MySQL项目搭建
这篇文章主要讲解使用eclipse对Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建过程,包括里面步骤和里面的配置文件如何配置等等都会详细说明. 接下来马上进入项目搭建 ...
- IDEA Maven Mybatis generator 自动生成代码
IDEA Maven Mybatis generator 自动生成代码 一.安装配置maven以及在Idea中配置maven 安装过程步骤可以看上面的博文,里面介绍得很详细. 二.建数据表 DROP ...
- Maven+Mybatis+Spring+SpringMVC实现分页查询
转载:http://www.cnblogs.com/zhangtan/p/5846955.html 一.项目搭建 关于项目搭建,小宝鸽以前写过一篇Spirng+SpringMVC+Maven+Myba ...
- IDEA Maven Mybatis generator 自动生成代码(实例讲解)(转)
IDEA Maven Mybatis generator 自动生成代码(实例讲解) MyBatis Generator • 简称MBG,是一个专门为MyBatis框架使用者定制的代码生成器,可以快速的 ...
- Maven+Mybatis+Spring+SpringMVC实现分页查询(附源代码)
以下小宝鸽将分享一篇Mybatis分页功能的博文,以下将给出具体的步骤.跟着博主的节奏肯定能实现.另外最后还会附上整个project的源代码.假设是没有使用过maven的猿友可自行下载相关的jar包就 ...
- java web开发入门十一(idea maven mybatis自动代码生成)基于intellig idea
6.idea maven mybatis逆向工程(代码生成器) 1.配置pom.xml 在plugins标签下添加mybatis-generator-maven-plugin <plugin&g ...
- 整合spring roo,maven,mybatis,spring-flex,blazeds,mysql
1. 下载spring roo,设置环境变量ROO_HOME,和path,classpath. 使用CMD命令行找到工作区间,新建工程目录转到工程目录:mkdir ten-minutes $ ...
- spring+springmvc+maven+mybatis整合
jar包依赖:网址search.maven.org 1.spring :spring-core 2. myhabits:myhabits 3.整合spring和myhabits: ...
随机推荐
- PTA刷题笔记
PTA刷题记录 仓库地址: https://github.com/Haorical/Code/tree/master/PTA/GPLT 两周之内刷完GPLT L2和L3的题,持续更新,包括AK代码,坑 ...
- 论文解读(SUBG-CON)《Sub-graph Contrast for Scalable Self-Supervised Graph Representation Learning》
论文信息 论文标题:Sub-graph Contrast for Scalable Self-Supervised Graph Representation Learning论文作者:Yizhu Ji ...
- 【Java分享客栈】一文搞定京东零售开源的AsyncTool,彻底解决异步编排问题。
一.前言 本章主要是承接上一篇讲CompletableFuture的文章,想了解的可以先去看看案例: https://juejin.cn/post/7091132240574283813 Comple ...
- 流量录制回放工具jvm-sandbox-repeater入门篇——服务部署
趋于当前技术不断更新.产品功能多元化之下,流量回放的热度也是越来越高. 在前一段时间,测试团队也提到阿里开源的流量回放工具 jvm-sandbox-repeater 我个人就先尝试一下,期间还是遇到一 ...
- 面试简历书写、Flask框架介绍与快速使用、Flask演示登录页面、用户信息页面案例
今日内容概要 面试简历编写 Flask框架介绍与安装 内容详细 1.面试简历编写 # 千万不要几个小时把简历凑出来 几天到一周 # 有没有面试机会,取决于简历写得怎么样 简历写好是第一步 # 投简历的 ...
- docker 安装和错误解决方案
安装 x64 架构 install docker switch mirror docker desktop docker run -d -p 80:80 docker/getting-started ...
- 『忘了再学』Shell基础 — 15、环境变量(三)
目录 1.LANG语系变量介绍 2.如何查看Linux中支持的语系 3.查看当前系统的语系 4.总结 提示: 在Linux系统中,环境变量分为两种.一种是用户自定义的环境变量,另一种是系统自带的环境变 ...
- elasticsearch-spark的用法
Hadoop允许Elasticsearch在Spark中以两种方式使用:通过自2.1以来的原生RDD支持,或者通过自2.0以来的Map/Reduce桥接器.从5.0版本开始,elasticsearch ...
- 【Unity Shader】syntax error: unexpected token 'struct' at line x 错误解决办法
以下代码处出现了syntax error: unexpected token 'struct' at line 33的错误 struct a2v { float4 vertex_position : ...
- C#和Java,究竟选哪个方向?我只说事实,你自己分析……
好久没到园子里面逛了,回来看了看,.NET有点式微呀?Java/Spring/Linux--比以前多了很多,为什么?博客园可是.NET的大本营了呀! 好吧,我承认,飞哥也动摇了,去年在ASP.NET的 ...