CREATE DATABASE `mybatis`;
CREATE TABLE `mybatis`.`subscriber` ( `id` INT( 10 ) NOT NULL , `name` VARCHAR( 255 ) NOT NULL , `ref_tariff` VARCHAR( 10 ) NOT NULL , PRIMARY KEY ( `id` ) ) ENGINE = MYISAM
CREATE TABLE `mybatis`.`tariff` ( `id` INT( 10 ) NOT NULL , `descr` VARCHAR( 255 ) NOT NULL , PRIMARY KEY ( `id` ) ) ENGINE = MYISAM
CREATE TABLE `mybatis`.`payments` ( `id` INT( 10 ) NOT NULL , `ref_subscriber` INT( 10 ) NOT NULL , `summa` INT( 10 ) NOT NULL , PRIMARY KEY ( `id` ) ) ENGINE = MYISAM
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.8</version> </dependency>
<?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> <properties resource="config.properties"> <!-- ( , , .)--> </properties> <settings><!-- . http://mybatis.imtqy.com/mybatis-3/configuration.html#settings--> <setting name="logImpl" value="LOG4J"/> </settings> <environments default="development"><!-- --> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${db.driver}"/> <property name="url" value="${db.url}"/> <property name="username" value="${db.username}"/> <property name="password" value="${db.password}"/> </dataSource> </environment> </environments> <mappers><!-- , --> <mapper class="kz.jazzsoft.mapper.SubscriberMapper"/> <mapper class="kz.jazzsoft.mapper.TariffMapper"/> <mapper class="kz.jazzsoft.mapper.PaymentMapper"/> </mappers> </configuration>
package kz.jazzsoft.mapper; import kz.jazzsoft.dal.Subscriber; public interface SubscriberMapper { Subscriber getSubscriberById(Integer id); List getSubscriber(); }
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="kz.jazzsoft.mapper.SubscriberMapper"> <select id="getSubscriberById" <!-- --> parameterType="java.lang.Integer" <!-- , , Map EntityBean.--> > select * from subscriber where id = #{id} <!-- , . Map — {} . EntityBean {} — bean.--> </select> <select id="getSubscriber"> select * from subscriber </select> </mapper>
package kz.jazzsoft.dal; import java.util.List; public class Subscriber { private Long id; private String name; private Tariff tariff; private List<Payment> payments public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Tariff getTariff() { return tariff; } public void setTariff(Tariff tariff) { this.tariff = tariff; } public List<Payment> getPayments() { return paymentList; } public void setPayments(List<Payment> payments) { this.payments = payments; } public List<Connection> getConnections() { return connections; } }
package kz.jazzsoft.dal; public class Tariff { private Long id; private String descr; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getDescr() { return descr; } public void setDescr(String descr) { this.descr = descr; } }
package kz.jazzsoft.dal; public class Payment { private Long id; private Integer summa; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Integer getSumma() { return discount; } public void getSumma(Integer summa) { this.summa = summa; } }
package kz.jazzsoft; import kz.jazzsoft.mapper.SubscriberMapper; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.IOException; import java.io.Reader; public class Work { public static void main(String[] args) { SqlSessionFactory sqlSessionFactory; SubscriberMapper subscriberMapper; Reader reader = null; try { reader = Resources .getResourceAsReader("mybatis-config.xml"); // MyBatis sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); subscriberMapper = sqlSessionFactory.openSession().getMapper(SubscriberMapper.class); // , getSubscriberById getSubscribers List<Subscriber> subscribers = subscriberMapper.getSubscribers(); Subscriber subscriber = subscriberMapper.getSubscriberById(101); } catch (IOException e) { e.printStackTrace(); } } }
<resultMap id="subscriber" type="kz.jazzsoft.dal.Subscriber"> <id property="id" column="id"/> <result property="name" column="name"/> <!-- name Subscriber , property--> </resultMap>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="kz.jazzsoft.mapper.SubscriberMapper"> <resultMap id="subscriber" type="kz.jazzsoft.dal.Subscriber"> <id property="id" column="id"/> <result property="name" column="name"/> </resultMap> <select id="getSubscriberById" parameterType="java.lang.Integer" resultMap="subscriber"> <!-- ResultMap --> select * from subscriber where id = #{id} </select> <select id="getSubscribers" resultMap="tariff"> select * from subscriber </select> </mapper>
package kz.jazzsoft.dal; public class Tariff { private Long id; private String descr; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getDescr() { return descr; } public void setDescr(String descr) { this.descr = descr; } }
package kz.jazzsoft.mapper; import kz.jazzsoft.dal.Tariff; public interface TariffMapper { Tariff getTariffById(Integer id); }
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="kz.jazzsoft.mapper.TariffMapper"> <resultMap id="tariff" type="kz.jazzsoft.dal.Tariff"> <id property="id" column="id"/> <result property="descr" column="descr"/> </resultMap> <select id="getTariffById" resultMap="tariff" parameterType="java.lang.Integer"> select * from tariff where id = #{id} </select> </mapper>
<resultMap id="subscriber" type="kz.jazzsoft.dal.Subscriber"> <id property="id" column="id"/> <result property="name" column="name"/> <association property="tariff" <!-- Subscriber --> column="ref_tariff" <!-- Subscriber, --> javaType="kz.jazzsoft.dal.Tariff" <!-- , --> select="kz.jazzsoft .mapper.TariffMapper.getTariffById" <!-- , sql .--> fetchType="eager" <!-- --> /> </resultMap>
package kz.jazzsoft.dal; public class Payment { private Long id; private Integer summa; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Integer getSumma() { return discount; } public void getSumma(Integer summa) { this.summa = summa; } }
package kz.jazzsoft.mapper; import kz.jazzsoft.dal.Payment; import java.util.List; public interface PaymentMapper { List<Payment> getPaymentsByIdSub(Integer id); }
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="kz.jazzsoft.mapper.PaymentMapper"> <resultMap id="payment" type="kz.jazzsoft.dal.Payment"> <id property="id" column="id"/> <result property="summa" column="date"/> </resultMap> <select id="getPaymentsByIdSub" resultMap="payment" parameterType="java.lang.Integer"> select * from payment where ref_subscriber = #{id} </select> </mapper> (payment) (Subscriber): <source lang="xml"> <resultMap id="subscriber" type="kz.jazzsoft.dal.Subscriber"> <id property="id" column="id"/> <result property="name" column="name"/> <association property="tariff" column="ref_tariff" javaType="kz.jazzsoft.dal.Tariff" select="kz.jazzsoft.mapper.TariffMapper.getTariffById" fetchType="eager"/> <collection property="payments" <!-- bean Subscriber--> column="id" <!--id Subscriber--> javaType="List" <!-- ()--> ofType="Payment" <!-- --> select="kz.jazzsoft.mapper.PaymentMapper.getPaymentsByIdSub" <!-- , , id --> fetchType="eager" <!-- --> /> </resultMap>
<select id="getSubscribersWithParam" parameterType="map"> select * from subscriber where (1=1) <if test="descr != null" > and decr = #{descr} </if> </select>
<update id="updateSubscriber" parameterType="kz.jazzsoft.dal.Subscriber"> udpate subscriber <set> <if test="descr != null"> descr = #{descr}, </if> </set> where id = #{id} </update>
Source: https://habr.com/ru/post/247885/
All Articles