本文介绍了Java主流框架实战,包括Spring、Spring Boot和MyBatis的基础知识和使用方法,涵盖了从框架概念到实际项目开发的全过程。文章详细讲解了这些框架的核心功能和配置方法,并通过实战案例展示了如何整合Spring和MyBatis进行数据库操作。通过学习,读者可以快速掌握Java主流框架,提高开发效率和应用性能。
引入Java主流框架 Java框架简介Java框架是指一系列预先定义的代码模块,这些模块用于简化开发过程、提高开发效率。它们提供了开发中常用的通用功能,如数据库操作、事务管理、依赖注入等。Java框架使得开发人员可以专注于业务逻辑的实现,而无需重复编写基础代码。
为什么需要学习主流框架学习主流框架对于Java开发者而言至关重要:
- 提高开发效率:框架提供了许多通用功能,开发者只需调用框架提供的API即可完成开发工作,无需从头编写。
- 简化代码:框架封装了大量的功能,减少了开发者的工作量,同时也减少了代码的冗余。
- 提高代码质量:框架通常经过长时间的测试和优化,使用它们可以确保代码的质量,避免常见的错误。
- 便于维护:框架的代码结构清晰,使用框架开发的应用程序更容易维护。
- 支持社区:主流框架一般有庞大的社区支持,遇到问题可以参考大量的文档和示例,便于解决实际问题。
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项目,实现两个类:User
和UserService
。
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使用application.properties
或application.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是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis简化了数据库操作,通过配置文件将Java对象与数据库表字段进行映射,极大地方便了数据库操作。
MyBatis通过SqlSessionFactory
对象来创建SqlSession
,通过SqlSession
来执行SQL语句,返回结果集。
核心接口
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的SqlSessionFactoryBean
和MapperScannerConfigurer
来配置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等,以进一步扩展你的技术栈。
推荐学习资源
- 官方网站文档:Spring官方文档、Spring Boot官方文档、MyBatis官方文档。
- 在线课程:可以参考慕课网(https://www.imooc.com/)等在线学习平台,获取更多详细的教程和实战案例。
通过不断学习和实践,你将能够更好地掌握这些框架,并在实际项目中发挥出它们的优势。
共同学习,写下你的评论
评论加载中...
作者其他优质文章