您的位置:首页 > 编程语言 > Java开发

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
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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: