Commit fca65981 authored by Junling Bu's avatar Junling Bu
Browse files

update[doc]

parent b72e5919
......@@ -227,15 +227,62 @@ litemall.sql数据库基于nideshop中的[nideshop.sql](https://github.com/tumob
### 2.2.1 自动化代码
通过mybatis generator插件可以自动生成三种代码:
* src文件夹`domain` Java代码
* src文件夹`dao` Java代码
* resources文件夹`dao` Mapper代码
这里的代码封装了对数据库的操作,因此用户不需要直接操作sql代码,而是直接操作Java代码即可完成对数据库的访问处理。
当然,为了达到数据库访问效率,用户也可以自定义mapper文件和对应的Java代码,但是至少目前这里不采用。例如,当需要访问两个表的数据时,这里是在业务层通过Java代码遍历的形式来访问两个表。
![](./pic2/2-3.png)
如上图所示,双击`mybatis-generator:generate`,则mybatis generator插件会:
1. 读取`mybatis-generator`文件夹下的`generatorConfig.xml`文件
2. 根据`jdbcConnection`访问数据库
3. 根据`table`, 自动生成三种代码:
* src文件夹`org.linlinjava.litemall.db.domain` 包内的Java代码
* src文件夹`org.linlinjava.litemall.db.domain` 包内的Java代码
* resources文件夹`org.linlinjava.litemall.db.domain.dao` 内的XML文件
以上三种代码即可封装对数据库的操作,用户无需直接操作sql代码,
而是直接操作Java代码来完成对数据库的访问处理。
关于如何基于mybatis的Example代码来访问数据库,请查阅相关资料,
或者参考本模块`org.linlinjava.litemall.db.dservice` 包内的Java代码。
当然,为了达到数据库访问效率,用户也可以手动自定义mapper文件和对应的Java代码,但目前这里不采用或者不建议采用。
例如,当需要访问两个表的数据时,这里是在业务层通过Java代码遍历的形式来访问两个表。
这里,以`litemall_brand`表举例说明:
1. mybatis generator插件会根据数据库`table`标签
```
<generatorConfiguration>
<table tableName="litemall_brand">
<generatedKey column="id" sqlStatement="MySql" identity="true" />
<columnOverride javaType="java.time.LocalDateTime" column="add_time"/>
</table>
</generatorConfiguration>
```
2. 自动生产src文件夹下domain包内的LitemallBrand.java类、LitemallBrandExample.java类、
dao包内的LitemallBrandMapper.java接口和resources文件夹下dao包内的LitemallBrandMapper.xml文件。
3. 手动在service包内创建LitemallBrandService.java来对外提供具体的服务。
例如,为了得到Brand列表,那么创建list方法,基于前面创建的三个Java来来实现。
```java
@Service
public class LitemallBrandService {
@Resource
private LitemallBrandMapper brandMapper;
public List<LitemallBrand> query(int offset, int limit) {
LitemallBrandExample example = new LitemallBrandExample();
example.or().andDeletedEqualTo(false);
PageHelper.startPage(offset, limit);
return brandMapper.selectByExample(example);
}
}
```
如果基于一个新表创建新访问组件,请阅读下面章节2.2.6
### 2.2.2 业务代码
......@@ -249,6 +296,87 @@ litemall.sql数据库基于nideshop中的[nideshop.sql](https://github.com/tumob
采用Java注解的方式来完成一些特定的配置操作。
### 2.2.6 新服务组件
本节介绍如果基于一个表创建新的服务组件。
1. 在数据库里面创建一个表,例如`litemall_demo`:
```sql
CREATE TABLE `litemall`.`litemall_demo` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NULL,
`address` VARCHAR(45) NULL,
PRIMARY KEY (`id`));
INSERT INTO `litemall`.`litemall_demo` (`id`, `name`, `address`)
VALUES ('1', 'hello', 'world');
```
2. 在generatorConfig.xml中增加一个新的table标签
```
<generatorConfiguration>
<table tableName="litemall_demo">
<generatedKey column="id" sqlStatement="MySql" identity="true" />
</table>
</generatorConfiguration>
```
3. 双击mybatis generator插件,检查LitemallDemo.java类、LitemallDemoExample.java类、
LitemallDemoMapper.java接口和LitemallDemoMapper.xml是否生产。
4. 在service里面新建LitemallDemoService.java类,
```java
@Service
public class LitemallDemoService {
@Resource
private LitemallDemoMapper demoMapper;
public List<LitemallDemo> list() {
LitemallDemoExample example = new LitemallDemoExample();
return demoMapper.selectByExample(example);
}
}
```
5. 可以在`src/test/java/org.linlinjava.litemall.db`包里面创建LitemallDemoTest.java类,
使用Junit进行测试。
```java
@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class LitemallDemoTest {
@Autowired
private LitemallDemoService demoService;
@Test
public void test() {
List<LitemallDemo> litemallDemoList = demoService.list();
Assert.assertTrue(litemallDemoList.size() != 0);
}
}
```
6. 同样地,可以在Controller中使用LitemallDemoService来对外提供服务。
```java
@RestController
@RequestMapping("/demo")
public class DemoController {
@Autowired
private LitemallDemoService demoService;
@RequestMapping("/list")
public Object list(){
List<LitemallDemo> demoList = demoService.list();
return demoList;
}
}
```
## 2.3 litemall-os-api
对象存储服务目前的目标是支持图片的上传下载。
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment