SpringBoot jpa的使用

    最近的工作要开发一个新项目,想用 SpringBoot 在此记录一下jpa的使用。

    1.工欲善其事必先利其器,第一步自然是引入jar包了,我用的是maven,在pom.xml文件中加入如下即可:

	<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
      </dependency>

2.我们来创建一张数据库表来试试

CREATE TABLE `product_category` (
  `category_id` int(11) NOT NULL AUTO_INCREMENT,
  `category_name` varchar(64) NOT NULL COMMENT '类目名字',
  `category_type` int(11) NOT NULL COMMENT '类目编号',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  PRIMARY KEY (`category_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

3.在项目中创建对应的实体类,如下

import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

import org.hibernate.annotations.DynamicUpdate;

import lombok.Data;

/**
 * 
 * @author ljh
 * @since 2018-03-12
 */
@Entity
@DynamicUpdate
@Data
public class ProductCategory{

	@Id
	@GeneratedValue
    private Integer categoryId;
    /**
     * 类目名字
     */
    private String categoryName;
    /**
     * 类目编号
     */
    private Integer categoryType;
    /**
     * 创建时间
     */
    private Date createTime;
 
    /**
     * 修改时间
     */
    private Date updateTime;

	public ProductCategory() {
		super();
	}

	public ProductCategory(String categoryName, Integer categoryType) {
		super();
		this.categoryName = categoryName;
		this.categoryType = categoryType;
	}
	
    @Override
    public String toString() {
        return "ProductCategory{" +
        "categoryId=" + categoryId +
        ", categoryName=" + categoryName +
        ", categoryType=" + categoryType +
        ", createTime=" + createTime +
        ", updateTime=" + updateTime +
        "}";
    }

}

    上面代码中用到的jpa注解说明如下:

    @Entity:告诉框架这个实体是对应数据库的某张表的,我这里的表名和类名是驼峰式一一对应的,如果你的表名和类名不同那么你可以加一个注解@Table(name="数据库表名");

    @Id:声明这个参数对应数据库的主键;

    @GeneratedValue:主键是自增的;

    @data:这个注解可以让我们不用写get/set方法。它会在打包的时候自动帮我们生成get/set代码很方便,但是需要额外引入lombok的jar包,第一次使用的话编译器还要安装相应的插件,这个百度搜索一下有很多。

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

4.编写dao层

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;

import com.imooc.dataobject.ProductCategory;

public interface ProductCategoryRepository extends JpaRepository<ProductCategory, Integer>{

	List<ProductCategory> findByCategoryTypeIn(List<Integer> CategoryTypeList);
	

}

    dao层非常简单只要继承一下 JpaRepository<T, Serializable> 就好了 T:写的是dao操作对应的实体 ,Serializable:是主键的类型。dao中可以声明自己的方法,如上的findByCategoryTypeIn方法。

    5.测试

@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class ProductCategoryRepositoryTest {
	
	@Autowired
	private ProductCategoryRepository repository;

	@Test
	public void testFindOne() {
		ProductCategory productCategory  = repository.findOne(2);
		productCategory.setCategoryType(10);
		log.info("productCategory{}:"+productCategory);
	}
	
	@Test
	public void testFindByCategoryType() {
		
		List<Integer> list = Arrays.asList(2,3,4);
		List<ProductCategory> categories = repository.findByCategoryTypeIn(list);
		Assert.assertNotEquals(0, categories.size());
	}
}
    以上内容有参考慕课网的课程,毕竟自己闭门造车,不如让老司机带着飞~





猜你喜欢

转载自blog.csdn.net/sinat_36265222/article/details/79527970