Spring Boot+MySQL+Spring Data JPA一个Web的Demo

1 概述

一个简单的Web项目配合MySQL+Hibernate+Tomcat的简单示例demo,很容易在此基础上扩展成自己的项目。

2 创建工程

笔者IDE为IntelliJ IDEA,新建一个工程,选择Spring Initalizer

在这里插入图片描述

war/jar均可,这里选择war

在这里插入图片描述

选择Spring Web+Spring Data JPA+MySQL Driver

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

然后完成即可,首次运行的话配置依赖需要一点时间,请耐心等待。

3 配置数据源

配置数据源分为两部分,一部分是建表与建用户,另一部分是在application.properties中配置的。

3.1 创建库与用户

create database test;

注意这里不用创建表了,因为Hibernate从实体类自动创建一个同名的表。

接着创建用户:

create user 'db'@'%' identified by 'xxxxx';

3.2 用户授权

grant all on test.* to 'db'@'%';

这里建议授权all,因为后面Hibernate会用到建表权限,不能仅仅授权增删查改。

3.3 配置application.properties

配置四个属性:

spring.jpa.hibernate.ddl-auto=
spring.datasource.url=
spring.datasource.username=
spring.datasource.password=

第一个属性可以取值如下:

  • noneMySQL的默认值,不会改变数据库结构
  • updateHibernate会根据给出的实体类去改变数据库
  • create:创建数据库但是不会在关闭的时候删除
  • create-drop:创建数据库,当SessionFactory关闭时删除数据库,这个是H2与其他嵌入式数据库的默认选项

第一次运行时必须设置为updatecreate,因为还不知道确切的实体类,第一次运行后,可以设置为updatenone

url的话对于MySQL来说是

jdbc:mysql://ip:3306/database

剩下的两个为用户名与密码。

參考配置如下:

在这里插入图片描述

4 实体类

这里创建一个简单的User实体类,需要用到@Entity,@Id,@GeneratedValue@GenerationType注解。

@Entity用于标识实体类,@Id用于标识主键,@GeneratedValue@GenerationType用于配置主键。

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
    private String name;

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

5 持久层

创建Repository保存用户记录,需要继承CrudRepository<T,ID>, 第一个类型为实体类,第二个类型为主键类型。

public interface UserRepository extends CrudRepository<User,Integer> {}

6 控制层

控制层用于控制HTTP请求,在控制器中可以配置不同的路径实现不同的操作。

@Controller
@RequestMapping(path = "/demo")
public class MainController {
    @Autowired
    private UserRepository userRepository;
    
    @PostMapping(path = "/add")
    public @ResponseBody String addNewUser(@RequestParam String name)
    {
        User user = new User();
        user.setName(name);
        userRepository.save(user);
        return "Saved.";
    }
    
    @GetMapping(path = "/all")
    public @ResponseBody Iterable<User> getAllUsers()
    {
        return userRepository.findAll();
    }
}
  • @RequestMapping中的值表示URL以此值开头
  • @PostMapping是仅处理POST请求的路径
  • @ResponseBody表示返回的类型
  • @RequestParam表示一个从GETPOST中获取的参数
  • getAllUsers()会返回一个JSON或者XML

7 IDE上测试

首先输入:

localhost:8080/demo/all

由于先前已经有一行数据所以有显示:

在这里插入图片描述

否则的话应该显示为[]

接下来可以添加数据:

curl localhost:8080/demo/add -d name=123

响应:

在这里插入图片描述

接下来可以选择再次查看:

在这里插入图片描述

再看看数据库:

在这里插入图片描述

8 打包发布

Build->Build Artifacts

在这里插入图片描述

在这里插入图片描述

Build即可。

然后会在项目目录的target下有一个war文件,就是这个了。

在这里插入图片描述

改名字放到Tomcatwebapps下,比如笔者改成了demo.war

在这里插入图片描述

接着可以去访问了,注意路径,这里的路径是WAR的路径加上@RequestMapping的路径再加上@PostMapping@GetMapping路径:

在这里插入图片描述

9 完整代码

  • 7
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 好的,下面是一个简单的Atomikos集成Spring Boot的示例。 首先,你需要在Spring Boot项目中添加以下依赖关系: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jta-atomikos</artifactId> </dependency> <dependency> <groupId>com.atomikos</groupId> <artifactId>transactions-jdbc</artifactId> <version>4.0.6</version> </dependency> ``` 接下来,你需要在你的应用程序配置文件中添加以下内容: ```yaml spring: jta: atomikos: datasource: xa-data-source-class-name: com.mysql.cj.jdbc.MysqlXADataSource unique-resource-name: myDataSource xa-properties: databaseName: mydatabase serverName: localhost user: myusername password: mypassword ``` 此配置文件设置了Atomikos事务管理器以使用名为“myDataSource”的数据源。你需要根据你自己的数据库设置修改这些属性。 接下来,你可以使用 `@Transactional` 注释来标记你的事务性方法,如下所示: ```java @Service public class MyService { @Autowired private JdbcTemplate jdbcTemplate; @Transactional public void saveData() { jdbcTemplate.update("INSERT INTO mytable (column1, column2) VALUES (?, ?)", "value1", "value2"); } } ``` 最后,你需要在你的应用程序类上添加以下注释: ```java @SpringBootApplication @EnableTransactionManagement public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } } ``` 这是一个基本的Atomikos和Spring Boot集成示例。你可以根据你的应用程序需求进行调整和扩展。 ### 回答2: Atomikos是一个开源的事务管理框架,它提供了分布式事务的支持。Spring Boot一个用于简化Java应用开发的框架。下面是一个Atomikos集成Spring Boot的示例: 首先,您需要在pom.xml文件中添加Atomikos和Spring Boot的相关依赖: ```xml <dependencies> <!-- Atomikos --> <dependency> <groupId>com.atomikos</groupId> <artifactId>transactions-jta</artifactId> <version>4.0.6</version> </dependency> <!-- Spring Boot --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> ``` 接下来,您需要创建一个配置类来配置Atomikos和Spring Boot的集成。例如,创建一个名为`AtomikosConfig`的类: ```java import com.atomikos.icatch.jta.UserTransactionImp; import com.atomikos.icatch.jta.UserTransactionManager; import org.springframework.boot.jta.atomikos.AtomikosDataSourceBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.jta.JtaTransactionManager; import javax.transaction.SystemException; import javax.transaction.UserTransaction; @Configuration public class AtomikosConfig { @Bean(initMethod = "init", destroyMethod = "close") public UserTransactionManager userTransactionManager() throws SystemException { UserTransactionManager userTransactionManager = new UserTransactionManager(); userTransactionManager.setForceShutdown(true); return userTransactionManager; } @Bean public UserTransaction userTransaction() throws SystemException { UserTransactionImp userTransactionImp = new UserTransactionImp(); userTransactionImp.setTransactionTimeout(300); return userTransactionImp; } @Bean public JtaTransactionManager transactionManager(UserTransactionManager userTransactionManager, UserTransaction userTransaction) { JtaTransactionManager transactionManager = new JtaTransactionManager(); transactionManager.setTransactionManager(userTransactionManager); transactionManager.setUserTransaction(userTransaction); return transactionManager; } @Bean public AtomikosDataSourceBean dataSourceBean() { AtomikosDataSourceBean dataSourceBean = new AtomikosDataSourceBean(); dataSourceBean.setXaDataSourceClassName("your.xaDataSourceClassName"); dataSourceBean.setUniqueResourceName("your.uniqueResourceName"); dataSourceBean.setXaProperties(xaProperties()); return dataSourceBean; } private Properties xaProperties() { Properties properties = new Properties(); properties.put("your.property1", "value1"); properties.put("your.property2", "value2"); return properties; } } ``` 修改上述代码中的`your.xaDataSourceClassName`,`your.uniqueResourceName`,`your.property1`和`your.property2`为您自己的配置。 最后,在Spring Boot主类中添加`@EnableTransactionManagement`注解,以启用事务管理: ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.transaction.annotation.EnableTransactionManagement; @SpringBootApplication @EnableTransactionManagement public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 这样,您就成功集成了Atomikos和Spring Boot。您可以在您的应用程序中使用`@Transactional`注解来实现分布式事务的管理。 希望这个示例能帮助到您! ### 回答3: Atomikos 是一个开源的事务管理框架,用于处理分布式事务。Spring Boot一个开发微服务的框架,可以简化应用程序的配置和部署。 要集成 Atomikos 和 Spring Boot,可以按照以下步骤进行操作: 1. 首先,在 pom.xml 文件中添加 Spring Boot 和 Atomikos 的依赖项。例如,可以添加以下依赖项: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>com.atomikos</groupId> <artifactId>atomikos-transactions-jta</artifactId> <version>4.0.6</version> </dependency> ``` 2. 然后,在 application.properties 文件中配置 Atomikos 的相关属性。例如,可以添加以下配置: ``` spring.jta.atomikos.connectionfactory.datasourceClassName=com.mysql.cj.jdbc.MysqlXADataSource spring.jta.atomikos.connectionfactory.xa-properties.url=jdbc:mysql://localhost:3306/demo?useSSL=false&serverTimezone=GMT%2B8 spring.jta.atomikos.connectionfactory.xa-properties.user=root spring.jta.atomikos.connectionfactory.xa-properties.password=root spring.jta.atomikos.datasource.minPoolSize=1 spring.jta.atomikos.datasource.maxPoolSize=5 ``` 3. 接下来,创建一个 Spring Boot 的启动类,并在其中使用 @EnableTransactionManagement 注解启用事务管理。例如: ```java @SpringBootApplication @EnableTransactionManagement public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` 4. 在代码中使用 Atomikos 进行事务管理。例如,可以使用 @Transactional 注解将方法标记为事务性方法: ```java @Service public class UserService { @Autowired private UserRepository userRepository; @Transactional public void addUser(User user) { userRepository.save(user); } // 其他业务逻辑代码 } ``` 5. 最后,创建一个 Controller 类,处理相关的 HTTP 请求。例如: ```java @RestController @RequestMapping("/users") public class UserController { @Autowired private UserService userService; @PostMapping public ResponseEntity<String> addUser(@RequestBody User user) { userService.addUser(user); return ResponseEntity.ok("User added successfully"); } // 其他请求处理方法 } ``` 这是一个简单的 Atomikos 集成 Spring Bootdemo。通过集成 Atomikos,可以实现分布式事务管理,确保数据的一致性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值