## 一、安装Maven 在 Windows 系统中执行 Maven 需要先完成安装和配置。以下是详细步骤: #### 1、下载并安装 Maven 前往 Maven 官方网站 下载最新版本的二进制压缩包。 解压下载的文件到指定目录,例如:`D:\maven`。 #### 2、配置环境变量 设置 MAVEN_HOME 打开系统环境变量设置: 我的电脑 > 属性 > 高级系统设置 > 环境变量。 新建系统变量: 名称:`MAVEN_HOME` 值:`D:\maven\apache-maven-x.x.x`(Maven 解压目录)。 更新 Path 变量 编辑系统变量 Path,添加以下内容: `%MAVEN_HOME%\bin` 验证配置 打开命令提示符,输入以下命令检查 Maven 是否配置成功: `mvn -v` 如果显示 Maven 版本信息,则配置成功。 #### 3、配置本地仓库(可选) 打开 Maven 的核心配置文件 `settings.xml`(位于 conf 目录下)。 添加或修改 `` 标签,指定本地仓库路径,例如: ``` D:\maven\repository ``` #### 4、替换镜像源 在 settings.xml 文件中,找到 ``标签,添加阿里云镜像配置: ``` nexus-aliyun * Nexus aliyun http://maven.aliyun.com/nexus/content/groups/public ``` #### 5、执行命令 在项目目录下运行 Maven 命令,例如: `mvn clean install` 常用命令: `mvn clean`: 清理项目。 `mvn compile`: 编译项目。 `mvn package`: 打包项目。 ## 二、MyBatis框架导入 #### 1、安装MyBatis 新建一个Maven项目后,打开`pom.xml`文件,添加配置项 ```xml com.mysql mysql-connector-j 9.4.0 org.mybatis mybatis 3.5.19 ``` 执行`maven clear install`进行安装 #### 2、创建MyBatis项目配置 在项目`resources`文件夹内,新建一个`SqlMapConfig.xml`文件作为配置文件 ```xml ``` #### 3、创建持久层对象 在项目文件夹下创建`po`文件夹用来存放持久层对象,持久层对象类名、属性名、数据类型必须和数据库表名、字段名、字段类型一致,以`emp`表为例创建`Emp.java` ```java package com.doooog.mybatis.po; public class Emp { private Integer EMPno; private String ename; private String job; private Integer mgr; private String hiredate; private Double sal; private Double comm; private Integer DEPTno; public Emp() { } public Emp(Integer EMPno, String ename, String job, Integer mgr, String hiredate, Double sal, Double comm, Integer DEPTno) { this.EMPno = EMPno; this.ename = ename; this.job = job; this.mgr = mgr; this.hiredate = hiredate; this.sal = sal; this.comm = comm; this.DEPTno = DEPTno; } public Integer getDEPTno() { return DEPTno; } public void setDEPTno(Integer DEPTno) { this.DEPTno = DEPTno; } public Double getComm() { return comm; } public void setComm(Double comm) { this.comm = comm; } public Double getSal() { return sal; } public void setSal(Double sal) { this.sal = sal; } public String getHiredate() { return hiredate; } public void setHiredate(String hiredate) { this.hiredate = hiredate; } public Integer getMgr() { return mgr; } public void setMgr(Integer mgr) { this.mgr = mgr; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } public Integer getEMPno() { return EMPno; } public void setEMPno(Integer EMPno) { this.EMPno = EMPno; } @Override public String toString() { return "Emp{" + "EMPno=" + EMPno + ", ename='" + ename + '\'' + ", job='" + job + '\'' + ", mgr='" + mgr + '\'' + ", hiredate='" + hiredate + '\'' + ", sal=" + sal + ", comm=" + comm + ", DEPTno=" + DEPTno + '}'; } } ``` #### 4、创建映射持久层对象文件 在`resources`里创建与项目路径相同的文件夹`com/doooog/mybatis/po`用来存放映射文件,以`Emp.java`为例,创建`Emp.xml` ```xml select * from emp where EMPno=#{EMPno} select * from emp order by EMPno ``` 创建完成后须添加到第二步创建的配置文件中,在``标签下 ```xml ``` **注意** 如果你的映射文件不在`resources`文件夹下,可能会引发`Caused by: java.io.IOException: Could not find resource src/main/java/com/...`异常,这是因为Maven默认的资源文件夹只有`resources`,如果必须放在`resources`外,可以通过修改 `pom.xml` 文件来包含这些资源。 ```xml src/main/java **/*.xml ``` #### 5、创建测试文件执行查询 ```java package com.doooog.mybatis; import com.doooog.mybatis.po.Emp; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.IOException; import java.io.InputStream; // 注意不要用错包 public class Test { public static void main(String[] args) { try { // 1、读取Mybatis配置文件 InputStream input = Resources.getResourceAsStream("SqlMapConfig.xml"); // 2、通过配置文件信息,创建SqlSessionFactory SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(input); // 3、通过SqlSessionFactory,创建SqlSession对象 SqlSession sqlSession = ssf.openSession(); // 4、通过SqlSession对象执行sql Emp emp = sqlSession.selectOne("emp.getEmpById",7788); System.out.println(emp); // 5、关闭SqlSession对象 sqlSession.close(); } catch (IOException e) { System.out.println(e.getMessage()); } } } ``` ## 三、DAO层的创建与缺点 #### 1、创建util包和Util单例类 在项目目录下创建`util`包进行存放工具类,并创建`Util.java`实现单例类。 ```java package com.doooog.mybatis.util; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.IOException; import java.io.InputStream; public class Util { private static final SqlSessionFactory sqlSessionFactory; static { SqlSessionFactory sqlSessionFactory1; try { // 1、读取Mybatis配置文件 InputStream input = Resources.getResourceAsStream("SqlMapConfig.xml"); // 2、通过配置文件信息,创建SqlSessionFactory sqlSessionFactory1 = new SqlSessionFactoryBuilder().build(input); } catch (IOException e) { sqlSessionFactory1 = null; System.out.println(e.getMessage()); } sqlSessionFactory = sqlSessionFactory1; } public static SqlSessionFactory getSqlSessionFactory() { return sqlSessionFactory; } } ``` #### 2、创建dao包、DAO接口和实现类 在项目目录下创建`dao`包来存放DAO层的接口,在`dao`包下创建`impl`包来存放DAO层接口的实现类,以`EmpDao.java`,`EmpDaoImpl.java`为例 ```java package com.doooog.mybatis.dao; import com.doooog.mybatis.po.Emp; import java.util.List; public interface EmpDao { Emp getEmpById(int EMPno); List getEmpAll(); } ``` ```java package com.doooog.mybatis.dao.impl; import com.doooog.mybatis.dao.EmpDao; import com.doooog.mybatis.po.Emp; import com.doooog.mybatis.util.Util; import org.apache.ibatis.session.SqlSession; import java.util.List; public class EmpDaoImpl implements EmpDao { @Override public Emp getEmpById(int EMPno) { SqlSession sqlSession = Util.getSqlSessionFactory().openSession(); Emp emp = sqlSession.selectOne("emp.getEmpById", EMPno); sqlSession.close(); return emp; } @Override public List getEmpAll() { SqlSession sqlSession = Util.getSqlSessionFactory().openSession(); List list = sqlSession.selectList("emp.getEmpAll"); sqlSession.close(); return list; } } ``` #### 3、创建测试文件执行查询 ```java package com.doooog.mybatis; import com.doooog.mybatis.dao.EmpDao; import com.doooog.mybatis.dao.impl.EmpDaoImpl; import com.doooog.mybatis.po.Emp; import java.util.List; public class TestDAO { public static void main(String[] args) { EmpDao empDao = new EmpDaoImpl(); Emp emp = empDao.getEmpById(7788); System.out.println(emp); List list = empDao.getEmpAll(); for (Emp e : list) { System.out.println(e); } } } ``` #### 4、在MyBatis中封装DAO层的缺点 ①增加了不必要的抽象层; ②代码冗余和重复; ③测试和维护复杂度增加; ④性能有轻微影响; ⑤与现代框架理念冲突,Mapper实质上是封装好的DAO包; MyBatis的设计理念就是Mapper接口作为数据访问层,额外包装DAO层通常是过度设计。 ## 四、log4j日志输出 #### 1、添加依赖项 在`pom.xml`文件中添加log4j的依赖项 ```xml log4j log4j 1.2.17 ``` #### 2、添加日志配置 在`rescources`文件夹中创建`log4j.properties`文件,文件内容默认为 ```properties # 全局日志配置 log4j.rootLogger=ERROR, stdout # MyBatis 日志配置 log4j.logger.org.mybatis.example.BlogMapper=TRACE # 控制台输出 log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n ``` 第二行`log4j.rootLogger`为日志的等级,分为四级:`ERROR`、`WORNING`、`INFO`、`DEBUG` 最详细的为`DEBUG`所以在调试过程中将其修改为`DEBUG`。 Loading... ## 一、安装Maven 在 Windows 系统中执行 Maven 需要先完成安装和配置。以下是详细步骤: #### 1、下载并安装 Maven 前往 Maven 官方网站 下载最新版本的二进制压缩包。 解压下载的文件到指定目录,例如:`D:\maven`。 #### 2、配置环境变量 设置 MAVEN_HOME 打开系统环境变量设置: 我的电脑 > 属性 > 高级系统设置 > 环境变量。 新建系统变量: 名称:`MAVEN_HOME` 值:`D:\maven\apache-maven-x.x.x`(Maven 解压目录)。 更新 Path 变量 编辑系统变量 Path,添加以下内容: `%MAVEN_HOME%\bin` 验证配置 打开命令提示符,输入以下命令检查 Maven 是否配置成功: `mvn -v` 如果显示 Maven 版本信息,则配置成功。 #### 3、配置本地仓库(可选) 打开 Maven 的核心配置文件 `settings.xml`(位于 conf 目录下)。 添加或修改 `<localRepository>` 标签,指定本地仓库路径,例如: ``` <localRepository> D:\maven\repository </localRepository> ``` #### 4、替换镜像源 在 settings.xml 文件中,找到 `<mirrors>`标签,添加阿里云镜像配置: ``` <mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror> ``` #### 5、执行命令 在项目目录下运行 Maven 命令,例如: `mvn clean install` 常用命令: `mvn clean`: 清理项目。 `mvn compile`: 编译项目。 `mvn package`: 打包项目。 ## 二、MyBatis框架导入 #### 1、安装MyBatis 新建一个Maven项目后,打开`pom.xml`文件,添加配置项 ```xml <!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j --> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <version>9.4.0</version> </dependency> <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.19</version> </dependency> ``` 执行`maven clear install`进行安装 #### 2、创建MyBatis项目配置 在项目`resources`文件夹内,新建一个`SqlMapConfig.xml`文件作为配置文件 ```xml <?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"/> <!-- 配置JDBC数据库信息 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="MySQL_URL"/> <property name="username" value="username"/> <property name="password" value="password"/> </dataSource> </environment> </environments> <!-- 配置映射文件 --> <mappers> <!-- 待定 --> </mappers> </configuration> ``` #### 3、创建持久层对象 在项目文件夹下创建`po`文件夹用来存放持久层对象,持久层对象类名、属性名、数据类型必须和数据库表名、字段名、字段类型一致,以`emp`表为例创建`Emp.java` ```java package com.doooog.mybatis.po; public class Emp { private Integer EMPno; private String ename; private String job; private Integer mgr; private String hiredate; private Double sal; private Double comm; private Integer DEPTno; public Emp() { } public Emp(Integer EMPno, String ename, String job, Integer mgr, String hiredate, Double sal, Double comm, Integer DEPTno) { this.EMPno = EMPno; this.ename = ename; this.job = job; this.mgr = mgr; this.hiredate = hiredate; this.sal = sal; this.comm = comm; this.DEPTno = DEPTno; } public Integer getDEPTno() { return DEPTno; } public void setDEPTno(Integer DEPTno) { this.DEPTno = DEPTno; } public Double getComm() { return comm; } public void setComm(Double comm) { this.comm = comm; } public Double getSal() { return sal; } public void setSal(Double sal) { this.sal = sal; } public String getHiredate() { return hiredate; } public void setHiredate(String hiredate) { this.hiredate = hiredate; } public Integer getMgr() { return mgr; } public void setMgr(Integer mgr) { this.mgr = mgr; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } public Integer getEMPno() { return EMPno; } public void setEMPno(Integer EMPno) { this.EMPno = EMPno; } @Override public String toString() { return "Emp{" + "EMPno=" + EMPno + ", ename='" + ename + '\'' + ", job='" + job + '\'' + ", mgr='" + mgr + '\'' + ", hiredate='" + hiredate + '\'' + ", sal=" + sal + ", comm=" + comm + ", DEPTno=" + DEPTno + '}'; } } ``` #### 4、创建映射持久层对象文件 在`resources`里创建与项目路径相同的文件夹`com/doooog/mybatis/po`用来存放映射文件,以`Emp.java`为例,创建`Emp.xml` ```xml <?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"> <!-- 上面为固定的格式 --> <mapper namespace="emp"> <!-- 创建查询语句 --> <!-- id为函数名 parameterType为参数类型 resultType为返回值类型,需要写包全名 --> <select id="getEmpById" parameterType="int" resultType="com.doooog.mybatis.po.Emp"> select * from emp where EMPno=#{EMPno} </select> <!-- 即使返回值为List<Emp>返回值类型也要写包全名 --> <select id="getEmpAll" resultType="com.doooog.mybatis.po.Emp"> select * from emp order by EMPno </select> </mapper> ``` 创建完成后须添加到第二步创建的配置文件中,在`<mappers>`标签下 ```xml <!-- 配置映射文件 --> <mappers> <mapper resource="com/doooog/mybatis/po/Emp.xml"/> </mappers> ``` **注意** 如果你的映射文件不在`resources`文件夹下,可能会引发`Caused by: java.io.IOException: Could not find resource src/main/java/com/...`异常,这是因为Maven默认的资源文件夹只有`resources`,如果必须放在`resources`外,可以通过修改 `pom.xml` 文件来包含这些资源。 ```xml <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> </resources> </build> ``` #### 5、创建测试文件执行查询 ```java package com.doooog.mybatis; import com.doooog.mybatis.po.Emp; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.IOException; import java.io.InputStream; // 注意不要用错包 public class Test { public static void main(String[] args) { try { // 1、读取Mybatis配置文件 InputStream input = Resources.getResourceAsStream("SqlMapConfig.xml"); // 2、通过配置文件信息,创建SqlSessionFactory SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(input); // 3、通过SqlSessionFactory,创建SqlSession对象 SqlSession sqlSession = ssf.openSession(); // 4、通过SqlSession对象执行sql Emp emp = sqlSession.selectOne("emp.getEmpById",7788); System.out.println(emp); // 5、关闭SqlSession对象 sqlSession.close(); } catch (IOException e) { System.out.println(e.getMessage()); } } } ``` ## 三、DAO层的创建与缺点 #### 1、创建util包和Util单例类 在项目目录下创建`util`包进行存放工具类,并创建`Util.java`实现单例类。 ```java package com.doooog.mybatis.util; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.IOException; import java.io.InputStream; public class Util { private static final SqlSessionFactory sqlSessionFactory; static { SqlSessionFactory sqlSessionFactory1; try { // 1、读取Mybatis配置文件 InputStream input = Resources.getResourceAsStream("SqlMapConfig.xml"); // 2、通过配置文件信息,创建SqlSessionFactory sqlSessionFactory1 = new SqlSessionFactoryBuilder().build(input); } catch (IOException e) { sqlSessionFactory1 = null; System.out.println(e.getMessage()); } sqlSessionFactory = sqlSessionFactory1; } public static SqlSessionFactory getSqlSessionFactory() { return sqlSessionFactory; } } ``` #### 2、创建dao包、DAO接口和实现类 在项目目录下创建`dao`包来存放DAO层的接口,在`dao`包下创建`impl`包来存放DAO层接口的实现类,以`EmpDao.java`,`EmpDaoImpl.java`为例 ```java package com.doooog.mybatis.dao; import com.doooog.mybatis.po.Emp; import java.util.List; public interface EmpDao { Emp getEmpById(int EMPno); List<Emp> getEmpAll(); } ``` ```java package com.doooog.mybatis.dao.impl; import com.doooog.mybatis.dao.EmpDao; import com.doooog.mybatis.po.Emp; import com.doooog.mybatis.util.Util; import org.apache.ibatis.session.SqlSession; import java.util.List; public class EmpDaoImpl implements EmpDao { @Override public Emp getEmpById(int EMPno) { SqlSession sqlSession = Util.getSqlSessionFactory().openSession(); Emp emp = sqlSession.selectOne("emp.getEmpById", EMPno); sqlSession.close(); return emp; } @Override public List<Emp> getEmpAll() { SqlSession sqlSession = Util.getSqlSessionFactory().openSession(); List<Emp> list = sqlSession.selectList("emp.getEmpAll"); sqlSession.close(); return list; } } ``` #### 3、创建测试文件执行查询 ```java package com.doooog.mybatis; import com.doooog.mybatis.dao.EmpDao; import com.doooog.mybatis.dao.impl.EmpDaoImpl; import com.doooog.mybatis.po.Emp; import java.util.List; public class TestDAO { public static void main(String[] args) { EmpDao empDao = new EmpDaoImpl(); Emp emp = empDao.getEmpById(7788); System.out.println(emp); List<Emp> list = empDao.getEmpAll(); for (Emp e : list) { System.out.println(e); } } } ``` #### 4、在MyBatis中封装DAO层的缺点 ①增加了不必要的抽象层; ②代码冗余和重复; ③测试和维护复杂度增加; ④性能有轻微影响; ⑤与现代框架理念冲突,Mapper实质上是封装好的DAO包; MyBatis的设计理念就是Mapper接口作为数据访问层,额外包装DAO层通常是过度设计。 ## 四、log4j日志输出 #### 1、添加依赖项 在`pom.xml`文件中添加log4j的依赖项 ```xml <!-- https://mvnrepository.com/artifact/log4j/log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> ``` #### 2、添加日志配置 在`rescources`文件夹中创建`log4j.properties`文件,文件内容默认为 ```properties # 全局日志配置 log4j.rootLogger=ERROR, stdout # MyBatis 日志配置 log4j.logger.org.mybatis.example.BlogMapper=TRACE # 控制台输出 log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n ``` 第二行`log4j.rootLogger`为日志的等级,分为四级:`ERROR`、`WORNING`、`INFO`、`DEBUG` 最详细的为`DEBUG`所以在调试过程中将其修改为`DEBUG`。 最后修改:2025 年 10 月 22 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 👆请简单粗暴地爱我。