MyBatis的注解开发

资料下载链接

基于注解的单表增删改查

基于注解的关联查询

一、需求分析

        掌握基于注解的单表增删改查, 熟悉基于注解的一对一关联查询, 熟悉基于注解的一对多关联查询、熟悉基于注解的多对多关联查询 。

二、搭建环境

1)数据库环境

        mybatis数据库,运行mybatistest05.sql

2)引入依赖

        pom.xml文件

3)配置文件

        src/main/resources,数据库连接配置文件db.properties,log4j配置文件log4j.properties,MyBatis的核心配置文件mybatis-config.xml。

4)新建包和目录

        src/main/java,新建com.sw.pojo包

        src/main/java,新建com.sw.mapper包

        src/main/java,新建com.sw.util包,工具类MyBatisUtils

        src/main/resources,新建com/sw/mapper目录

三、基于注解的单表增删改查

        员工信息表的增删改查

1)数据封装类

        com.sw.pojo包,新建Worker类

public class Worker {
    private Integer id;
    private String name;
    private Integer age;
    private String sex;
    private String workerId;
    //get、set
    //tostring
}
2)@Select注解

        com.sw.mapper包,WorkerMapper接口

    @Select("select * from tb_worker where id = #{id}")
    Worker getOne(int id);
3)@Insert注解

        com.sw.mapper包,WorkerMapper接口

    @Insert("insert into tb_worker(id,name,age,sex,worker_id) values(null,#{name},#{age},#{sex},#{workerId})")
    @Options(keyProperty = "id",keyColumn = "id",useGeneratedKeys = true)
    int insertOne(Worker worker);
4)@Update注解

        com.sw.mapper包,WorkerMapper接口

    @Update("update tb_worker set name=#{name},age=#{age},sex=#{sex},worker_id=#{workerId} where id=#{id}")
    int updateOne(Worker worker);
5)@Delete注解

        com.sw.mapper包,WorkerMapper接口

    @Delete("delete from tb_worker where id=#{id}")
    int deleteOne(int id);

四、基于注解的关联查询

1)基于注解的一对一关联查询

        com.sw.pojo包,新建IdCard类

public class IdCard{
    private Integer id;
    private String code;
    //get、set
    //tostring
}

        com.sw.pojo包,新建Person类

public class Person{
    private Integer id;
    private String name;
    private Integer age;
    private String sex;
    private IdCard idCard;
    //get、set
    //tostring
}

        com.sw.mapper包,新建IdCardMapper接口。

    @Select("select * from tb_idcard where id=#{id}")
    IdCard getOne(int id);

        com.sw.mapper包,新建PersonMapper接口。

    @Select("select * from tb_person where id=#{id}")
    @Results({
            @Result(id = true,property = "id",column = "id"),
            @Result(property = "name",column = "name"),
            @Result(property = "age",column = "age"),
            @Result(property = "sex",column = "sex"),
            @Result(property = "idCard",column = "card_id",
            one = @One(select="com.sw.mapper.IdCardMapper.getOne"))})
    Person getOne(int id);
2)基于注解的一对多关联查询

        com.sw.pojo包,新建Order类

public class Order{
    private Integer id;
    private String number;
    //get、set
    //tostring
}

        com.sw.pojo包,新建User类

public class User{
    private Integer id;
    private String username;
    private String address;
    List<Order> orderList;
    //get、set
    //tostring
}

        com.sw.mapper包,新建OrderMapper接口。

    @Select(" select * from tb_orders where user_id = #{userId}")
    List<Order> getList(int userId);

        com.sw.mapper包,新建UserMapper接口。

    @Select(" SELECT * FROM tb_user WHERE id = #{id}")
    @Results({
            @Result(id = true,property = "id",column = "id"),
            @Result(property = "username",column = "username"),
            @Result(property = "address",column = "address"),
            @Result(property = "orderList",column = "id",
            many = @Many(select = "com.sw.mapper.OrderMapper.getList")),
    })
    User getOne(int id);
3)基于注解的多对多关联查询

        com.sw.pojo包,Order类

public class Order{
    private Integer id;
    private String number;
    private List<Product> productList;
    //get、set
    //tostring
}

        com.sw.pojo包,新建Product类

public class Product{
    private Integer id;
    private String name;
    private Double price;
    private List<Order> orderList;
    //get、set
    //tostring
}

        com.sw.mapper包,新建ProductMapper接口。

    @Select("SELECT * FROM tb_product ,tb_ordersitem\n" +
            "WHERE tb_ordersitem.product_id=tb_product.id\n" +
            "AND tb_ordersitem.orders_id=#{orderId}")
    List<Product> getList(int orderId);

        com.sw.mapper包,OrderMapper接口。

    @Select("SELECT * FROM tb_orders WHERE id=#{id}")
    @Results({
            @Result(id = true,property = "id",column = "id"),
            @Result(property = "number",column = "number"),
            @Result(property = "productList",column = "id",
            many = @Many(select = "com.sw.mapper.ProductMapper.getList"))
    })
    Order getOne(int id);

  • 12
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勇 士 Teacher

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值