美文网首页JavaEE 学习专题Java 杂谈
Java EE之灵活高效的jdbcTemplate封装框架

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

作者: 8金木研8 | 来源:发表于2018-12-04 23:29 被阅读1次

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

    相关文章

      网友评论

        本文标题:Java EE之灵活高效的jdbcTemplate封装框架

        本文链接:https://www.haomeiwen.com/subject/wfrscqtx.html