• mybatis多表关联配置


    首先需要的jar包

    mybatis-3.4.1

    配置文件(mybatis.cfg.xml)

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
    
    <typeAliases>
    <typeAlias alias="mybatis1" type="entity.mybatis1"/>
    <typeAlias alias="types" type="entity.types"/>
    </typeAliases>
    
    <!-- 选择默认的连接方式 -->
    <environments default="myb">
    
    <environment id="myb">
    <transactionManager type="JDBC"></transactionManager>
    <dataSource type="POOLED">
    <property name="driver" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/test"/>
    <property name="username" value="root"/>
    <property name="password" value="accp"/>
    </dataSource>
    </environment>
    
    </environments>
    
    <mappers>
    <mapper resource="entity/mybatis1Mapper.xml"/>
    </mappers>
    </configuration>

    Mybatis1.java

    package entity;
    
    public class mybatis1 {
        
        private int id;
        private String name;
        private int age;
        private types types;
        public types getTypes() {
            return types;
        }
        public void setTypes(types types) {
            this.types = types;
        }
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public mybatis1(String name, int age) {
            super();
            this.name = name;
            this.age = age;
        }
        public mybatis1(){}
    
    }

    Types.java

    package entity;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class types {
        
        private int id;
        private String tname;
        private List<mybatis1> mybatis=new ArrayList<mybatis1>();
        public List<mybatis1> getMybatis(){
            return mybatis;
        }
        public void setMybatis(List<mybatis1> mybatis) {
            this.mybatis = mybatis;
        }
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getTname() {
            return tname;
        }
        public void setTname(String tname) {
            this.tname = tname;
        }
    }

    mybatis1Mapper.xml(配置多对一关系)

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
    <mapper namespace="entity.mybatis1">
    
    <resultMap type="mybatis1" id="mylist">
    <id property="id" column="id"></id>
    <result column="name" property="name"/>
    <result column="age" property="age"/>
    <!-- 多对一的关系 -->
            <!-- property: 指的是属性的值, javaType:指的是属性的类型-->
            <association property="types" javaType="types">
                <id column="id" property="id"/>
                <result column="tname" property="tname"/>
            </association>
    </resultMap>
    <select id="selectall" resultMap="mylist">
    select m.*,t.tname tname from mybatis1 m ,types t 
    where m.typeid=t.id
    </select>
    
    
    
    <insert id="addmybatis" parameterType="entity.mybatis1">
    insert into mybatis1(name,age) values(#{name},#{age})
    </insert>
    
    </mapper>

    typesMapper.xml(配置一对多关系)

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
    <mapper namespace="entity.types">
    
    <resultMap type="types" id="mytype">
    <id column="id" property="id"></id>
    <result column="tname" property="tname"/>
        <!-- 一对多的关系 -->
            <!-- property: 指的是集合属性的值, ofType:指的是集合中元素的类型 -->
            <collection property="mybatis" ofType="mybatis1">
                <id column="id" property="id"/>
                <result column="name" property="name"/>
                <result column="age" property="age"/>
            </collection>
    </resultMap>
    
    <select id="selectalltype" resultMap="mytype">
    select m.*,t.tname tname from mybatis1 m ,types t where m.typeid=t.id
    </select>
    </mapper>

    test_mybatis.java(测试)

    package test;
    
    import java.io.IOException;
    import java.io.Reader;
    import java.util.List;
    
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    import entity.mybatis1;
    
    public class test_mybatis {
        
        public static void main(String[] args) {
            try {
                Reader r= Resources.getResourceAsReader("mybatis.cfg.xml");
            SqlSessionFactoryBuilder sfb=new SqlSessionFactoryBuilder();
            SqlSessionFactory sf=sfb.build(r);
            SqlSession session=sf.openSession();
              
    //            mybatis1 my=new mybatis1("zs", 12);
    //             session.insert("entity.mybatis1.addmybatis", my);
    //             session.commit();
            String d="d";
            List<mybatis1> list=session.selectList("selectall");
            System.out.println(list.size());
            for(mybatis1 m:list){
                System.out.println(m.getTypes().getTname()+"=="+m.getName());
            }
                 session.close();
            
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
    }
  • 相关阅读:
    使用迭代器模式批量获得数据(C#实现)
    如何从技术上预防抢票软件刷屏
    如何用Tesseract做日文OCR(c#实现)
    我的.net开发百宝箱
    程序员必备基础:Git 命令全方位学习
    Java 异常处理的十个建议
    50道Java集合经典面试题(收藏版)
    记一次接口性能优化实践总结:优化接口性能的八个建议
    100道MySQL数据库经典面试题解析(收藏版)
    800+Java后端经典面试题,希望你找到自己理想的Offer呀~
  • 原文地址:https://www.cnblogs.com/xzjf/p/7159482.html
Copyright © 2020-2023  润新知