JAVA_Spring

SpringBoot 11 根据bean逆向生成表

2018-11-03  本文已影响0人  kason_zhang

Springboot 通过配置hibernate相关可以实现根据model bean来逆向生成数据库表, 此时如果使用默认的mysql方言org.hibernate.dialect.MySQL5Dialect则会出现创建的mysql数据库表是latin的格式, 无法写入中文, 此时就需要复写MySQL5Dialect类

package com.secondkill.db;

import org.hibernate.dialect.MySQL5InnoDBDialect;

/**
 * Created by zhangkai12 on 2018/7/9.
 */
public class MySQL5DialectUTF8 extends MySQL5InnoDBDialect {

    @Override
    public String getTableTypeString() {
        return " ENGINE=InnoDB DEFAULT CHARSET=utf8";
    }

}

之后再application.properties中添加逆向生成数据库表的配置信息:

spring.datasource.url=jdbc:mysql://localhost:3306/secondkill?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.show-sql= true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=com.secondkill.db.MySQL5DialectUTF8

之后编写entity bean, 比如此处编写一个Goods类:

package com.secondkill.entity;

import javax.persistence.*;

@Entity
@Table(name = "goods")
public class Goods {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column
    private String goodsName;
    @Column
    private String goodsTitle;
    @Column
    private String goodsImg;
    @Column
    private String goodsDetail;
    @Column
    private Double goodsPrice; // 商品价格
    @Column
    private Integer goodsStock; // 商品库存
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getGoodsName() {
        return goodsName;
    }
    public void setGoodsName(String goodsName) {
        this.goodsName = goodsName;
    }
    public String getGoodsTitle() {
        return goodsTitle;
    }
    public void setGoodsTitle(String goodsTitle) {
        this.goodsTitle = goodsTitle;
    }
    public String getGoodsImg() {
        return goodsImg;
    }
    public void setGoodsImg(String goodsImg) {
        this.goodsImg = goodsImg;
    }
    public String getGoodsDetail() {
        return goodsDetail;
    }
    public void setGoodsDetail(String goodsDetail) {
        this.goodsDetail = goodsDetail;
    }
    public Double getGoodsPrice() {
        return goodsPrice;
    }
    public void setGoodsPrice(Double goodsPrice) {
        this.goodsPrice = goodsPrice;
    }
    public Integer getGoodsStock() {
        return goodsStock;
    }
    public void setGoodsStock(Integer goodsStock) {
        this.goodsStock = goodsStock;
    }
}

运行Springboot项目之后, 就可以到数据库中查看最新生成的表:


image.png

编写的Mapper

package com.secondkill.dao;

import com.secondkill.entity.Goods;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * Created by zhangkai12 on 2018/7/9.
 */
@Mapper
public interface GoodsMapper {

    @Insert("insert into goods (goods_name, goods_title, goods_img, goods_detail, goods_price, goods_stock) " +
            "values (#{goodsName}, #{goodsTitle}, #{goodsImg}, #{goodsDetail}, #{goodsPrice}, #{goodsStock})")
    public void insertGoods(Goods goods);
}
package com.secondkill.dao;

import com.secondkill.entity.MiaoshaGoods;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;

/**
 * Created by zhangkai12 on 2018/7/9.
 */
@Mapper
public interface MiaoshaGoodsMapper {

    @Insert("insert into miaosha_goods (goods_id, start_date, end_date, stock_count) values (#{goodsId}, #{startDate}, #{endDate}, #{stockCount})")
    public void insertMiaoShaGoods(MiaoshaGoods miaoshaGoods);
}

Test类:

package com.secondkill.dao;

import com.secondkill.SecondkillApplicationTests;
import com.secondkill.entity.Goods;
import com.secondkill.entity.MiaoshaGoods;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.Calendar;
import java.util.Date;

import static org.junit.Assert.*;

/**
 * Created by zhangkai12 on 2018/7/9.
 */
public class MapperTest extends SecondkillApplicationTests {
    @Autowired
    GoodsMapper goodsMapper;
    @Autowired
    MiaoshaGoodsMapper miaoshaGoodsMapper;
    @Test
    public void insertGoods() throws Exception {
        Goods goods = new Goods();
        goods.setGoodsDetail("oppo 手机");
        goods.setGoodsImg("http://");
        goods.setGoodsName("oppo phone");
        goods.setGoodsPrice(1998.0);
        goods.setGoodsStock(10);
        goods.setGoodsTitle("oppo");

        goodsMapper.insertGoods(goods);
    }

    @Test
    public void testInsertMiaoShaGoods() throws Exception {
        MiaoshaGoods miaoshaGoods = new MiaoshaGoods();
        miaoshaGoods.setGoodsId(1L);
        miaoshaGoods.setStockCount(2);
        Calendar c = Calendar.getInstance();
        c.set(2018 , 7, 8,8, 0);

        miaoshaGoods.setStartDate(c.getTime());
        c.set(2018, 7,10,0,0);
        miaoshaGoods.setEndDate(c.getTime());
        miaoshaGoodsMapper.insertMiaoShaGoods(miaoshaGoods);

    }

}
上一篇 下一篇

猜你喜欢

热点阅读