页面加载中...

Springboot整合jpa,mybaits

| Spring Boot | 0 条评论 | 475浏览

一些准备的东西:单元测试

首先需要整合junit单元测试,方便后续的操作。

1、添加依赖:


    org.springframework.boot
    spring-boot-starter-test
    1.5.14.RELEASE

2、在测试类上添加注解:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = SpringcloudProviderApplication.class)
public class Demo {
}

OK,我们就可以试使用@Test注解待会来进行各种测试操作了。

一、整合jpa

此jpa其实就是基于hibernate的实现,有使用过hibernate的注解的,springboot 的jpa都是一样一样的

1、添加依赖


    org.springframework.boot
    spring-boot-starter-data-jpa

2、在application.properties中进行配置:

#数据源的配置
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=mysqladmin

#hibernate的可选配置 spring.jpa.database=mysql spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=update spring.jpa.hibernate.naming.strategy=org.hibernate.cfg.ImprovedNamingStrategy

hibernate的配置跟原生hibernate的选项一样一样的。

3、创建一个实体类,添加jpa注解

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    private String name;
    private Date birthday;

//getter setter方法 }

还有一些其他的注解,如@Table,@column,自己指定表名、列名的注解可参考hibernate jpa注解。

使用JPA注解的一大好处就是自动映射 实体类---表,它可以为我们自动对属性进行映射。不需要繁琐的配置文件进行配置

4、使用repository或者template

4.1、使用CrudRepository

springboot 一个最大的特点就是简单方便,默认有一个CrudRepository类,可以为我们进行各种增删改查操作。

创建一个接口继承该CrudRepository接口。添加@Repository注解,指定泛型为<实体类,主键类型>。你没看错,什么方法都可以不用写!

@Repository
public interface UserRepository extends CrudRepository{

}

进行测试,添加一个User。

@Resource
private UserRepository userRepository;
@Test
public void test01(){
    User user = new User();
    user.setName("wangwu");
    user.setBirthday(new Date());
    userRepository.save(user);
}

走你!你会发现,如果你没有创建user这个表,会自动为你创建这个表,数据保存成功!

4.1、使用jdbcTemplate

springboot还提供另一种原生jdbc操作。不用再创建任何类,直接注入JdbcTemplate,如下:

@Resource
private JdbcTemplate jdbcTemplate;
@Test
public void test03(){
    String sql = "select * from user ";
    BeanPropertyRowMapper userBeanPropertyRowMapper = new BeanPropertyRowMapper<>(User.class);
    List users = jdbcTemplate.query(sql, userBeanPropertyRowMapper);
    System.out.println(users);
}

即就是自己指定sql语句,创建BeanPropertyRowMapper对象,构造参数为实体类的Class对象。就是这么easy.

二、整合mybaits

同样需要一个实体类,类上不需要任何注解,比如,创建一个实体类叫做:Comment。

public class Comment {
    private int id ;
    private String text;
    private Date ctTime;
    public Comment() {
    }
public Comment(String text, Date ctTime) {
    this.text = text;
    this.ctTime = ctTime;
}
//getter setter

}

1、添加springboot-mybatis依赖,


    org.mybatis.spring.boot
    mybatis-spring-boot-starter
    1.3.1

2、在application.properties中进行配置:

mybatis.type-aliases-package=li.wei.springboot

#数据源的配置 spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.username=root spring.datasource.password=mysqladmin

3、创建一个mapper接口,@Mapper注解表示这是一个mapper,也可以再启动类中添加注解:@MapperScan("li.wei.dao")来扫描该包下面所有的mapper。

再注解中@Insert 或者@Select或者其他,即输入的sql语句。此外,@Results注解中选择@Result注解,即属性-->表字段的映射,此外,不指定,默认表字段与类属性相同。

@Mapper
public interface CommentMapper {
    @Insert("insert into comment(id,text,ct_time)  values(#{id},#{text},#{ctTime})")
    void save(Comment comment);
@Select("select text,ct_time from comment")
@Results({
        @Result(property = "ctTime",column = "ct_time")
})
List<Comment> findAll();

}

4、测试方法。mybatis不支持自动创建表,需要先创建好表之后才能测试。

@Resource
CommentMapper commentMapper;
@Test
public void test05(){
    Comment comment = new Comment("hahah", new Date());
    commentMapper.save(comment);
    //List all = commentMapper.findAll();
}

整合mybaits成功!

发表评论

最新评论

    来第一个评论吧!