Java EE之灵活高效的jdbcTemplate封装框架

Java框架

浏览数:43

2019-8-22

最近在实习,学习了一下大佬自己写框架。他旧版项目地址: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

执行截图.png

查询

一、全部查询

首先,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();
    }

结果

结果.png

二、部分查询

此时生成到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))

image.png

**GITHUB地址:
https://github.com/CharmingGeeker/eorm-for-Springboot

作者:8金木研8