springboot数据库的操作—整合jpa,mybaits

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

首先需要整合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 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成功!

你可能感兴趣的:(springboot)