@@ -0,0 +1,3 @@ | |||
# spring-boot-demo-orm-beetlsql | |||
> 此 demo 仍然存在问题 |
@@ -20,6 +20,7 @@ | |||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | |||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> | |||
<java.version>1.8</java.version> | |||
<ibeetl.version>1.1.68.RELEASE</ibeetl.version> | |||
</properties> | |||
<dependencies> | |||
@@ -28,11 +29,38 @@ | |||
<artifactId>spring-boot-starter</artifactId> | |||
</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> | |||
<groupId>org.springframework.boot</groupId> | |||
<artifactId>spring-boot-starter-test</artifactId> | |||
<scope>test</scope> | |||
</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> | |||
<build> | |||
@@ -3,6 +3,19 @@ package com.xkcoding.orm.beetlsql; | |||
import org.springframework.boot.SpringApplication; | |||
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 | |||
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() { | |||
} | |||
} |