手牵手入门Spring6整合Mybatis3.5

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Spring是Java EE编程领域的一个轻量级开源框架,该框架由一个叫Rod Johnson的程序员在 2002 年最早提出并随后创建,是为了解决企业级编程开发中的复杂性,实现敏捷开发的应用型框架 。

Spring是Java EE编程领域的一个轻量级开源框架,该框架由一个叫Rod Johnson的程序员在 2002 年最早提出并随后创建,是为了解决企业级编程开发中的复杂性,实现敏捷开发的应用型框架 。Spring是一个开源容器框架,它集成各类型的工具,通过核心的Bean factory实现了底层的类的实例化和生命周期的管理。在整个框架中,各类型的功能被抽象成一个个的 Bean,这样就可以实现各种功能的管理,包括动态加载和切面编程。


Spring致力于提供一种方法管理你的业务对象。

Spring是全面的和模块化的。Spring有分层的体系结构,这意味着你能选择使用它孤立的任何部分,它的架构仍然是内在稳定的。例如,你可能选择仅仅使用Spring来简单化JDBC的使用,或用来管理所有的业务对象。

它的设计从底部帮助你编写易于测试的代码。Spring是用于测试驱动工程的理想的framework。

Spring对你的工程来说,它不需要一个以上的framework。Spring是潜在地一站式解决方案,定位于与典型应用相关的大部分基础结构。它也涉及到其他framework没有考虑到的内容。


MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录


简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件。易于学习,易于使用。通过文档和源代码,可以比较完全的掌握它的设计思路和实现。

灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。

解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。

提供映射标签,支持对象与数据库的ORM字段关系映射。

提供对象关系映射标签,支持对象关系组建维护。

提供xml标签,支持编写动态sql。


方式一

Object类


13.png

get和set,无参构造+有参构造



12.png

Pom.xml引入依赖


11.png

<!--    打包方式jar-->

<packaging>jar</packaging>

<!--配置多个仓库 -->

<repositories>

   <!-- Spring6 -->

   <repository>

       <id>repository.spring.milestone</id>

       <name>Spring Milestone Repository</name>

       <url>https://repo.spring.io/milestone</url>

   </repository>

</repositories>

<!-- 依赖-->

<dependencies>

   <!-- 引入Spring context依赖-->

   <dependency>

       <groupId>org.springframework</groupId>

       <artifactId>spring-context</artifactId>

       <version>6.0.0-M2</version>

   </dependency>

   <!--引入Spring-jdbc-->

   <dependency>

       <groupId>org.springframework</groupId>

       <artifactId>spring-jdbc</artifactId>

       <version>6.0.0-M2</version>

   </dependency>

   <!--引入mysql驱动-->

   <dependency>

       <groupId>mysql</groupId>

       <artifactId>mysql-connector-java</artifactId>

       <version>8.0.17</version>

   </dependency>

   <!--引入mybatis依赖-->

   <dependency>

       <groupId>org.mybatis</groupId>

       <artifactId>mybatis</artifactId>

       <version>3.5.11</version>

   </dependency>

   <!--引入mybatis-spring依赖-->

   <!--        -->

   <dependency>

       <groupId>org.mybatis</groupId>

       <artifactId>mybatis-spring</artifactId>

       <version>3.0.1</version>

   </dependency>

   <!-- 引入德鲁伊连接池-->

   <dependency>

       <groupId>com.alibaba</groupId>

       <artifactId>druid</artifactId>

       <version>1.2.15</version>

   </dependency>

   <!-- Spring框架对Junit支持的依赖-->

   <dependency>

       <groupId>org.springframework</groupId>

       <artifactId>spring-test</artifactId>

       <version>6.0.0-M2</version>

       <!--6.0.0-M2既支持junit4又支持junit5-->

   </dependency>

   <!--junit依赖-->

   <dependency>

       <groupId>org.junit.jupiter</groupId>

       <artifactId>junit-jupiter-api</artifactId>

       <version>5.8.2</version>

       <scope>test</scope>

   </dependency>

   <dependency>

       <groupId>org.example</groupId>

       <artifactId>review-annotation</artifactId>

       <version>1.0-SNAPSHOT</version>

       <scope>test</scope>

   </dependency>

   <!--   @Resource注解的依赖-->

   <dependency>

       <groupId>jakarta.annotation</groupId>

       <artifactId>jakarta.annotation-api</artifactId>

       <version>2.1.0</version>

   </dependency>

</dependencies>


Dao层

public interface TTTDao {

   //查询所有

   List<TTT11> selectAll();

   //插入

   int insert(TTT11 ttt11);

   //通过id删除

   int deleteById(int id);

   //更新

   int update(TTT11 ttt11);

}


myabtis-Mapper配置文件


10.png

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE mapper

       PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

       "https://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.bank.dao.TTTDao">

   <select id="selectAll" resultType="com.bank.object.TTT11">

       select id,name,address from TTT11

   </select>

   <insert id="insert">

       insert into TTT11 values(#{id},#{name},#{address})

   </insert>

   <delete id="deleteById" >

       delete from TTT11 where id = #{id}

   </delete>

   <update id="update">

       update TTT11 set address =#{address} where id=#{id}

   </update>

</mapper>


编写jdbc.properties文件和Mybatis.xml核心配置文件

jdbc.properties


9.png


jdbc.driver=com.mysql.cj.jdbc.Driver

jdbc.url=jdbc:mysql://IP:3306/mysql?

jdbc.user= root

jdbc.password= 111111

Mybatis.xml主配置文件

8.png



<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE configuration

       PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

       "https://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

   <!--settings控制mybatis全局行为-->

   <settings>

       <!-- logImpl设置mybatis输出日志-->

       <setting name="logImpl" value="STDOUT_LOGGING"/>

   </settings>

</configuration>


Service接口和serviceimp


7.png

接口


public interface TTTService {

   int save(TTT11 ttt11);

   int delecyById(int id);

   List<TTT11> selectAll();

   int update(TTT11 ttt11);

}

Spring框架实现了控制反转IoC


Spring是一个实现了IoC思想的容器


控制反转的实现方式有多种,其中比较重要的:依赖注入(Dependency Injection,简称DI)


控制反转是思想。依赖注入是具体实现。


依赖注入DI,又包括常见的两种方式:set注入(执行set方法给属性赋值)、构造方式注入(执行构造方法给属性赋值)


依赖:A对象和B对象的关系。


注入:是一种手段,通过这种手段,可以让A对象和B对象产生关系


依赖注入:对象A和对象B之间的关系,靠注入的手段来维护。而注入包括:set注入和构造注入。


构造注入:核心原理通过调用构造方法来给属性赋值。


实现类


@Transactional

@Service("tTTService")

public class TTTServiceimpl implements TTTService {

   @Resource

   private TTTDao tttDao;

   @Override

   public int save(TTT11 ttt11) {

       return tttDao.insert(ttt11);

   }

   @Override

   public int delecyById(int id) {

       return tttDao.deleteById(id);

   }

   @Override

   public List<TTT11> selectAll() {

       return tttDao.selectAll();

   }

   @Override

   public int update(TTT11 ttt11) {

       return tttDao.update(ttt11);

   }

}


Spring.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:tx="http://www.springframework.org/schema/tx"

      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

                          http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsd">

       <context:component-scan base-package="com.bank"></context:component-scan>

       <!--引入外部文件-->

       <context:property-placeholder location="jdbc.properties"/>

       <bean id="dateSource" class="com.alibaba.druid.pool.DruidDataSource">

               <property name="driverClassName" value="${jdbc.driver}"></property>

               <property name="url" value="${jdbc.url}"></property>

               <property name="username" value="${jdbc.user}"></property>

               <property name="password" value="${jdbc.password}"></property>

       </bean>

       <!--配置SqlSessionFactoryBean-->

       <bean class="org.mybatis.spring.SqlSessionFactoryBean">

       <!--注入数据源-->

               <property name="dataSource" ref="dateSource"/>

               <!--指定Mybatis-config.xml文件-->

               <property name="configLocation" value="mybatis-config.xml"/>

               <!--注入别名-->

               <property name="typeAliasesPackage" value="com.bank.object"/>

       </bean>

               <!--扫描mapper配置器-->

       <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

               <property name="basePackage" value="com.bank.dao"/>

       </bean>

               <!--事务管理器-->

       <bean id="TransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

               <property name="dataSource" ref="dateSource"/>

       </bean>

<!--        启动事务注解-->

       <tx:annotation-driven transaction-manager="TransactionManager"/>

</beans>


测试类


6.png

public class springMybatisTest {

   @Test

   public void sMybatisTest(){

       ApplicationContext applicationContext =new ClassPathXmlApplicationContext("SpringConfig.xml");

       TTTService tTTService = applicationContext.getBean("tTTService", TTTService.class);

       tTTService.selectAll();

   }

}

方式二


5.png

pom.xml配置

<?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>org.example</groupId>

   <artifactId>spring6mybatis</artifactId>

   <version>1.0-SNAPSHOT</version>

   <properties>

       <maven.compiler.source>17</maven.compiler.source>

       <maven.compiler.target>17</maven.compiler.target>

       <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

   </properties>

   <!--    打包方式jar-->

   <packaging>jar</packaging>

   <!--配置多个仓库 -->

   <repositories>

       <!-- Spring6 -->

       <repository>

           <id>repository.spring.milestone</id>

           <name>Spring Milestone Repository</name>

           <url>https://repo.spring.io/milestone</url>

       </repository>

   </repositories>

   <!-- 依赖-->

   <dependencies>

       <!-- 引入Spring context依赖-->

       <dependency>

           <groupId>org.springframework</groupId>

           <artifactId>spring-context</artifactId>

           <version>6.0.0-M2</version>

       </dependency>

       <!--引入Spring-jdbc-->

       <dependency>

           <groupId>org.springframework</groupId>

           <artifactId>spring-jdbc</artifactId>

           <version>6.0.0-M2</version>

       </dependency>

       <!--引入mysql驱动-->

       <dependency>

           <groupId>mysql</groupId>

           <artifactId>mysql-connector-java</artifactId>

           <version>8.0.17</version>

       </dependency>

       <!--引入mybatis依赖-->

       <dependency>

           <groupId>org.mybatis</groupId>

           <artifactId>mybatis</artifactId>

           <version>3.5.11</version>

       </dependency>

       <!--引入mybatis-spring依赖-->

       <!--        -->

       <dependency>

           <groupId>org.mybatis</groupId>

           <artifactId>mybatis-spring</artifactId>

           <version>3.0.1</version>

       </dependency>

       <!-- 引入德鲁伊连接池-->

       <dependency>

           <groupId>com.alibaba</groupId>

           <artifactId>druid</artifactId>

           <version>1.2.15</version>

       </dependency>

       <!-- Spring框架对Junit支持的依赖-->

       <dependency>

           <groupId>org.springframework</groupId>

           <artifactId>spring-test</artifactId>

           <version>6.0.0-M2</version>

           <!--6.0.0-M2既支持junit4又支持junit5-->

       </dependency>

       <!--junit依赖-->

       <dependency>

           <groupId>org.junit.jupiter</groupId>

           <artifactId>junit-jupiter-api</artifactId>

           <version>5.8.2</version>

           <scope>test</scope>

       </dependency>

   </dependencies>

   <build>

       <resources>

           <resource>

               <!--所在的目录-->

               <directory>src/main/java</directory>

               <includes>

                   <!--包括目录下的.properties .xml文件都会扫描到-->

                   <include>**/*.properties</include>

                   <include>**/*.xml</include>

               </includes>

               <filtering>false</filtering>

           </resource>

       </resources>

   </build>

</project>


实体类


4.png

get、set、toString、无参有参构造方法。


接口


3.png

public interface TTTDao {

   //查询所有

   List<TTT11> selectAll();

}

mapper.xml文件

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE mapper

       PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

       "https://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.dao.TTTDao">

   <select id="selectAll" resultType="com.object.TTT11">

       select id,name,address from TTT11

   </select>

   <insert id="insert">

       insert into TTT11 values(#{id},#{name},#{address})

   </insert>

   <delete id="deleteById" >

       delete from TTT11 where id = #{id}

   </delete>

   <update id="update">

       update TTT11 set address =#{address} where id=#{id}

   </update>

</mapper>


Service接口和实现类


2.png


public interface TTTService {

   List<TTT11> selectAll();

}

public class TTTServiceimpl implements TTTService {

   private TTTDao tttDao;

 

   public TTTServiceimpl(TTTDao tttDao) {

       this.tttDao = tttDao;

   }

   @Override

   public List<TTT11> selectAll() {

       return tttDao.selectAll();

   }

}

jdbc.properties

jdbc.driver=com.mysql.cj.jdbc.Driver

jdbc.url=jdbc:mysql://IP:3306/mysql

jdbc.user= root

jdbc.password= 111111

mybatis-config.xml主配置文件

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE configuration

       PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

       "https://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

   <settings>

       <!-- logImpl设置mybatis输出日志-->

       <setting name="logImpl" value="STDOUT_LOGGING"/>

   </settings>

   <mappers>

       <package name="com.dao"/>

   </mappers>

</configuration>


SpringConfig.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:tx="http://www.springframework.org/schema/tx"

      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

                          http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsd">

<!--        组件扫描-->

       <context:component-scan base-package="com"></context:component-scan>

       <!--引入外部文件-->

       <context:property-placeholder location="jdbc.properties"/>

<!--        声明数据来源-->

       <bean id="dateSource" class="com.alibaba.druid.pool.DruidDataSource">

               <property name="driverClassName" value="${jdbc.driver}"></property>

               <property name="url" value="${jdbc.url}"></property>

               <property name="username" value="${jdbc.user}"></property>

               <property name="password" value="${jdbc.password}"></property>

       </bean>

       <!--配置SqlSessionFactoryBean-->

       <bean id="factory" class="org.mybatis.spring.SqlSessionFactoryBean">

               <!--注入数据源-->

               <property name="dataSource" ref="dateSource"/>

               <!--指定Mybatis-config.xml主配置文件-->

               <property name="configLocation" value="mybatis-config.xml"/>

               <!--注入别名-->

               <property name="typeAliasesPackage" value="com.object"/>

       </bean>

               <!--扫描mapper配置器 SqlSession.Mapper()-->

       <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

               <property name="sqlSessionFactoryBeanName" value="factory"></property>

               <property name="basePackage" value="com.dao"/>

       </bean>

       <bean id="tttServiceimpl" class="com.service.TTTServiceimpl">

               <!--构造注入-->

               <constructor-arg index="0" ref="TTTDao"></constructor-arg>

       </bean>

               <!--事务管理器-->

       <bean id="TransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

               <property name="dataSource" ref="dateSource"/>

       </bean>

<!--        启动事务注解-->

       <tx:annotation-driven transaction-manager="TransactionManager"/>

</beans>


测试类

public class smtest {

   @Test

   public void test(){

       ApplicationContext applicationContext =new ClassPathXmlApplicationContext("SpringConfig.xml");

       TTTService tttServiceimpl = applicationContext.getBean("tttServiceimpl", TTTService.class);

       tttServiceimpl.selectAll();

   }

}

1.png



如有错误请指正,谢谢

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
1月前
|
XML Java 应用服务中间件
【SpringBoot(一)】Spring的认知、容器功能讲解与自动装配原理的入门,带你熟悉Springboot中基本的注解使用
SpringBoot专栏开篇第一章,讲述认识SpringBoot、Bean容器功能的讲解、自动装配原理的入门,还有其他常用的Springboot注解!如果想要了解SpringBoot,那么就进来看看吧!
346 2
|
6月前
|
人工智能 Java API
Spring AI 实战|Spring AI入门之DeepSeek调用
本文介绍了Spring AI框架如何帮助Java开发者轻松集成和使用大模型API。文章从Spring AI的初探开始,探讨了其核心能力及应用场景,包括手动与自动发起请求、流式响应实现打字机效果,以及兼容不同AI服务(如DeepSeek、通义千问)的方法。同时,还详细讲解了如何在生产环境中添加监控以优化性能和成本管理。通过Spring AI,开发者可以简化大模型调用流程,降低复杂度,为企业智能应用开发提供强大支持。最后,文章展望了Spring AI在未来AI时代的重要作用,鼓励开发者积极拥抱这一技术变革。
2491 71
Spring AI 实战|Spring AI入门之DeepSeek调用
|
7月前
|
安全 Java 数据库
Spring Security 实战指南:从入门到精通
本文详细介绍了Spring Security在Java Web项目中的应用,涵盖登录、权限控制与安全防护等功能。通过Filter Chain过滤器链实现请求拦截与认证授权,核心组件包括AuthenticationProvider和UserDetailsService,负责用户信息加载与密码验证。文章还解析了项目结构,如SecurityConfig配置类、User实体类及自定义登录逻辑,并探讨了Method-Level Security、CSRF防护、Remember-Me等进阶功能。最后总结了Spring Security的核心机制与常见配置,帮助开发者构建健壮的安全系统。
445 0
|
8月前
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于 xml 的整合
本教程介绍了基于XML的MyBatis整合方式。首先在`application.yml`中配置XML路径,如`classpath:mapper/*.xml`,然后创建`UserMapper.xml`文件定义SQL映射,包括`resultMap`和查询语句。通过设置`namespace`关联Mapper接口,实现如`getUserByName`的方法。Controller层调用Service完成测试,访问`/getUserByName/{name}`即可返回用户信息。为简化Mapper扫描,推荐在Spring Boot启动类用`@MapperScan`注解指定包路径避免逐个添加`@Mapper`
452 0
|
5月前
|
Java 数据库连接 数据库
Spring boot 使用mybatis generator 自动生成代码插件
本文介绍了在Spring Boot项目中使用MyBatis Generator插件自动生成代码的详细步骤。首先创建一个新的Spring Boot项目,接着引入MyBatis Generator插件并配置`pom.xml`文件。然后删除默认的`application.properties`文件,创建`application.yml`进行相关配置,如设置Mapper路径和实体类包名。重点在于配置`generatorConfig.xml`文件,包括数据库驱动、连接信息、生成模型、映射文件及DAO的包名和位置。最后通过IDE配置运行插件生成代码,并在主类添加`@MapperScan`注解完成整合
998 1
Spring boot 使用mybatis generator 自动生成代码插件
|
10月前
|
SQL 缓存 Java
【吐血整理】MyBatis从入门到精通
本文介绍了 MyBatis 的使用指南,涵盖开发环境搭建、基础操作实例和进阶特性。首先,详细描述了 JDK 和 IDE 的安装及依赖引入,确保项目顺利运行。接着,通过创建用户表和实体类,演示了 CRUD 操作的全流程,包括查询、插入、更新和删除。最后,深入探讨了动态 SQL 和缓存机制等高级功能,帮助开发者提升数据库交互效率和代码灵活性。掌握这些内容,能显著提高 Java 编程中的数据库操作能力。
1261 4
|
5月前
|
Java 数据库连接 API
Java 对象模型现代化实践 基于 Spring Boot 与 MyBatis Plus 的实现方案深度解析
本文介绍了基于Spring Boot与MyBatis-Plus的Java对象模型现代化实践方案。采用Spring Boot 3.1.2作为基础框架,结合MyBatis-Plus 3.5.3.1进行数据访问层实现,使用Lombok简化PO对象,MapStruct处理对象转换。文章详细讲解了数据库设计、PO对象实现、DAO层构建、业务逻辑封装以及DTO/VO转换等核心环节,提供了一个完整的现代化Java对象模型实现案例。通过分层设计和对象转换,实现了业务逻辑与数据访问的解耦,提高了代码的可维护性和扩展性。
226 1
|
4月前
|
前端开发 Java API
基于 Spring Boot 3 与 React 的 Java 学生信息管理系统从入门到精通实操指南
本项目基于Spring Boot 3与React 18构建学生信息管理系统,涵盖前后端开发、容器化部署及测试监控,提供完整实操指南与源码,助你掌握Java全栈开发技能。
234 0
|
4月前
|
SQL Java 数据库连接
Spring、SpringMVC 与 MyBatis 核心知识点解析
我梳理的这些内容,涵盖了 Spring、SpringMVC 和 MyBatis 的核心知识点。 在 Spring 中,我了解到 IOC 是控制反转,把对象控制权交容器;DI 是依赖注入,有三种实现方式。Bean 有五种作用域,单例 bean 的线程安全问题及自动装配方式也清晰了。事务基于数据库和 AOP,有失效场景和七种传播行为。AOP 是面向切面编程,动态代理有 JDK 和 CGLIB 两种。 SpringMVC 的 11 步执行流程我烂熟于心,还有那些常用注解的用法。 MyBatis 里,#{} 和 ${} 的区别很关键,获取主键、处理字段与属性名不匹配的方法也掌握了。多表查询、动态
153 0
|
6月前
|
SQL XML Java
菜鸟之路Day33一一Mybatis入门
本文是《菜鸟之路Day33——Mybatis入门》的教程,作者blue于2025年5月18日撰写。文章介绍了MyBatis作为一款优秀的持久层框架,如何简化JDBC开发。通过创建SpringBoot工程、数据库表`user`及实体类`User`,引入MyBatis依赖并配置数据库连接信息,使用注解方式编写SQL语句实现查询所有用户数据的功能。此外,还展示了如何通过Lombok优化实体类代码,减少冗余的getter/setter等方法,提高开发效率。最后通过单元测试验证功能的正确性。
261 19

热门文章

最新文章

下一篇
oss云网关配置