0


idea2024版本创建maven项目并使用mybatis

文章目录

前提

针对IDEA2023以上,以及jdk17,maven3.9.6

什么是maven?

Apache Maven 是一个 Java 项目的构建管理和理解工具

。Maven 提供了一套标准的构建生命周期,项目对象模型(POM),依赖管理,项目信息和用于项目构建、报告和文档的一系列插件。

Maven 的主要特点包括:

  1. 依赖管理:Maven 能够自动处理项目依赖关系,这意味着当你添加一个依赖到你的项目中时,Maven 可以自动下载所需的库,并且解决这些库之间的依赖关系。
  2. 项目构建:Maven 使用一个中央配置文件 pom.xml 来定义项目的构建过程,这使得构建过程更加规范和易于理解。
  3. 生命周期和插件:Maven 定义了一系列的构建阶段,如 clean, compile, test, package, install 和 deploy 等等。每个阶段都可以由 Maven 插件来执行特定的任务。
  4. 多模块项目支持:Maven 支持多模块项目,可以方便地管理大型项目中的多个子项目。
  5. 集成开发环境 (IDE) 集成:大多数现代的 Java IDE 都提供了对 Maven 的支持,这使得在 IDE 中使用 Maven 成为了可能。
  6. 仓库管理:Maven 使用本地或远程仓库来存储 JAR 文件和其他类型的构建产物。远程仓库可以是公共的,例如 Maven Central Repository,也可以是私有的,企业通常会部署自己的私有仓库。

通过使用 Maven,开发者可以更加专注于应用程序的逻辑而不是构建系统的细节。这使得项目更容易维护,同时也简化了团队之间的协作。

为什么使用maven?

使用 Maven 有几个重要的原因:

  1. 标准化构建流程:Maven 强制实施了一种约定优于配置的方法,提供了一个标准的项目布局和构建生命周期。这样,任何熟悉 Maven 的开发人员都可以很容易地理解项目的结构并知道如何构建它,而无需深入研究详细的构建脚本。
  2. 依赖管理:Maven 能够帮助管理项目的依赖项,包括自动解析依赖树,避免版本冲突,并从远程仓库(如 Maven Central)下载必要的库。这大大减少了手动管理依赖项的工作量,降低了因依赖项问题导致的错误风险。
  3. 简化构建过程:Maven 使用一个中心化的配置文件 pom.xml 来控制整个构建过程。这使得构建过程更加简洁明了,也便于维护。
  4. 多模块项目支持:对于大型项目或者需要拆分成多个模块进行开发的项目来说,Maven 提供了很好的支持。它可以轻松地处理多模块项目之间的依赖关系,并且能够有效地构建和测试整个项目。
  5. 插件生态系统:Maven 拥有大量的插件,可以用来执行各种任务,如生成项目文档、运行测试、打包应用程序等。这使得扩展 Maven 的功能变得非常简单。
  6. 持续集成与部署:Maven 的标准化构建流程非常适合与持续集成(CI)工具结合使用。许多 CI 工具都直接支持 Maven,使得自动化构建、测试和部署变得更加容易。
  7. 项目信息和报告:Maven 还能够自动生成项目的文档和报告,如依赖关系图、项目信息页面等,有助于提高项目的透明度。
  8. 社区支持:由于 Maven 是一个广泛使用的工具,因此拥有庞大的用户群和活跃的社区支持。这意味着遇到问题时,很容易找到解决方案或求助。

综上所述,Maven 为 Java 开发者提供了一个强大且灵活的构建工具,可以帮助他们更高效地管理项目依赖、构建和部署应用。

怎么使用maven?

IDEA中集成maven

在这里插入图片描述

配置maven环境(全局)

在这里插入图片描述

创建maven项目

方法1

方法2

使用quickstart的话,

src/main下面只有java文件夹,没有resource文件夹作为配置文件存放地

。那就自己自己新建目录。

在这里插入图片描述

配置maven

导入依赖

<projectxmlns="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.wake</groupId><artifactId>mybatis</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><name>mybatis</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.16</version></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.0.33</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.34</version><scope>provided</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency></dependencies><build><resources><resource><directory>src/main/resources</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>true</filtering></resource></resources></build></project>

新建数据库和表

在这里插入图片描述

CREATETABLE`t_customer`(`id`bigintunsignedNOTNULLAUTO_INCREMENT,`username`varchar(255)COLLATE utf8mb4_general_ci DEFAULTNULL,`jobs`varchar(255)COLLATE utf8mb4_general_ci DEFAULTNULL,`phone`varchar(255)COLLATE utf8mb4_general_ci DEFAULTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=5DEFAULTCHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

定义实体类和工具类

MyBatisUtils

src/main/java/com/wake/utils/MyBatisUtils.java

packagecom.wake.utils;importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;importjava.io.IOException;importjava.io.InputStream;/**
 * @Author LiuBin
 * @Date 2024/9/13 下午1:48
 * @Version 1.0
 * @Description <p>备注:</p>
 */publicclassMyBatisUtils{publicstaticSqlSessiongetSqlSession(){SqlSession sqlSession;try{//创建配置信息输入流InputStream is=Resources.getResourceAsStream("mybatis-config.xml");//创建SqlSessionFactoryBuilder对象SqlSessionFactoryBuilder sqlSessionFactoryBuilder=newSqlSessionFactoryBuilder();//创建SqlSessionFactory对象SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(is);//实例化SqlSession对象
            sqlSession=sqlSessionFactory.openSession();}catch(IOException e){thrownewRuntimeException(e);}return sqlSession;}publicstaticvoidcloseSqlSessionAndCommit(SqlSession sqlSession){
        sqlSession.commit();
        sqlSession.close();}}

Customer

src/main/java/com/wake/entity/Customer.java

packagecom.wake.entity;importlombok.*;/**
 * @Author LiuBin
 * @Date 2024/9/13 下午12:58
 * @Version 1.0
 * @Description <p>备注:</p>
 */@Data@NoArgsConstructor@AllArgsConstructor@EqualsAndHashCode@BuilderpublicclassCustomer{/**
     * id
     */privateInteger id;/**
     * 用户名
     */privateString username;/**
     * 职位
     */privateString jobs;/**
     * 电话
     */privateString phone;}

定义CustomerMapper接口

src/main/java/com/wake/mapper/CustomerMapper.java

packagecom.wake.mapper;importcom.wake.entity.Customer;importjava.util.List;/**
 * @Author LiuBin
 * @Date 2024/9/13 下午1:07
 * @Version 1.0
 * @Description <p>备注:</p>
 */publicinterfaceCustomerMapper{List<Customer>findAllCustomer();}

定义CustomerMapper.xml文件

注意:注意这里建包规则和上面不同这里要写成com/wake/mapper。而上面的要写成com.wake.xxx 这种形式。

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="com.wake.mapper.CustomerMapper"><!-- 通用查询映射结果 --><resultMapid="BaseResultMap"type="com.wake.entity.Customer"><idcolumn="id"property="id"/><resultcolumn="username"property="username"/><resultcolumn="jobs"property="jobs"/><resultcolumn="phone"property="phone"/></resultMap><selectid="findAllCustomer"resultMap="BaseResultMap"resultType="com.wake.entity.Customer">
    select * from t_customer
  </select></mapper>

定义db.properties配置文件

src/main/resources/db.properties

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=123456

定义mybatis-config配置文件

src/main/resources/mybatis-config.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><propertiesresource="db.properties"/><!-- 设置别名 --><typeAliases><typeAliasalias="Customer"type="com.wake.entity.Customer"/></typeAliases><!-- 配置环境 --><environmentsdefault="development"><environmentid="development"><!-- 事务管理器 --><transactionManagertype="JDBC"/><!-- 数据源 --><dataSourcetype="POOLED"><!--MySQL驱动类名--><propertyname="driver"value="${jdbc.driver}"/><!--数据库连接URL--><propertyname="url"value="${jdbc.url}"/><!--数据库用户名--><propertyname="username"value="${jdbc.username}"/><!--数据库密码--><propertyname="password"value="${jdbc.password}"/></dataSource></environment></environments><!-- 映射文件位置 --><mappers><mapperresource="com/wake/mapper/CustomerMapper.xml"/></mappers></configuration>

注意:由于配置了

<typeAlias alias="Customer" type="com.wake.entity.Customer"/>

CustomerMapper.xml

文件的

com.wake.entity.Customer

可以单独写类名

Customer
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="com.wake.mapper.CustomerMapper"><!-- 通用查询映射结果 --><resultMapid="BaseResultMap"type="Customer"><idcolumn="id"property="id"/><resultcolumn="username"property="username"/><resultcolumn="jobs"property="jobs"/><resultcolumn="phone"property="phone"/></resultMap><selectid="findAllCustomer"resultMap="BaseResultMap"resultType="Customer">
        select * from t_customer
    </select></mapper>

新建MybatisTest测试类

在这里插入图片描述

packagecom.wake;importcom.wake.entity.Customer;importcom.wake.utils.MyBatisUtils;importorg.apache.ibatis.session.SqlSession;importorg.junit.Test;importjava.util.List;/**
 * @Author LiuBin
 * @Date 2024/9/13 下午1:28
 * @Version 1.0
 * @Description <p>备注:</p>
 */publicclassMyBatisTest{@TestpublicvoidfindAllCustomer(){SqlSession sqlSession =MyBatisUtils.getSqlSession();List<Customer> customers = sqlSession.selectList("com.wake.mapper.CustomerMapper.findAllCustomer");
        customers.forEach(System.out::println);MyBatisUtils.closeSqlSessionAndCommit(sqlSession);}}

运行结果

补充

CustomerMapper.java

packagecom.wake.mapper;importcom.wake.entity.Customer;importjava.util.List;/**
 * @Author LiuBin
 * @Date 2024/9/13 下午1:07
 * @Version 1.0
 * @Description <p>备注:</p>
 */publicinterfaceCustomerMapper{List<Customer>findAllCustomer();intaddCustomer(Customer customer);intdeleteCustomer(Integer id);intupdateCustomer(Customer customer);}

CustomerMapper.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.wake.mapper.CustomerMapper"><!-- 通用查询映射结果 --><resultMap id="BaseResultMap" type="Customer"><id column="id" property="id"/><result column="username" property="username"/><result column="jobs" property="jobs"/><result column="phone" property="phone"/></resultMap><select id="findAllCustomer" resultMap="BaseResultMap" resultType="Customer">
        select * from t_customer
    </select><insert id="addCustomer" parameterType="Customer">
        insert into t_customer(username,jobs,phone)values(#{username},#{jobs},#{phone})</insert><delete id="deleteCustomer" parameterType="Integer">
        delete from t_customer where id = #{id}</delete><update id="updateCustomer" parameterType="Customer">
        update t_customer set username = #{username},jobs = #{jobs},phone = #{phone} where id = #{id}</update></mapper>

MyBatisTest.java

packagecom.wake;importcom.wake.entity.Customer;importcom.wake.utils.MyBatisUtils;importorg.apache.ibatis.session.SqlSession;importorg.junit.Test;importjava.util.List;/**
 * @Author LiuBin
 * @Date 2024/9/13 下午1:28
 * @Version 1.0
 * @Description <p>备注:</p>
 */publicclassMyBatisTest{@TestpublicvoidfindAllCustomer(){SqlSession sqlSession =MyBatisUtils.getSqlSession();List<Customer> customers = sqlSession.selectList("com.wake.mapper.CustomerMapper.findAllCustomer");
        customers.forEach(System.out::println);MyBatisUtils.closeSqlSessionAndCommit(sqlSession);}@TestpublicvoidaddCustomer(){SqlSession sqlSession =MyBatisUtils.getSqlSession();Customer customer =Customer.builder().username("wake").jobs("java").phone("123456789").build();int result = sqlSession.insert("com.wake.mapper.CustomerMapper.addCustomer", customer);if(result >0){System.out.println("添加成功");MyBatisUtils.closeSqlSessionAndCommit(sqlSession);return;}System.out.println("添加失败");}@TestpublicvoiddeleteCustomerById(){SqlSession sqlSession =MyBatisUtils.getSqlSession();int result = sqlSession.delete("com.wake.mapper.CustomerMapper.deleteCustomer",4);if(result >0){System.out.println("删除成功");MyBatisUtils.closeSqlSessionAndCommit(sqlSession);return;}System.out.println("删除失败");}@TestpublicvoidupdateCustomer(){SqlSession sqlSession =MyBatisUtils.getSqlSession();Customer customer =Customer.builder().id(4).username("wake1").jobs("java1").phone("123456789").build();int result = sqlSession.update("com.wake.mapper.CustomerMapper.updateCustomer", customer);if(result >0){System.out.println("修改成功");MyBatisUtils.closeSqlSessionAndCommit(sqlSession);return;}System.out.println("修改失败");}}

结语

细节决定成败,一步错,步步错。

标签: maven java mybatis

本文转载自: https://blog.csdn.net/qq_63238915/article/details/142210722
版权归原作者 落叶拾秋 所有, 如有侵权,请联系我们删除。

“idea2024版本创建maven项目并使用mybatis”的评论:

还没有评论