springboot的学习记录
2018-02-26 01:42
429 查看
1.eclipse安装sts插件。2.创建spring boot工程,配置需要的插件,傻瓜式的点击选取,数据库,nosql,mg,模板引擎,web等。3.配置application.properties或者是application.yml.4.配置实体类,直接生成数据库表。5.开发。。。
一个application.properties
一个controller
事务处理:
spring boot的启动类:
一个application.properties
server.port=8888 server.context-path=/HelloWorld helloWorld=spring boot \u5927\u7237\u4F60\u597D mysql.jdbcName=com.mysql.jdbc.Driver mysql.dbUrl=jdbc:mysql://localhost:3306/db_boot mysql.userName=root mysql.password=123456一个application.yml
server: port: 80 context-path: / spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/db_studentinfo username: root password: 123456 jpa: hibernate: ddl-auto: update show-sql: true一个实体类
package com.java1234.entity; import javax.persistence.Column; import javax.persistence.En 4000 tity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; import org.hibernate.validator.constraints.NotEmpty; /** * 学生信息实体 * @author Administrator * */ @Entity @Table(name="t_student") public class Student { @Id @GeneratedValue private Integer id; @NotEmpty(message="姓名不能为空!") @Column(length=50) private String name; @NotNull(message="年龄不能为空!") @Min(value=18,message="年龄必须大于18岁") private Integer 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 Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "Student [id=" + id + ", name=" + name + ", age=" + age + "]"; } }
一个controller
package com.java1234.controller; import java.util.List; import javax.annotation.Resource; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.java1234.dao.BookDao; import com.java1234.entity.Book; /** * 图书控制器 * @author Administrator * */ @Controller @RequestMapping("/book") public class BookController { @Resource private BookDao bookDao; /** * 查询所有图书 * @return */ @RequestMapping("/list") public ModelAndView list(){ ModelAndView mav=new ModelAndView(); mav.addObject("bookList", bookDao.findAll()); mav.setViewName("bookList"); return mav; } /** * 根据条件动态查询 * @param book * @return */ @RequestMapping("/list2") public ModelAndView list2(Book book){ ModelAndView mav=new ModelAndView(); List<Book> bookList=bookDao.findAll(new Specification<Book>() { @Override public Predicate toPredicate(Root<Book> root, CriteriaQuery<?> query, CriteriaBuilder cb) { Predicate predicate=cb.conjunction(); if(book!=null){ if(book.getName()!=null && !"".equals(book.getName())){ predicate.getExpressions().add(cb.like(root.get("name"), "%"+book.getName()+"%")); } if(book.getAuthor()!=null && !"".equals(book.getAuthor())){ predicate.getExpressions().add(cb.like(root.get("author"), "%"+book.getAuthor()+"%")); } } return predicate; } }); mav.addObject("bookList", bookList); mav.setViewName("bookList"); return mav; } /** * 添加图书 * @param book * @return */ @RequestMapping(value="/add",method=RequestMethod.POST) public String add(Book book){ bookDao.save(book); return "forward:/book/list"; } /** * 根据id查询book实体 * @param id * @return */ @RequestMapping("/preUpdate/{id}") public ModelAndView preUpdate(@PathVariable("id")Integer id){ ModelAndView mav=new ModelAndView(); mav.addObject("book", bookDao.getOne(id)); mav.setViewName("bookUpdate"); return mav; } /** * 修改图书 * @param book * @return */ @PostMapping(value="/update") public String update(Book book){ bookDao.save(book); return "forward:/book/list"; } @GetMapping("/delete") public String delete(Integer id){ bookDao.delete(id); return "forward:/book/list"; } @ResponseBody @GetMapping("/queryByName") public List<Book> queryByName(){ return bookDao.findByName("编程"); } @ResponseBody @GetMapping("/randomList") public List<Book> randomList(){ return bookDao.randomList(2); } }一个dao
package com.java1234.dao; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.Query; import com.java1234.entity.Book; public interface BookDao extends JpaRepository<Book, Integer>,JpaSpecificationExecutor<Book>{ @Query("select b from Book b where b.name like %?1%") public List<Book> findByName(String name); @Query(value="select * from t_book order by RAND() limit ?1",nativeQuery=true) public List<Book> randomList(Integer n); }一个aop切面
package com.java1234.aspect; import javax.servlet.http.HttpServletRequest; import org.apache.log4j.Logger; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import com.java1234.entity.Student; @Aspect @Component public class RequestAspect { private Logger logger=Logger.getLogger(RequestAspect.class); @Pointcut("execution(public * com.java1234.controller.*.*(..))") public void log(){ } @Before("log()") public void doBefore(JoinPoint joinPoint){ logger.info("方法执行前..."); ServletRequestAttributes sra=(ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request=sra.getRequest(); logger.info("url:"+request.getRequestURI()); logger.info("ip:"+request.getRemoteHost()); logger.info("method:"+request.getMethod()); logger.info("class_method:"+joinPoint.getSignature().getDeclaringTypeName()+"."+joinPoint.getSignature().getName()); logger.info("args:"+joinPoint.getArgs()); Student student=(Student) joinPoint.getArgs()[0]; System.out.println(student); } @After("log()") public void doAfter(JoinPoint joinPoint){ logger.info("方法执行后..."); } @AfterReturning(returning="result",pointcut="log()") public void doAfterReturning(Object result){ logger.info("方法返回值:"+result); } }
事务处理:
package com.java1234.service.impl; import javax.annotation.Resource; import javax.transaction.Transactional; import org.springframework.stereotype.Service; import com.java1234.dao.AccountDao; import com.java1234.entity.Account; import com.java1234.service.AccountService; /** * 帐号Service实现类 * @author Administrator * */ @Service("accountService") public class AccountServiceImpl implements AccountService{ @Resource private AccountDao accountDao; @Transactional public void transferAccounts(int fromUser, int toUser, float account) { Account fromAccount=accountDao.getOne(fromUser); fromAccount.setBalance(fromAccount.getBalance()-account); accountDao.save(fromAccount); Account toAccount=accountDao.getOne(toUser); toAccount.setBalance(toAccount.getBalance()+account); int zero=1/0; accountDao.save(toAccount); } }
spring boot的启动类:
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); } }
相关文章推荐
- Spring Boot学习记录(二)–thymeleaf模板
- springBoot 学习记录(四)- 访问jsp页面
- Spring Boot学习记录(四)--问题记录
- Eclipse安装Spring插件 学习SpringBoot的应该用的到 -这个一定要记录下来
- SpringBoot 学习记录(五): aop记录日志
- springBoot 学习记录(一)
- SpringBoot 学习记录(十): scheduler
- springboot学习记录
- Spring Boot学习记录(三)--整合Mybatis
- SpringBoot 学习记录
- springboot学习记录之 thymeleaf使用模板
- SpringBoot 学习记录(十一): hazelcast+swagger2
- Spring Boot学习记录(二)–jsp模板
- SpringBoot 学习记录(三): jpa
- SpringBoot 学习记录(四): slf4j+logback
- SpringBoot学习记录三、整合MyBatis
- Spring boot 学习记录
- spring-boot学习记录
- SpringBoot 学习记录(五)- 文件上传(和图片服务器fastdfs测试)
- Spring Boot学习记录(二)--thymeleaf模板