@@ -0,0 +1,3 @@ | |||||
# spring-boot-demo-orm-beetlsql | |||||
> 此 demo 仍然存在问题 |
@@ -20,6 +20,7 @@ | |||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | ||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> | <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> | ||||
<java.version>1.8</java.version> | <java.version>1.8</java.version> | ||||
<ibeetl.version>1.1.68.RELEASE</ibeetl.version> | |||||
</properties> | </properties> | ||||
<dependencies> | <dependencies> | ||||
@@ -28,11 +29,38 @@ | |||||
<artifactId>spring-boot-starter</artifactId> | <artifactId>spring-boot-starter</artifactId> | ||||
</dependency> | </dependency> | ||||
<dependency> | |||||
<groupId>org.springframework.boot</groupId> | |||||
<artifactId>spring-boot-starter-jdbc</artifactId> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>com.ibeetl</groupId> | |||||
<artifactId>beetl-framework-starter</artifactId> | |||||
<version>${ibeetl.version}</version> | |||||
</dependency> | |||||
<dependency> | <dependency> | ||||
<groupId>org.springframework.boot</groupId> | <groupId>org.springframework.boot</groupId> | ||||
<artifactId>spring-boot-starter-test</artifactId> | <artifactId>spring-boot-starter-test</artifactId> | ||||
<scope>test</scope> | <scope>test</scope> | ||||
</dependency> | </dependency> | ||||
<dependency> | |||||
<groupId>mysql</groupId> | |||||
<artifactId>mysql-connector-java</artifactId> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>cn.hutool</groupId> | |||||
<artifactId>hutool-all</artifactId> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>org.projectlombok</groupId> | |||||
<artifactId>lombok</artifactId> | |||||
<optional>true</optional> | |||||
</dependency> | |||||
</dependencies> | </dependencies> | ||||
<build> | <build> | ||||
@@ -3,6 +3,19 @@ package com.xkcoding.orm.beetlsql; | |||||
import org.springframework.boot.SpringApplication; | import org.springframework.boot.SpringApplication; | ||||
import org.springframework.boot.autoconfigure.SpringBootApplication; | import org.springframework.boot.autoconfigure.SpringBootApplication; | ||||
/** | |||||
* <p> | |||||
* 启动类 | |||||
* </p> | |||||
* | |||||
* @package: com.xkcoding.orm.beetlsql | |||||
* @description: 启动类 | |||||
* @author: yangkai.shen | |||||
* @date: Created in 2018/11/14 15:47 | |||||
* @copyright: Copyright (c) 2018 | |||||
* @version: V1.0 | |||||
* @modified: yangkai.shen | |||||
*/ | |||||
@SpringBootApplication | @SpringBootApplication | ||||
public class SpringBootDemoOrmBeetlsqlApplication { | public class SpringBootDemoOrmBeetlsqlApplication { | ||||
@@ -0,0 +1,35 @@ | |||||
package com.xkcoding.orm.beetlsql.config; | |||||
import com.zaxxer.hikari.HikariDataSource; | |||||
import org.springframework.context.annotation.Bean; | |||||
import org.springframework.context.annotation.Configuration; | |||||
import org.springframework.core.env.Environment; | |||||
import javax.sql.DataSource; | |||||
/** | |||||
* <p> | |||||
* Beetl数据源配置 | |||||
* </p> | |||||
* | |||||
* @package: com.xkcoding.orm.beetlsql.config | |||||
* @description: Beetl数据源配置 | |||||
* @author: yangkai.shen | |||||
* @date: Created in 2018/11/14 17:15 | |||||
* @copyright: Copyright (c) 2018 | |||||
* @version: V1.0 | |||||
* @modified: yangkai.shen | |||||
*/ | |||||
@Configuration | |||||
public class BeetlConfig { | |||||
@Bean(name = "datasource") | |||||
public DataSource getDataSource(Environment env){ | |||||
HikariDataSource dataSource = new HikariDataSource(); | |||||
dataSource.setDriverClassName(env.getProperty("spring.datasource.driver-class-name")); | |||||
dataSource.setJdbcUrl(env.getProperty("spring.datasource.url")); | |||||
dataSource.setUsername(env.getProperty("spring.datasource.username")); | |||||
dataSource.setPassword(env.getProperty("spring.datasource.password")); | |||||
return dataSource; | |||||
} | |||||
} |
@@ -0,0 +1,23 @@ | |||||
package com.xkcoding.orm.beetlsql.dao; | |||||
import com.xkcoding.orm.beetlsql.entity.User; | |||||
import org.beetl.sql.core.mapper.BaseMapper; | |||||
import org.springframework.stereotype.Component; | |||||
/** | |||||
* <p> | |||||
* UserDao | |||||
* </p> | |||||
* | |||||
* @package: com.xkcoding.orm.beetlsql.dao | |||||
* @description: UserDao | |||||
* @author: yangkai.shen | |||||
* @date: Created in 2018/11/14 16:18 | |||||
* @copyright: Copyright (c) 2018 | |||||
* @version: V1.0 | |||||
* @modified: yangkai.shen | |||||
*/ | |||||
@Component | |||||
public interface UserDao extends BaseMapper<User> { | |||||
} |
@@ -0,0 +1,80 @@ | |||||
package com.xkcoding.orm.beetlsql.entity; | |||||
import lombok.AllArgsConstructor; | |||||
import lombok.Builder; | |||||
import lombok.Data; | |||||
import lombok.NoArgsConstructor; | |||||
import java.io.Serializable; | |||||
import java.util.Date; | |||||
/** | |||||
* <p> | |||||
* 用户实体类 | |||||
* </p> | |||||
* | |||||
* @package: com.xkcoding.orm.beetlsql.entity | |||||
* @description: 用户实体类 | |||||
* @author: yangkai.shen | |||||
* @date: Created in 2018/11/14 16:06 | |||||
* @copyright: Copyright (c) 2018 | |||||
* @version: V1.0 | |||||
* @modified: yangkai.shen | |||||
*/ | |||||
@Data | |||||
@NoArgsConstructor | |||||
@AllArgsConstructor | |||||
@Builder | |||||
public class User implements Serializable { | |||||
private static final long serialVersionUID = -1840831686851699943L; | |||||
/** | |||||
* 主键 | |||||
*/ | |||||
private Long id; | |||||
/** | |||||
* 用户名 | |||||
*/ | |||||
private String name; | |||||
/** | |||||
* 加密后的密码 | |||||
*/ | |||||
private String password; | |||||
/** | |||||
* 加密使用的盐 | |||||
*/ | |||||
private String salt; | |||||
/** | |||||
* 邮箱 | |||||
*/ | |||||
private String email; | |||||
/** | |||||
* 手机号码 | |||||
*/ | |||||
private String phoneNumber; | |||||
/** | |||||
* 状态,-1:逻辑删除,0:禁用,1:启用 | |||||
*/ | |||||
private Integer status; | |||||
/** | |||||
* 创建时间 | |||||
*/ | |||||
private Date createTime; | |||||
/** | |||||
* 上次登录时间 | |||||
*/ | |||||
private Date lastLoginTime; | |||||
/** | |||||
* 上次更新时间 | |||||
*/ | |||||
private Date lastUpdateTime; | |||||
} |
@@ -0,0 +1,66 @@ | |||||
package com.xkcoding.orm.beetlsql.service; | |||||
import com.xkcoding.orm.beetlsql.entity.User; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* User Service | |||||
* </p> | |||||
* | |||||
* @package: com.xkcoding.orm.beetlsql.service | |||||
* @description: User Service | |||||
* @author: yangkai.shen | |||||
* @date: Created in 2018/11/14 16:18 | |||||
* @copyright: Copyright (c) 2018 | |||||
* @version: V1.0 | |||||
* @modified: yangkai.shen | |||||
*/ | |||||
public interface UserService { | |||||
/** | |||||
* 新增用户 | |||||
* | |||||
* @param user 用户 | |||||
*/ | |||||
void saveUser(User user); | |||||
/** | |||||
* 根据主键删除用户 | |||||
* | |||||
* @param id 主键 | |||||
*/ | |||||
void deleteUser(Long id); | |||||
/** | |||||
* 更新用户 | |||||
* | |||||
* @param user 用户 | |||||
* @return 更新后的用户 | |||||
*/ | |||||
User updateUser(User user); | |||||
/** | |||||
* 查询单个用户 | |||||
* | |||||
* @param id 主键id | |||||
* @return 用户信息 | |||||
*/ | |||||
User getUser(Long id); | |||||
/** | |||||
* 查询用户列表 | |||||
* | |||||
* @return 用户列表 | |||||
*/ | |||||
List<User> getUserList(); | |||||
/** | |||||
* 分页查询 | |||||
* | |||||
* @param currentPage 当前页 | |||||
* @param pageSize 每页条数 | |||||
* @return 分页用户列表 | |||||
*/ | |||||
List<User> getUserByPage(Integer currentPage, Integer pageSize); | |||||
} |
@@ -0,0 +1,99 @@ | |||||
package com.xkcoding.orm.beetlsql.service.impl; | |||||
import com.xkcoding.orm.beetlsql.dao.UserDao; | |||||
import com.xkcoding.orm.beetlsql.entity.User; | |||||
import com.xkcoding.orm.beetlsql.service.UserService; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.stereotype.Service; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* User Service | |||||
* </p> | |||||
* | |||||
* @package: com.xkcoding.orm.beetlsql.service.impl | |||||
* @description: User Service | |||||
* @author: yangkai.shen | |||||
* @date: Created in 2018/11/14 16:28 | |||||
* @copyright: Copyright (c) 2018 | |||||
* @version: V1.0 | |||||
* @modified: yangkai.shen | |||||
*/ | |||||
@Service | |||||
@Slf4j | |||||
public class UserServiceImpl implements UserService { | |||||
private final UserDao userDao; | |||||
@Autowired | |||||
public UserServiceImpl(UserDao userDao) { | |||||
this.userDao = userDao; | |||||
} | |||||
/** | |||||
* 新增用户 | |||||
* | |||||
* @param user 用户 | |||||
*/ | |||||
@Override | |||||
public void saveUser(User user) { | |||||
} | |||||
/** | |||||
* 根据主键删除用户 | |||||
* | |||||
* @param id 主键 | |||||
*/ | |||||
@Override | |||||
public void deleteUser(Long id) { | |||||
} | |||||
/** | |||||
* 更新用户 | |||||
* | |||||
* @param user 用户 | |||||
* @return 更新后的用户 | |||||
*/ | |||||
@Override | |||||
public User updateUser(User user) { | |||||
return null; | |||||
} | |||||
/** | |||||
* 查询单个用户 | |||||
* | |||||
* @param id 主键id | |||||
* @return 用户信息 | |||||
*/ | |||||
@Override | |||||
public User getUser(Long id) { | |||||
return userDao.single(id); | |||||
} | |||||
/** | |||||
* 查询用户列表 | |||||
* | |||||
* @return 用户列表 | |||||
*/ | |||||
@Override | |||||
public List<User> getUserList() { | |||||
return null; | |||||
} | |||||
/** | |||||
* 分页查询 | |||||
* | |||||
* @param currentPage 当前页 | |||||
* @param pageSize 每页条数 | |||||
* @return 分页用户列表 | |||||
*/ | |||||
@Override | |||||
public List<User> getUserByPage(Integer currentPage, Integer pageSize) { | |||||
return null; | |||||
} | |||||
} |
@@ -0,0 +1,31 @@ | |||||
spring: | |||||
datasource: | |||||
url: jdbc:mysql://127.0.0.1:3306/spring-boot-demo?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&failOverReadOnly=false&serverTimezone=GMT%2B8 | |||||
username: root | |||||
password: root | |||||
driver-class-name: com.mysql.cj.jdbc.Driver | |||||
type: com.zaxxer.hikari.HikariDataSource | |||||
initialization-mode: always | |||||
continue-on-error: true | |||||
schema: | |||||
- "classpath:db/schema.sql" | |||||
data: | |||||
- "classpath:db/data.sql" | |||||
hikari: | |||||
minimum-idle: 5 | |||||
connection-test-query: SELECT 1 FROM DUAL | |||||
maximum-pool-size: 20 | |||||
auto-commit: true | |||||
idle-timeout: 30000 | |||||
pool-name: SpringBootDemoHikariCP | |||||
max-lifetime: 60000 | |||||
connection-timeout: 30000 | |||||
logging: | |||||
level: | |||||
com.xkcoding: debug | |||||
com.xkcoding.orm.beetlsql: trace | |||||
beetl: | |||||
enabled: false | |||||
beetlsql: | |||||
daoSuffix: Dao | |||||
basePackage: com.xkcoding.orm.beetlsql.dao |
@@ -0,0 +1,2 @@ | |||||
INSERT INTO `orm_user`(`id`,`name`,`password`,`salt`,`email`,`phone_number`) VALUES (1, 'user_1', 'ff342e862e7c3285cdc07e56d6b8973b', '412365a109674b2dbb1981ed561a4c70', 'user1@xkcoding.com', '17300000001'); | |||||
INSERT INTO `orm_user`(`id`,`name`,`password`,`salt`,`email`,`phone_number`) VALUES (2, 'user_2', '6c6bf02c8d5d3d128f34b1700cb1e32c', 'fcbdd0e8a9404a5585ea4e01d0e4d7a0', 'user2@xkcoding.com', '17300000002'); |
@@ -0,0 +1,13 @@ | |||||
DROP TABLE IF EXISTS `orm_user`; | |||||
CREATE TABLE `orm_user` ( | |||||
`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '主键', | |||||
`name` VARCHAR(32) NOT NULL UNIQUE COMMENT '用户名', | |||||
`password` VARCHAR(32) NOT NULL COMMENT '加密后的密码', | |||||
`salt` VARCHAR(32) NOT NULL COMMENT '加密使用的盐', | |||||
`email` VARCHAR(32) NOT NULL UNIQUE COMMENT '邮箱', | |||||
`phone_number` VARCHAR(15) NOT NULL UNIQUE COMMENT '手机号码', | |||||
`status` INT(2) NOT NULL DEFAULT 1 COMMENT '状态,-1:逻辑删除,0:禁用,1:启用', | |||||
`create_time` DATETIME NOT NULL DEFAULT NOW() COMMENT '创建时间', | |||||
`last_login_time` DATETIME DEFAULT NULL COMMENT '上次登录时间', | |||||
`last_update_time` DATETIME NOT NULL DEFAULT NOW() COMMENT '上次更新时间' | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Spring Boot Demo Orm 系列示例表'; |
@@ -0,0 +1,56 @@ | |||||
package com.xkcoding.orm.beetlsql.service.impl; | |||||
import com.xkcoding.orm.beetlsql.SpringBootDemoOrmBeetlsqlApplicationTests; | |||||
import com.xkcoding.orm.beetlsql.entity.User; | |||||
import com.xkcoding.orm.beetlsql.service.UserService; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.beetl.sql.core.SQLManager; | |||||
import org.junit.Assert; | |||||
import org.junit.Test; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
/** | |||||
* <p> | |||||
* User Service测试 | |||||
* </p> | |||||
* | |||||
* @package: com.xkcoding.orm.beetlsql.service.impl | |||||
* @description: User Service测试 | |||||
* @author: yangkai.shen | |||||
* @date: Created in 2018/11/14 16:30 | |||||
* @copyright: Copyright (c) 2018 | |||||
* @version: V1.0 | |||||
* @modified: yangkai.shen | |||||
*/ | |||||
@Slf4j | |||||
public class UserServiceImplTest extends SpringBootDemoOrmBeetlsqlApplicationTests { | |||||
@Autowired | |||||
private UserService userService; | |||||
@Test | |||||
public void saveUser() { | |||||
} | |||||
@Test | |||||
public void deleteUser() { | |||||
} | |||||
@Test | |||||
public void updateUser() { | |||||
} | |||||
@Test | |||||
public void getUser() { | |||||
User user = userService.getUser(1L); | |||||
Assert.assertNotNull(user); | |||||
log.debug("【user】= {}", user); | |||||
} | |||||
@Test | |||||
public void getUserList() { | |||||
} | |||||
@Test | |||||
public void getUserByPage() { | |||||
} | |||||
} |