소스 검색

hibernate

admin 1 년 전
부모
커밋
f5ba194dc2

+ 58 - 0
hibernateSpringBoot/pom.xml

@@ -0,0 +1,58 @@
+<?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>hibernateSpringBoot</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.2.2.RELEASE</version>
+    </parent>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>

+ 11 - 0
hibernateSpringBoot/src/main/java/org/example/Main.java

@@ -0,0 +1,11 @@
+package org.example;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class Main {
+    public static void main(String[] args){
+        SpringApplication.run(Main.class, args);
+    }
+}

+ 42 - 0
hibernateSpringBoot/src/main/java/org/example/Result.java

@@ -0,0 +1,42 @@
+package org.example;
+
+public class Result {
+    private int code = 200;
+    private String msg = "操作成功";
+    private Object data;
+
+    public Result(int code,String msg){
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public Result(Object data){
+        this.data = data;
+    }
+
+    public int getCode() {
+        return code;
+    }
+
+    public void setCode(int code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public Object getData() {
+        return data;
+    }
+
+    public void setData(Object data) {
+        this.data = data;
+    }
+}
+
+

+ 55 - 0
hibernateSpringBoot/src/main/java/org/example/User.java

@@ -0,0 +1,55 @@
+package org.example;
+
+import javax.persistence.*;
+
+/**
+ * user 实体类
+ */
+@Entity
+@Table(name = "t_user")
+public class User {
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    Integer id;
+
+    @Column(name = "name")
+    String name;
+
+    @Column(name = "age")
+    int age;
+
+    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;
+    }
+
+    public int getAge() {
+        return age;
+    }
+
+    public void setAge(int age) {
+        this.age = age;
+    }
+
+    @Override
+    public String toString() {
+        return "User{" +
+                "id=" + id +
+                ", name='" + name + '\'' +
+                ", age=" + age +
+                '}';
+    }
+}
+
+

+ 45 - 0
hibernateSpringBoot/src/main/java/org/example/UserController.java

@@ -0,0 +1,45 @@
+package org.example;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class UserController {
+    @Autowired
+    UserService userService;
+
+    /**
+     * 保存user
+     * @param user
+     * @return
+     */
+    @PostMapping("/saveUser")
+    public Result saveUser(@RequestBody User user){
+        return userService.saveUser(user);
+    }
+
+    /**
+     * 查询所有user
+     * @return
+     */
+    @GetMapping("/queryAll")
+    public Result queryAll(){
+        return userService.queryAll();
+    }
+
+    /**
+     * 通过name和age查询
+     * @param name
+     * @param age
+     * @return
+     */
+    @GetMapping("/getByNameAndAge")
+    public Result getByNameAndAge(String name,int age){
+        return userService.getByNameAndAge(name,age);
+    }
+}
+
+

+ 22 - 0
hibernateSpringBoot/src/main/java/org/example/UserRepository.java

@@ -0,0 +1,22 @@
+package org.example;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * 继承JpaRepository<User,Integer>
+ *     User:要操作的表格对象
+ *     Integer:主键 ID 的数据类型
+ *
+ *     继承的这个类里面封装了基本的增删改查方法直接调用即可,
+ *     如果集成的方法没法满足需求,可以在此封装,但是一定要注意 “命名规范”
+ */
+@Repository(value = "userRepository")
+public interface UserRepository extends JpaRepository<User,Integer> {
+    List<User> getByNameAndAge(String name,int age);
+}
+
+
+

+ 33 - 0
hibernateSpringBoot/src/main/java/org/example/UserService.java

@@ -0,0 +1,33 @@
+package org.example;
+
+/**
+ * 接口层:负责逻辑处理访问数据库层
+ */
+public interface UserService {
+    /**
+     * 保存 user 对象
+     *
+     * @param user
+     * @return
+     */
+    Result saveUser(User user);
+
+    /**
+     * 查询所有user
+     *
+     * @return
+     */
+    Result queryAll();
+
+    /**
+     * 通过name和age查询
+     *
+     * @param name
+     * @param age
+     * @return
+     */
+    Result getByNameAndAge(String name, int age);
+}
+
+
+

+ 35 - 0
hibernateSpringBoot/src/main/java/org/example/UserServiceImpl.java

@@ -0,0 +1,35 @@
+package org.example;
+
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * 实现接口的抽象方法
+ */
+@Service
+public class UserServiceImpl implements UserService {
+    @Resource
+    UserRepository userRepository;
+
+    @Override
+    public Result saveUser(User user) {
+        User save = userRepository.save(user);
+        return new Result(save);
+    }
+
+    @Override
+    public Result queryAll() {
+        List <User> list = userRepository.findAll();
+        return new Result(list);
+    }
+
+    @Override
+    public Result getByNameAndAge(String name, int age) {
+        List <User> list = userRepository.getByNameAndAge(name, age);
+        return new Result(list);
+    }
+}
+
+

+ 19 - 0
hibernateSpringBoot/src/main/resources/application.properties

@@ -0,0 +1,19 @@
+# ============================== MySQL?? =============================================================================
+spring.datasource.url = jdbc:mysql://127.0.0.1:3306/hibernateSpringBoot?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
+spring.datasource.username = root
+spring.datasource.password = 5608095liyukun
+spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver
+
+# =================================== JPA ===============================================================================
+# Specify the DBMS
+spring.jpa.database = MYSQL
+# Show or not log for each sql query ???? sql ??
+spring.jpa.show-sql = true
+# Hibernate ddl auto (create, create-drop, update) ?? create ???create????????????????????????
+spring.jpa.hibernate.ddl-auto = update
+# Naming strategy
+spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.DefaultNamingStrategy
+# stripped before adding them to the entity manager ????
+#spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
+spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect
+

+ 57 - 0
springDataJpa/pom.xml

@@ -0,0 +1,57 @@
+<?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>springDataJpa</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.2.2.RELEASE</version>
+    </parent>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>

+ 40 - 0
springDataJpa/src/main/java/org/example/User.java

@@ -0,0 +1,40 @@
+package org.example;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Entity
+public class User {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+    private String name;
+    private Integer age;
+    // 省略 getter 和 setter 方法
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Integer getAge() {
+        return age;
+    }
+
+    public void setAge(Integer age) {
+        this.age = age;
+    }
+}

+ 47 - 0
springDataJpa/src/main/java/org/example/UserController.java

@@ -0,0 +1,47 @@
+package org.example;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+public class UserController {
+    @Autowired
+    private UserService userService;
+
+    // 查询用户列表
+    @GetMapping("/users")
+    public List<User> listUsers() {
+        return userService.listUsers();
+    }
+    // GET 127.0.0.1:8080/users
+
+    // 新增用户
+    @PostMapping("/users")
+    public void saveUser(@RequestParam(required = true) Long id,@RequestParam(required = true) String name, @RequestParam(required = true) int age) {
+        userService.saveUser(id, name, age);
+    }
+    // POST 127.0.0.1:8080/users?id=1&name=admin&age=26
+
+    // 修改用户
+    @PutMapping("/users")
+    public void updateUser(@RequestParam(required = true) Long id,@RequestParam(required = true) String name, @RequestParam(required = true) int age) {
+        userService.updateUser(id, name, age);
+    }
+    // PUT 127.0.0.1:8080/users?id=1&name=admin&age=25
+
+    // 删除用户
+    @DeleteMapping("/users/{id}")
+    public void deleteUser(@PathVariable("id") Long id) {
+        userService.deleteUser(id);
+    }
+    // DELETE 127.0.0.1:8080/users/1
+
+    // 根据ID查询用户
+    @GetMapping("/users/{id}")
+    public User getUserById(@PathVariable("id") Long id) {
+        return userService.getUserById(id);
+    }
+    // GET 127.0.0.1:8080/users/1
+}

+ 6 - 0
springDataJpa/src/main/java/org/example/UserRepository.java

@@ -0,0 +1,6 @@
+package org.example;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface UserRepository extends JpaRepository<User, Long> {
+}

+ 15 - 0
springDataJpa/src/main/java/org/example/UserService.java

@@ -0,0 +1,15 @@
+package org.example;
+
+import java.util.List;
+
+public interface UserService {
+    public List<User> listUsers();
+
+    public void saveUser(Long id, String name, int age);
+
+    public void updateUser(Long id, String name, int age);
+
+    public void deleteUser(Long id);
+
+    public User getUserById(Long id);
+}

+ 80 - 0
springDataJpa/src/main/java/org/example/UserServiceImpl.java

@@ -0,0 +1,80 @@
+package org.example;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class UserServiceImpl implements UserService {
+    @Autowired
+    private UserRepository userRepository;
+
+    // 查询用户列表
+    @Override
+    public List<User> listUsers() {
+        return userRepository.findAll();
+    }
+
+    // 新增用户
+    @Override
+    public void saveUser(Long id, String name, int age) {
+        User user = new User();
+        user.setId(id);
+        user.setName(name);
+        user.setAge(age);
+        User existingUser = userRepository.findById(id).orElse(null);
+        if (existingUser != null){
+            System.out.println("User already exists");
+        }
+        else {
+            userRepository.save(user);
+            System.out.println("Success");
+        }
+    }
+
+    // 修改用户
+    @Override
+    public void updateUser(Long id, String name, int age) {
+
+        User updatedUser = new User();
+        updatedUser.setId(id);
+        updatedUser.setAge(age);
+        updatedUser.setName(name);
+
+        User existingUser = userRepository.findById(id).orElse(null);
+
+        if (existingUser != null) {
+            // Update the properties of the existing user with the values from the updatedUser object
+            existingUser.setName(updatedUser.getName());
+            existingUser.setId(updatedUser.getId());
+            existingUser.setAge(updatedUser.getAge());
+
+            // Save the changes to the database
+            existingUser = userRepository.save(existingUser);
+            System.out.println("Success");
+        }
+        else {
+            System.out.println("User not exists");
+        }
+    }
+
+    // 删除用户
+    @Override
+    public void deleteUser(Long id) {
+        userRepository.deleteById(id);
+        User existingUser = userRepository.findById(id).orElse(null);
+        if (existingUser != null) {
+            System.out.println("Failed");
+        } else {
+            System.out.println("Success");
+        }
+    }
+
+    // 根据ID查询用户
+    @Override
+    public User getUserById(Long id) {
+        return userRepository.findById(id).orElse(null);
+    }
+}
+

+ 4 - 0
springDataJpa/src/main/resources/application.properties

@@ -0,0 +1,4 @@
+spring.datasource.driver-class-name=com.mysql.jdbc.Driver
+spring.datasource.url=jdbc:mysql://127.0.0.1:3306/jpaSpringBoot?characterEncoding=utf-8&allowMultiQueries=true&autoReconnect=true&serverTimezone=UTC
+spring.datasource.username=root
+spring.datasource.password=5608095liyukun