Spring Boot Ebean集成

来源:互联网 发布:雷姆 知乎 编辑:程序博客网 时间:2024/05/14 18:22

项目使用 maven构建,使用Spring boot 1.5.7 + ebean +mysql

user表:

-- ------------------------------ Table structure for user-- ----------------------------DROP TABLE IF EXISTS `user`;CREATE TABLE `user` (  `id` int(20) unsigned zerofill NOT NULL AUTO_INCREMENT,  `username` varchar(50) NOT NULL,  `password` varchar(50) NOT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;-- ------------------------------ Records of user-- ----------------------------INSERT INTO `user` VALUES ('00000000000000000001', '张三', '123');INSERT INTO `user` VALUES ('00000000000000000002', '李四', '321');
  • 项目结构

项目结构

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>com.test</groupId>    <artifactId>Ebean-demo</artifactId>    <version>0.0.1-SNAPSHOT</version>    <packaging>jar</packaging>    <name>Ebean-demo</name>    <url>http://maven.apache.org</url>    <parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>1.5.7.RELEASE</version>    </parent>    <properties>        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>        <java.version>1.8</java.version>    </properties>    <dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>        </dependency>        <!-- Use MySQL Connector-J -->        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>            <scope>test</scope>        </dependency>        <!-- <dependency> <groupId>io.ebean</groupId> <artifactId>ebean-spring</artifactId>             <version>10.4.2</version> </dependency> -->        <!-- https://mvnrepository.com/artifact/io.ebean/persistence-api -->        <dependency>            <groupId>io.ebean</groupId>            <artifactId>persistence-api</artifactId>            <version>2.2.1</version>        </dependency>        <!-- ebean -->        <dependency>            <groupId>io.ebean</groupId>            <artifactId>ebean</artifactId>            <version>10.4.2</version>        </dependency>        <dependency>            <groupId>io.ebean</groupId>            <artifactId>querybean-generator</artifactId>            <version>10.2.1</version>            <scope>provided</scope>        </dependency>        <dependency>            <groupId>io.ebean</groupId>            <artifactId>ebean-querybean</artifactId>            <version>10.3.1</version>        </dependency>    </dependencies>    <build>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>            </plugin>            <plugin>                <groupId>io.repaint.maven</groupId>                <artifactId>tiles-maven-plugin</artifactId>                <version>2.8</version>                <extensions>true</extensions>                <configuration>                    <tiles>                        <tile>org.avaje.tile:java-compile:1.1</tile>                        <tile>io.ebean.tile:enhancement:2.9</tile>                    </tiles>                </configuration>            </plugin>        </plugins>    </build></project>

Ebean配置文件 ebean.properties:

ebean.search.packages= com.demo          # the name of the default serverdatasource.default=db## define these in external properties ...datasource.db.username=rootdatasource.db.password=rootdatasource.db.databaseUrl=jdbc:mysql://localhost:3306/test?useSSL=falsedatasource.db.databaseDriver=com.mysql.jdbc.Driver

User实体:

package com.demo;import javax.persistence.Entity;import javax.persistence.Id;import javax.persistence.Table;import io.ebean.Model;@Entity@Table(name = "user")public class User extends Model {    @Id    private Integer id;    private String username;    private String password;    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    public User(Integer id, String username, String password) {        super();        this.id = id;        this.username = username;        this.password = password;    }    public User(String username, String password) {        super();        this.username = username;        this.password = password;    }}

自定义FactoryBean:

package com.demo;import org.springframework.beans.factory.FactoryBean;import org.springframework.stereotype.Component;import io.ebean.EbeanServer;import io.ebean.EbeanServerFactory;import io.ebean.config.ServerConfig;/** * Simple Spring bean factory for creating the EbeanServer. */@Componentpublic class MyEbeanServerFactory implements FactoryBean<EbeanServer> {    public EbeanServer getObject() throws Exception {        return createEbeanServer();    }    public Class<?> getObjectType() {        return EbeanServer.class;    }    public boolean isSingleton() {        return true;    }    /**     * Create a EbeanServer instance.     */    private EbeanServer createEbeanServer() {        ServerConfig config = new ServerConfig();        config.setName("db");        // load configuration from ebean.properties        config.loadFromProperties();        config.setDefaultServer(true);        // other programmatic configuration        return EbeanServerFactory.create(config);    }}

UserService.java:

package com.demo;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import io.ebean.EbeanServer;@Servicepublic class UserService {    @Autowired    private EbeanServer ebeanServer;    public List<User> getAll() {        return ebeanServer.find(User.class).findList();    }    public User getById(Integer id) {        return ebeanServer.find(User.class).where().eq("id", id).findOne();    }}

Controller.java

package com.demo;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class Controller {    @Autowired    private UserService userService;    @RequestMapping("user/getAll")    public List<User> getAll() {        return userService.getAll();    }    @RequestMapping("user/getById")    public User getById(@RequestParam(value = "id") Integer id) {        return userService.getById(id);    }}

Application.java

package com.demo;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class Application {    public static void main(String[] args) {        SpringApplication.run(Application.class, args);    }}

启动 spring-boot:run

测试
localhost:8080/user/getAll

localhost:8080/user/getById?id=1

示例代码github地址

原创粉丝点击