zoukankan      html  css  js  c++  java
  • java操作数据库增删改查的小工具2--TxQueryRunner

      当涉及到多表查询时,如数据库中有两张表分别为t_person和t_address,表结构如下:

    其中t_person的外键为t-address的主键aid,

    新建两个javaBean类,Person 和 Address;设置属性名与数据库列名一致:

    public class Person {
    
        private String pid;
        private String pname;
        private int age;
        private String sex;
        private Address address;
        //把Address作为Person的一个属性引入
        public Address getAddress() {
            return address;
        }
        public void setAddress(Address address) {
            this.address = address;
        }
        public String getPid() {
            return pid;
        }
        public void setPid(String pid) {
            this.pid = pid;
        }
        public String getPname() {
            return pname;
        }
        public void setPname(String pname) {
            this.pname = pname;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        @Override
        public String toString() {
            return "Person [pid=" + pid + ", pname=" + pname + ", age=" + age
                    + ", sex=" + sex + ", address=" + address + "]";
        }
        
        
    }
    public class Address {
    
        private String aid;
        private String province;
        private String city;
        private String district;
        private String street;
        public String getAid() {
            return aid;
        }
        public void setAid(String aid) {
            this.aid = aid;
        }
        public String getProvince() {
            return province;
        }
        public void setProvince(String province) {
            this.province = province;
        }
        public String getCity() {
            return city;
        }
        public void setCity(String city) {
            this.city = city;
        }
        public String getDistrict() {
            return district;
        }
        public void setDistrict(String district) {
            this.district = district;
        }
        public String getStreet() {
            return street;
        }
        public void setStreet(String street) {
            this.street = street;
        }
        @Override
        public String toString() {
            return "Address [aid=" + aid + ", province=" + province + ", city="
                    + city + ", district=" + district + ", street=" + street + "]";
        }
        
        
    }

    测试方法如何下:

    /**
         * 一行结果集中包含了两张表的列
         * 使用MapHandler来处理
         * 1. 把结果集封装到map中
         * 2. 使用map生成Person对象
         * 3. 使用map生成address对象
         * 4. 把两个实体对象建立关系
         * @throws SQLException
         */
        @Test
        public void testQuery6() throws SQLException {
            String sql = "SELECT * FROM t_person p, t_address a WHERE p.aid=a.aid AND p.pid=?";
            QueryRunner qr = new TxQueryRunner();
            /*
             * 1. 得到Map
             */
            Map map = qr.query(sql, new MapHandler(), "aaa");
            /*
             * 2. 把Map中部分数据封装到Person中
             */
            Person p = CommonUtils.toBean(map, Person.class);
            /*
             * 3. 把Map中部分数据封装到Address中
             */
            Address addr = CommonUtils.toBean(map, Address.class);
            /*
             * 4. 建立两个实体的关系
             */
            p.setAddress(addr);
            
            System.out.println(p);
        }

    输出结果为:

    Person [pid=002, pname=李四, age=22, sex=null, address=Address [aid=222, province=湖北, city=武汉, district=施恩, street=苗族自治区]]

  • 相关阅读:
    【linux基础】usleep和sleep的区别
    【算法基础】opencv函数approxPolyDP和Ramer-Douglas-Peucker Algorithm
    【算法基础】散点轮廓算法-Alpha Shapes
    【图像处理算法基础】图像分割经典算法-泛洪算法FloodFill
    .net core 部署在Linux系统上运行的环境搭建
    Linux部署Net Core网站,三种自定义绑定端口号的方法(UseUrls,UseKestrel,手动指定)
    .NetCore部署Linux环境搭建
    .Net Core 项目发布到Linux
    .Net Core 项目发布到Linux
    Linux桌面操作系统排行榜
  • 原文地址:https://www.cnblogs.com/fingerboy/p/5150588.html
Copyright © 2011-2022 走看看