从 01 开始 从 01 开始
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档

晓林

程序猿,自由职业者,博主,英语爱好者,健身达人
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档
  • JavaSE

  • JavaSenior

  • JavaEE

    • JavaEE 概念

    • Ant

    • Maven

      • 什么是 Maven
      • 安装Maven
      • 第一个 Maven 项目
      • Maven 的组成和配置
      • 快速创建 Maven 项目
      • 创建 Web 项目
      • Maven 的生命周期和构建
      • Maven 的依赖管理
      • Maven 的插件管理
      • IDEA 关于 Maven 的设置
      • 使用 Maven 完成 dao 层
        • 创建数据库
        • 创建一个新的 Maven 项目
        • 添加依赖
        • 添加 Log4j 配置
        • 新建 dao 实体类
        • 新增 dao 接口
        • 新建 Mybatis 映射文件
        • 创建 Spring 配置文件
        • 新建测试类
        • 源码
      • 使用 Maven 完成 service 层
      • 使用 Maven 完成 web 层
      • Maven 的拆分和聚合
      • Nexus 的搭建
      • Nexus 的使用
      • 安装第三方 jar 包到私服
      • Maven 系列完结
    • 日志

    • Junit

    • JDBC

    • XML 和 JSON

  • JavaWeb

  • Spring

  • 主流框架

  • SpringMVC

  • SpringBoot

  • Java
  • JavaEE
  • Maven
2023-05-15
目录

使用 Maven 完成 dao 层

# 100.使用 Maven 完成 dao 层

我们先使用 Maven 做一些实际的事情,方便后续的知识点的引入。

# 创建数据库

我们创建一个数据库、用户和一张表:

create database learnmaven;
use learnmaven;

CREATE USER IF NOT EXISTS LearnMavenUser@'%' IDENTIFIED BY 'LearnMavenUser@Password';
GRANT ALL PRIVILEGES ON learnmaven.* TO LearnMavenUser@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;


DROP TABLE IF EXISTS `items`;

CREATE TABLE `items` (
  `id` int(10) NOT NULL auto_increment,
  `name` varchar(20) default NULL,
  `price` float(10,0) default NULL,
  `pic` varchar(40) default NULL,
  `createtime` datetime default NULL,
  `detail` varchar(200) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of items
-- ----------------------------
INSERT INTO `items` VALUES ('1', '王小美', '1000', null, '2023-05-13 09:29:30', '带我走上人生巅峰');
INSERT INTO `items` VALUES ('2', '刻晴猫', null, null, '2023-05-28 10:05:52', '插入测试');
INSERT INTO `items` VALUES ('3', '胡桃', '199', null, '2023-05-07 10:08:04', '插入测试');
INSERT INTO `items` VALUES ('7', '影', null, null, null, null);
INSERT INTO `items` VALUES ('8', '狐狸', null, null, null, null);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

‍

# 创建一个新的 Maven 项目

我们使用 IDEA 创建一个新的 Maven 工程,骨架选择 webapp 的,并且新建 src/main/java 目录,此时目录结构如下:

‍

修改 web.xml 文件:原先的 web-app 标签里没有配置 xmlns 等名称空间,我们补上:

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
          http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">

</web-app>

1
2
3
4
5
6
7
8
9
10
11
12

‍ 修改 pom.xml:我们只保留一些必备的属性,其他的我们先删掉

<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/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.peterjxl</groupId>
    <artifactId>LearnJavaMaven</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>LearnJavaMaven Maven Webapp</name>

</project>
1
2
3
4
5
6
7
8
9
10
11

# 添加依赖

这里我们引用 SSM 的依赖,由于依赖很多,这里我们就不贴出代码了,读者可以去 GitHub (opens new window) 和 Gitee (opens new window) 里拷贝。

# 添加 Log4j 配置

为了方便输出日志,我们添加 resources/log4j.properties 配置文件:

 # Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE            debug   info   warn error fatal
log4j.rootCategory=debug, CONSOLE, LOGFILE

# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE

# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d:\axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

‍

# 新建 dao 实体类

package com.peterjxl.domain;
import java.util.Date;
public class Items {

    private Integer id;
    private String name;
    private Float price;
    private String pic;
    private Date createtime;
    private String detail;
}
1
2
3
4
5
6
7
8
9
10
11

‍ 注:自行生成 getter 和 setter 方法 ‍

# 新增 dao 接口

package com.peterjxl.dao;
import com.peterjxl.domain.Items;
public interface ItemsDao {
    Items findById(Integer id);
}
1
2
3
4
5

# 新建 Mybatis 映射文件

新建 resources\com\peterjxl\dao\ItemsDao.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="com.peterjxl.dao.ItemDao">
    <select id="findById" parameterType="int" resultType="items">
        select * from items where id = #{id}
    </select>
</mapper>
1
2
3
4
5
6
7
8
9

‍ 下一步应该就是创建 Mybatis 的主配置文件,但由于我们用到了 SSM,我们的配置文件信息交给 Spring 来管理即可 ‍

# 创建 Spring 配置文件

创建 resources/applicationContext.xml,并引入约束

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
			    http://www.springframework.org/schema/beans/spring-beans.xsd
			    http://www.springframework.org/schema/context
			    http://www.springframework.org/schema/context/spring-context.xsd
			    http://www.springframework.org/schema/aop
			    http://www.springframework.org/schema/aop/spring-aop.xsd
			    http://www.springframework.org/schema/tx
			    http://www.springframework.org/schema/tx/spring-tx.xsd
			    http://www.springframework.org/schema/mvc
			    http://www.springframework.org/schema/mvc/spring-mvc.xsd">
  
</beans>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

‍ 然后我们配置 dao 层:

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
    <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql:///learnmaven"/>
    <property name="username" value="LearnMavenUser"/>
    <property name="password" value="LearnMavenUser@Password"/>
</bean>

<!-- 配置生成 SqlSession 对象的工厂 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="typeAliasesPackage" value="com.peterjxl.learn.*.model"/>
    <!--扫描pojo包,给包下所有pojo对象起别名-->
    <property name="typeAliases" value="com.peterjxl.domain"/>
</bean>


<!-- 扫描接口包路径,并生成所有接口的代理对象,放到 Spring 容器中 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.peterjxl.dao"/>
</bean>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

‍

# 新建测试类

package com.peterjxl.test;

import com.peterjxl.dao.ItemsDao;
import com.peterjxl.domain.Items;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class ItemsTest {

    @Test
    public void findById() {
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        // 从容器中拿到所需的dao的代理对象
        ItemsDao itemDao = ac.getBean("itemsDao", ItemsDao.class);
        Items items = itemDao.findById(1);
        System.out.println(items);
    }
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

‍ 运行结果:

Items{id=1, name='王小美', price=1000.0, pic='null', createtime=Sat May 13 09:29:30 CST 2023, detail='带我走上人生巅峰'}
1

‍

# 源码

已将所有代码上传到 Gitee (opens new window) 和 GitHub (opens new window) 上,本文中涉及到的代码在分支 demo4Dao。 ‍

上次更新: 2025/6/3 09:31:54
IDEA 关于 Maven 的设置
使用 Maven 完成 service 层

← IDEA 关于 Maven 的设置 使用 Maven 完成 service 层→

最近更新
01
语雀文档一键下载至本地教程
07-04
02
要成功,就不要低估环境对你的影响
07-03
03
血泪教训:电子设备要定期开机
07-02
更多文章>
Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式