This post will explain you. How to work with Spring boot and Mysql CRUD(create,read,update,delete) operations
Step 1: Open eclipse and create a java project.
Step 2: create a new pom.xml file under project and the below code to that file.
4.0.0 org.springframework spring_boot_first 0.1.0 org.springframework.boot spring-boot-starter-parent 1.5.1.RELEASE org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat org.springframework.boot spring-boot-starter-security org.springframework.boot spring-boot-starter-data-jpa org.apache.tomcat tomcat-jdbc mysql mysql-connector-java commons-dbcp commons-dbcp 1.8
Step 3:Create new model object called User.
package springboot.model; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table public class User { @Id @Column private long id; @Column private String name; @Column private String gender; @Column private String country; @Column private String password; 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 String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }Step 4: Create UserService and UserServiceImpl under package springboot.service
package springboot.service; import java.util.List; import springboot.model.User; public interface UserService { public List getUsers(); public List createOrUpdateUser( User user); public List deleteUser( User user); }Step 5: Add below code in UserServiceImpl.
package springboot.service; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import springboot.dao.UserDAO; import springboot.model.User; @Component public class UserServiceImpl implements UserService{ @Autowired private UserDAO userDAO; @Override public List getUsers() { return userDAO.getUsers(); } public List createOrUpdateUser( User user){ return userDAO.createOrUpdateUser(user); } public List deleteUser( User user){ return userDAO.deleteUser(user); } public void setUserDAO(UserDAO userDAO) { this.userDAO = userDAO; } }
Step 6: Create UserDAO and UserDAOImpl under package springboot.dao as mentioned below
package springboot.dao; import java.util.List; import javax.transaction.Transactional; import org.springframework.data.repository.CrudRepository; import springboot.model.User; @Transactional public interface UserDAO { public List getUsers(); public List createOrUpdateUser( User user); public List deleteUser( User user); }Step 7: Add below code inside UserDAOImpl
package springboot.dao; import java.util.List; import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import springboot.model.User; @Component public class UserDAOImpl implements UserDAO{ @Autowired private SessionFactory sessionFactory; public List getUsers(){ Criteria criteria = sessionFactory.openSession().createCriteria(User.class); return criteria.list(); } public List createOrUpdateUser( User user){ Session session = sessionFactory.openSession(); User oldUser = session.get(User.class, user.getId() ); //System.out.println("oldUser id["+ oldUser.getId()+"]"); if(oldUser == null){ session.save(user); session.flush(); System.out.println("Created or Update Successful"); } Criteria criteria = sessionFactory.openSession().createCriteria(User.class); return criteria.list(); } public List deleteUser( User user){ Session session = sessionFactory.openSession(); User oldUser = session.get(User.class, user.getId() ); if(oldUser != null){ session.delete(oldUser); session.flush(); System.out.println("Deleted successfully"); } Criteria criteria = sessionFactory.openSession().createCriteria(User.class); return criteria.list(); } public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } }Step 8: Create BeanConfig class. which will create EntityManagerFactory.
package springboot; import javax.persistence.EntityManagerFactory; import org.hibernate.SessionFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class BeanConfig { @Autowired private EntityManagerFactory entityManagerFactory; @Bean public SessionFactory getSessionFactory() { if (entityManagerFactory.unwrap(SessionFactory.class) == null) { throw new NullPointerException("factory is not a hibernate factory"); } return entityManagerFactory.unwrap(SessionFactory.class); } public void setEntityManagerFactory(EntityManagerFactory entityManagerFactory) { this.entityManagerFactory = entityManagerFactory; } }Step 9: Now we need to add code related to database details called application.properties
# =============================== # = DATA SOURCE # =============================== # Set here configurations for the database connection spring.datasource.url = jdbc:mysql://localhost:3306/employee?useSSL=false # Username and password spring.datasource.username = root spring.datasource.password = root spring.jpa.show-sql = true spring.jpa.hibernate.ddl-auto = update spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5DialectStep 10: Create a RestController class. Name it as UserController
package springboot; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import springboot.model.User; import springboot.service.UserService; @Controller public class UserController { @Autowired private UserService userService; @RequestMapping(value = "/list", method = RequestMethod.GET) public ResponseEntity userDetails() { List userDetails = userService.getUsers(); return new ResponseEntity(userDetails, HttpStatus.OK); } @RequestMapping(value = "/create/{id}/{name}/{password}/{gender}/{country}/", method = RequestMethod.GET) public ResponseEntity createOrUpdateUserDetails(@PathVariable("id") long id, @PathVariable("name") String name, @PathVariable("password") String password,@PathVariable("gender") String gender,@PathVariable("country") String country) { User user = new User(); user.setId(id); user.setName(name); user.setCountry(country); user.setGender(gender); user.setPassword(password); List userDetails = userService.createOrUpdateUser(user); return new ResponseEntity(userDetails, HttpStatus.OK); } @RequestMapping(value = "/delete/{id}", method = RequestMethod.GET) public ResponseEntity deleteUserDetails(@PathVariable("id") long id) { User user = new User(); user.setId(id); List userDetails = userService.deleteUser(user); return new ResponseEntity(userDetails, HttpStatus.OK); } public void setUserService(UserService userService) { this.userService = userService; } }Step 11: Now we need to run this application through spring boot. So we have to write Application class.
package springboot; import java.util.Arrays; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } @Bean public CommandLineRunner commandLineRunner(ApplicationContext ctx) { return args -> { System.out.println("Let's inspect the beans provided by Spring Boot:"); String[] beanNames = ctx.getBeanDefinitionNames(); Arrays.sort(beanNames); for (String beanName : beanNames) { System.out.println(beanName); } }; } }
Step 12: Now we need to build and run this application.
Right click on the pom.xml file and Run As - clean install
Once that is done. Right click on the Application.java and Run As-> Java Application. Below details will be printed in Console
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.5.1.RELEASE) 2017-10-12 17:17:15.600 INFO 13036 --- [ main] springboot.Application : Starting Application on LAPTOP-2U8NKC7I with PID 13036 (F:\eclipse_workspace\spring_boot_first\target\classes started by Siva in F:\eclipse_workspace\spring_boot_first) 2017-10-12 17:17:15.626 INFO 13036 --- [ main] springboot.Application : No active profile set, falling back to default profiles: default 2017-10-12 17:17:16.033 INFO 13036 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@23bb8443: startup date [Thu Oct 12 17:17:15 IST 2017]; root of context hierarchy
Step 13: Use http://localhost:8080/list -- it will display all the records which is there inside user table.
If it askes username and password - then username will be - user and password will be check Using default security password: in console. that is your password.
Step 14: Use http://localhost:8080/create/16/sanju/sam/M/India/ - it will insert record inside DB and will display all the records from user table.
Step 15 : http://localhost:8080/delete/16 - it will delete where id is 16 and display all the results from user table.
Step 16 : Now we will learn how to create database and create a table.
Step 17: Install mysql and create database with name- employee. and create a table name called User with columns as mentioned below.
CREATE TABLE user ( id int(11) NOT NULL, name varchar(45) DEFAULT NULL, gender varchar(10) DEFAULT NULL, password varchar(45) DEFAULT NULL, country varchar(45) DEFAULT NULL, PRIMARY KEY (`id`))
Step 18: If you want to use another database. simply change the application.properties respective DB details and dialect along with respective connecter in pom.xml
Thanks for viewing this post. If you like this please share and write comments.
No comments:
Post a Comment