MybatisWebApp

发布于:2024-10-17 ⋅ 阅读:(11) ⋅ 点赞:(0)

如何构建一个有关Mybatis的Web?

 

 

 

在这里给出我自己的一些配置。我的TomCat版本:10.1.28 ,IDEA版本:2024.1.4

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>org.example</groupId>
    <artifactId>Mybatis-001-web</artifactId>
    <packaging>war</packaging>
    <version>1.0</version>
    <name>Mybatis-001-web Maven Webapp</name>
    <url>http://maven.apache.org</url>

    <dependencies>
        <!-- MyBatis 依赖 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.16</version>
        </dependency>

        <!-- MySQL 连接驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.33</version>
        </dependency>

        <!-- Logback 日志依赖 -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.11</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.2.11</version>
        </dependency>
        <dependency>
            <groupId>jakarta.servlet</groupId>
            <artifactId>jakarta.servlet-api</artifactId>
            <version>5.0.0</version>
            <scope>provided</scope>
        </dependency>


    </dependencies>

    <build>
        <finalName>Mybatis-001-web</finalName>
    </build>
</project>

JDBC.properties文件

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/testmybatis
jdbc.username=root
jdbc.password=gege5211314

Mybatis-config核心文件

通过JDBC.properties来动态获取

<?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>
    <properties resource="jdbc.properties" />

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <!--           jdbc:mysql://localhost:3306/     数据库的名称-->
                <property name="url" value="${jdbc.url}"/>
                <!--                自己管理的账号密码-->
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

    <!--执行XxxMapper.xml文件的路径-->
    <!--resource属性自动会从类的根路径下开始查找资源。-->

    <!--    <mapper resource="AccountMapper.XML"/>:
    告诉 MyBatis 从类路径的根目录加载名为 Mapper.XML 的 SQL 映射文件-->
    <mappers>
        <mapper resource="AccountMapper.XML"/>
    </mappers>
</configuration>

日志的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
    <!-- 控制台输出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!-- 格式化信息: 始终显示线程名, %thread表示线程名, %-5level: 级别从左显示5个字符宽度的msg,日志消息。%n是换行符 -->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- mybatis log 配置 -->
    <logger name="com.apache.ibatis" level="TRACE"/>
    <logger name="java.sql.Connection" level="DEBUG"/>
    <logger name="java.sql.Statement" level="DEBUG"/>
    <logger name="java.sql.PreparedStatement" level="DEBUG"/>

    <!-- 日志输出级别,logback日志级别依次存在:TRACE < DEBUG < INFO < WARN < ERROR -->
    <root level="DEBUG">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="FILE"/>
    </root>
</configuration>

web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
         version="6.0">

  <display-name>Archetype Created Web Application</display-name>
<!--  <servlet>-->
<!--    <servlet-name>test</servlet-name>-->
<!--    <servlet-class>web.AccountServlet</servlet-class>-->
<!--  </servlet>-->
<!--  <servlet-mapping>-->
<!--    <servlet-name>test</servlet-name>-->
<!--    <url-pattern>/transfer</url-pattern>-->
<!--  </servlet-mapping>-->
</web-app>

映射文件

负责写sql语句

<?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="account">
<select id="selectByActno" resultType="pojo.Account">
    select * from t_act where actno = #{actno}
</select>
<!--    insert语句 id 是sql语句的唯一标识,这个id就代表了这条sql语句-->

    <update id="updateByActno">
        update t_act set balance = #{balance} where actno = #{actno}
    </update>



</mapper>

Mybatis的webapp和JavaWeb的webapp有什么区别?

关键区别在于使用的技术栈:

  1. JavaWeb 的 Web 应用:

    • 传统的 JavaWeb 应用 是基于 Servlet/JSP 的应用,直接使用 Java Servlet API 处理 HTTP 请求和响应,通常包括:
      • Servlet
      • JSP(JavaServer Pages)
      • HTML/CSS/JavaScript
      • 数据库访问通常通过 JDBC 完成,直接在 Java 代码中执行 SQL 语句。
  2. MyBatis 的 Web 应用:

    •  MyBatis 的 Web 应用 也是基于 JavaWeb 应用的,但 MyBatis 被引入作为 ORM(对象关系映射)框架,简化了数据库操作。相比传统的 JDBC,MyBatis 提供了更好的 SQL 映射机制,并将 SQL 映射文件与 Java 方法进行绑定。

    • 在 MyBatis 应用中,你不再需要手动编写繁琐的 JDBC 代码,而是通过 MyBatis 的映射文件和 DAO 类来简化数据库的操作。
    • MyBatis 本身不改变 JavaWeb 应用的基本结构,它只是用来代替 JDBC 执行数据库查询和更新。 

MyBatis 引入的好处:

  • 简化数据库访问:减少了手动编写 JDBC 代码的麻烦,提供了更清晰的 SQL 和 Java 代码分离的方式。
  • 自动映射:MyBatis 可以自动将 SQL 查询结果映射到 Java 对象,大大减少了手动操作的代码量。
  • 动态 SQL:通过 MyBatis 的动态 SQL 特性,可以根据条件灵活生成不同的 SQL 语句。