最近在实习,学习了一下大佬自己写框架。他旧版项目地址:https://github.com/deng-hb/dbhelper
下面我用springboot引入其最新版orm框架搭了一个demo样例:
首先,maven地址引入:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 数据源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.9</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
<!-- orm框架引入 -->
<dependency>
<groupId>com.denghb</groupId>
<artifactId>eorm-spring</artifactId>
<version>1.0.3</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.8.1</version>
</dependency>
</dependencies>
第二步,需要配置数据源,其实看Eorm框架是对jdbcTemplate的一个封装
@Configuration
@EnableTransactionManagement
public class DataSourceConfig {
@Bean(name = "dataSource")
@Qualifier(value = "dataSource")
@Primary
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource dataSource() {
return DruidDataSourceBuilder.create().build();
}
@Bean
public PlatformTransactionManager transactionManager() {
return new DataSourceTransactionManager(dataSource());
}
@Bean
public JdbcTemplate jdbcTemplate() {
return new JdbcTemplate(dataSource());
}
@Bean
public Eorm eorm() {
return new EormMySQLImpl(jdbcTemplate());
}
}
分包图:
分包.png
第三步,建立自己数据库,也可导入我的test.sql数据库作为测试,在springboot框架里填写数据库连接信息。
数据库.png
大佬自己也写了类似于mybatis-generator一样的工具直接生成对应的的实体类,具体配置见图。
下载地址:https://github.com/8jinmuyan8/eorm-for-Springboot/blob/master/eorm-mysql-support.jar
查询
一、全部查询
首先,domain里生成的是全部信息的对象
service接口
public interface InfoService {
List<Info> personInfo();//查询数据库中所有信息
}
service接口实现类
@Service("InfoService")
public class InfoServiceImpl implements InfoService {
@Autowired
Eorm db;
@Override
public List<Info> personInfo() {
String s="SELECT * FROM info ";
List<Info> result = db.select(Info.class, s);
return result;
}
}
controller
@GetMapping("/info")
public String personInfo(){
List<Info> list= infoService.personInfo();
return list.toString();
}
结果
二、部分查询
此时生成到domain文件全部的bean信息,如果我只需要部分信息,全部查出就会很浪费时间,所以就可以单独分个model文件夹,来存我们需要部分bean对象。去掉我不想要的信息比如此表里的sex age字段
model
public class InfoPartModel {
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
service接口
public interface InfoService {
List<InfoPartModel> personPartInfo();//查询数据库中用户ID 和 姓名
}
service接口实现类
@Service("InfoService")
public class InfoServiceImpl implements InfoService {
@Autowired
Eorm db;
@Override
public List<InfoPartModel> personPartInfo() {
String s="SELECT id,name FROM info ";
List<InfoPartModel> list=db.select(InfoPartModel.class,s);
return list;
}
}
controller
@GetMapping("/infopart")
public String personPartInfo(){
List<InfoPartModel> list= infoService.personPartInfo();
return list.get(0).getName();
}
PS:删除,更新,增加详见GitHub里的demo
三、分页
首先需要初始化分页参数(文件默认返回10条记录)
需要传两个参数page当前页数,pageSize一页中条数(可选sort(通过某个字段排序,为防止sql注入需要在criteria加上排序字段,criteria目录也可作为前端传参的缓存bean文件)order(默认desc))
GITHUB地址:https://github.com/8jinmuyan8/eorm-for-Springboot
网友评论