为了账号安全,请及时绑定邮箱和手机立即绑定

Java主流框架实战:新手入门与初级教程

标签:
Java Spring
概述

本文介绍了Java主流框架实战,包括Spring、Spring Boot和MyBatis的基础知识和使用方法,涵盖了从框架概念到实际项目开发的全过程。文章详细讲解了这些框架的核心功能和配置方法,并通过实战案例展示了如何整合Spring和MyBatis进行数据库操作。通过学习,读者可以快速掌握Java主流框架,提高开发效率和应用性能。

引入Java主流框架
Java框架简介

Java框架是指一系列预先定义的代码模块,这些模块用于简化开发过程、提高开发效率。它们提供了开发中常用的通用功能,如数据库操作、事务管理、依赖注入等。Java框架使得开发人员可以专注于业务逻辑的实现,而无需重复编写基础代码。

为什么需要学习主流框架

学习主流框架对于Java开发者而言至关重要:

  1. 提高开发效率:框架提供了许多通用功能,开发者只需调用框架提供的API即可完成开发工作,无需从头编写。
  2. 简化代码:框架封装了大量的功能,减少了开发者的工作量,同时也减少了代码的冗余。
  3. 提高代码质量:框架通常经过长时间的测试和优化,使用它们可以确保代码的质量,避免常见的错误。
  4. 便于维护:框架的代码结构清晰,使用框架开发的应用程序更容易维护。
  5. 支持社区:主流框架一般有庞大的社区支持,遇到问题可以参考大量的文档和示例,便于解决实际问题。
常用Java框架简介

Spring框架

Spring是一个开源的Java应用框架,它通过提供简易的编程模型简化企业开发。Spring框架提供了一系列支持企业级应用开发的解决方案,包括依赖注入、面向切面编程、MVC框架、事务管理等。

Spring Boot

Spring Boot是Spring框架的一个子项目,它简化了Spring应用的开发流程,主要用于快速构建独立的、生产级别的基于Spring的应用程序。Spring Boot通过约定优于配置的方式,使开发者可以快速开发应用程序,无需配置大量的XML文件。

MyBatis

MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis简化了数据库操作,通过配置文件将Java对象与数据库表字段进行映射,极大地方便了数据库操作。

Spring框架基础
Spring框架概述

Spring框架是一个轻量级的Java开发框架,它由Rod Johnson在2003年编写,并在2004年正式发布。Spring框架的核心是依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented Programming, AOP),它简化了企业应用开发,提供了丰富的功能支持,如事务管理、安全控制、内嵌式的定时任务调度等。

Spring框架的基本概念

依赖注入(DI)

依赖注入是一种设计模式,用于将程序组件的依赖关系从代码中解耦出来,通过配置文件或构造函数的方式注入这些依赖关系。

示例代码

public class UserService {
    private UserRepository userRepository;

    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public void addUser(User user) {
        userRepository.save(user);
    }
}

面向切面编程(AOP)

面向切面编程是一种编程范式,它允许在不修改源代码的情况下增加或修改方法的代码执行流程,主要用于日志记录、事务管理等功能。

示例代码

public class UserService {
    public void addUser(User user) {
        // 业务逻辑
    }
}

@Aspect
@Component
public class UserServiceAspect {
    @Before("execution(* com.example.service.UserService.addUser(..))")
    public void logBefore(JoinPoint joinPoint) {
        System.out.println("添加用户之前");
    }
}
第一个Spring项目实例

创建一个简单的Spring项目,实现两个类:UserUserService

User.java

public class User {
    private int id;
    private String name;

    public User(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

UserService.java

public class UserService {
    private User user;

    public UserService(User user) {
        this.user = user;
    }

    public void addUser() {
        System.out.println("添加用户:" + user.getName());
    }
}

applicationContext.xml

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="user" class="com.example.User">
        <constructor-arg>
            <value>1</value>
        </constructor-arg>
        <constructor-arg>
            <value>张三</value>
        </constructor-arg>
    </bean>

    <bean id="userService" class="com.example.UserService">
        <constructor-arg ref="user"/>
    </bean>
</beans>

MainApp.java

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainApp {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserService userService = (UserService) context.getBean("userService");
        userService.addUser();
    }
}

运行以上代码,将输出“添加用户:张三”。

Spring Boot快速入门
Spring Boot简介

Spring Boot是基于Spring框架的一个子项目,它简化了Spring应用的开发流程,简化了配置文件的编写,使开发者可以快速开发独立的、生产级别的基于Spring的应用程序。Spring Boot通过约定优于配置的方式,使开发流程更加简化。

创建第一个Spring Boot应用

要创建第一个Spring Boot应用,首先需要下载并安装Spring Boot工具,然后创建一个新的Spring Boot项目。

创建Spring Boot项目

使用Spring Initializr(可以在线访问https://start.spring.io/)创建一个新的Spring Boot项目,选择对应的Java版本、项目打包类型(JAR或WAR)、依赖等,点击“Generate”下载项目压缩包,解压后导入IDE。

项目结构

项目结构如下:

src
├── main
│   ├── java
│   │   └── com
│   │       └── example
│   │           └── HelloWorldApplication.java
│   ├── resources
│   │   ├── application.properties
│   │   └── static
│   │   └── templates
└── test
    └── java
        └── com
            └── example
                └── HelloWorldApplicationTests.java

HelloWorldApplication.java

package com.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class HelloWorldApplication {
    public static void main(String[] args) {
        SpringApplication.run(HelloWorldApplication.class, args);
    }
}

application.properties

server.port=8080

以上代码创建了一个简单的Spring Boot应用,启动应用后可以在http://localhost:8080访问应用。

Spring Boot项目配置与运行

配置文件

Spring Boot使用application.propertiesapplication.yml文件来配置应用。这些配置文件通常位于src/main/resources目录下。

application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

运行项目

运行Spring Boot项目可以通过IDE或命令行方式。

通过IDE运行

在IDE中,右键点击HelloWorldApplication.java,选择“Run As Java Application”运行项目。

通过命令行运行

在命令行中,使用以下命令运行项目:

mvn spring-boot:run

运行后可以在控制台看到应用启动信息,并且可以在浏览器中访问http://localhost:8080

MyBatis框架实战
MyBatis入门介绍

MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis简化了数据库操作,通过配置文件将Java对象与数据库表字段进行映射,极大地方便了数据库操作。

MyBatis通过SqlSessionFactory对象来创建SqlSession,通过SqlSession来执行SQL语句,返回结果集。

MyBatis核心概念与配置

核心接口

  • SqlSessionFactory:用于创建SqlSession
  • SqlSession:用于执行数据库操作,如增删改查等。
  • Mapper:映射接口,对应于数据库表的Java类。

配置文件

MyBatis的配置文件通常位于src/main/resources目录下的mybatis-config.xml文件中,配置文件中定义了数据库连接信息、映射文件等。

mybatis-config.xml

<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/example/UserMapper.xml"/>
    </mappers>
</configuration>

数据库映射

映射文件通常位于src/main/resources目录下,映射文件中定义了Java对象与数据库表字段的关系。

UserMapper.xml

<mapper namespace="com.example.UserMapper">
    <select id="selectUser" resultType="com.example.User">
        SELECT id, name FROM user WHERE id = #{id}
    </select>
</mapper>

Java对象

Java对象用于封装数据库表的字段。

User.java

package com.example;

public class User {
    private int id;
    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
使用MyBatis进行数据库操作

创建一个简单的MyBatis项目,实现从数据库中读取用户信息。

UserMapper.java

package com.example;

import java.util.List;

public interface UserMapper {
    List<User> selectUsers();
}

UserMapper.xml

<mapper namespace="com.example.UserMapper">
    <select id="selectUsers" resultType="com.example.User">
        SELECT id, name FROM user
    </select>
</mapper>

UserService.java

package com.example;

import org.apache.ibatis.session.SqlSession;

import java.util.List;

public class UserService {
    private SqlSession sqlSession;

    public UserService(SqlSession sqlSession) {
        this.sqlSession = sqlSession;
    }

    public List<User> getUsers() {
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        return mapper.selectUsers();
    }
}

MainApp.java

package com.example;

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.InputStream;
import java.util.List;

public class MainApp {
    public static void main(String[] args) throws Exception {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession session = sqlSessionFactory.openSession();
        try {
            UserService userService = new UserService(session);
            List<User> users = userService.getUsers();
            for (User user : users) {
                System.out.println(user.getName());
            }
        } finally {
            session.close();
        }
    }
}

运行以上代码,将从数据库中读取用户信息并打印到控制台。

整合Spring与MyBatis
整合Spring和MyBatis的步骤

整合Spring和MyBatis可以利用Spring的依赖注入功能,将MyBatis的配置信息注入到Spring容器中,从而实现数据库操作。

步骤一:创建MyBatis配置文件

创建mybatis-config.xml文件,配置数据库连接信息和映射文件。

<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/example/UserMapper.xml"/>
    </mappers>
</configuration>

步骤二:配置Spring配置文件

使用Spring的SqlSessionFactoryBeanMapperScannerConfigurer来配置MyBatis。

applicationContext.xml

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://mybatis.org/schema/mybatis-spring
       http://mybatis.org/schema/mybatis-spring.xsd">
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        <property name="dataSource" ref="dataSource"/>
    </bean>
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
    </bean>
    <mybatis:scan base-package="com.example"/>
</beans>

步骤三:创建Mapper接口

创建Mapper接口,该接口用于定义数据库操作的方法。

UserMapper.java

package com.example;

import java.util.List;

public interface UserMapper {
    List<User> selectUsers();
}

步骤四:创建Mapper XML文件

创建Mapper XML文件,该文件包含SQL语句和结果映射。

UserMapper.xml

<mapper namespace="com.example.UserMapper">
    <select id="selectUsers" resultType="com.example.User">
        SELECT id, name FROM user
    </select>
</mapper>

步骤五:创建服务类

创建服务类,该类用于调用Mapper接口的方法。

UserService.java

package com.example;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;

    public List<User> getUsers() {
        return userMapper.selectUsers();
    }
}

步骤六:配置Spring Boot

在Spring Boot项目中配置MyBatis和Spring。

HelloWorldApplication.java

package com.example;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
@MapperScan("com.example")
@ComponentScan(basePackages = "com.example")
public class HelloWorldApplication {
    public static void main(String[] args) {
        SpringApplication.run(HelloWorldApplication.class, args);
    }
}

application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
实战项目搭建与开发

项目结构

项目结构如下:

src
├── main
│   ├── java
│   │   └── com
│   │       └── example
│   │           ├── HelloWorldApplication.java
│   │           ├── UserService.java
│   │           ├── UserMapper.java
│   │           └── User.java
│   ├── resources
│   │   ├── mybatis-config.xml
│   │   ├── application.properties
│   │   └── UserMapper.xml
└── test
    └── java
        └── com
            └── example
                └── HelloWorldApplicationTests.java

代码实现

HelloWorldApplication.java

package com.example;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
@MapperScan("com.example")
@ComponentScan(basePackages = "com.example")
public class HelloWorldApplication {
    public static void main(String[] args) {
        SpringApplication.run(HelloWorldApplication.class, args);
    }
}

UserService.java

package com.example;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;

    public List<User> getUsers() {
        return userMapper.selectUsers();
    }
}

UserMapper.java

package com.example;

import java.util.List;

public interface UserMapper {
    List<User> selectUsers();
}

User.java

package com.example;

public class User {
    private int id;
    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

UserMapper.xml

<mapper namespace="com.example.UserMapper">
    <select id="selectUsers" resultType="com.example.User">
        SELECT id, name FROM user
    </select>
</mapper>

mybatis-config.xml

<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/example/UserMapper.xml"/>
    </mappers>
</configuration>

application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
常见问题与解决方案

问题一:找不到Mapper接口

确保Mapper接口的包名和@MapperScan注解中的包名一致,且Mapper接口中定义的方法和Mapper XML文件中的SQL语句一致。

问题二:数据库连接失败

检查数据库连接信息是否正确,确保数据库服务已经启动,并且账号和密码正确。

问题三:SQL执行失败

检查Mapper XML文件中的SQL语句是否正确,确保数据库表结构和Java对象字段一致。

总结与展望
总结学习的内容

通过本教程,你已经学会了Java主流框架Spring、Spring Boot和MyBatis的基础知识和使用方法。涵盖了从框架基础概念到实战项目开发的全过程。掌握了这些内容,你将能够快速开发高质量的Java应用程序。

关键概念

  • Spring框架:依赖注入、面向切面编程。
  • Spring Boot:简化配置、快速开发。
  • MyBatis:数据库操作、数据库映射。

实战案例

  • 整合Spring和MyBatis,实现数据库操作。
  • 创建简单项目,实现数据库查询功能。
前景展望与进一步学习方向

随着技术的不断发展,Java主流框架也在不断更新迭代。Spring框架已经发展到了5.x版本,Spring Boot也已经更新到2.x版本。未来,这些框架将继续引入新的功能,优化已有功能,提高开发效率和应用性能。

进一步学习方向

  • 深入学习Spring:学习Spring的高级特性,如WebSocket、Spring Security等。
  • 学习Spring Boot 2.x:掌握Spring Boot的新特性和最佳实践。
  • 学习MyBatis Plus:MyBatis的一个扩展库,提供了更强大的功能。
  • 学习其他框架:例如Spring Cloud、Spring Data等,以进一步扩展你的技术栈。

推荐学习资源

通过不断学习和实践,你将能够更好地掌握这些框架,并在实际项目中发挥出它们的优势。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消