`
923080512
  • 浏览: 187486 次
  • 性别: Icon_minigender_1
  • 来自: 商丘
社区版块
存档分类
最新评论

MyBatis注解关联关系配置

阅读更多

package com.zjy.ibatis.annon;

import java.util.List;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Many;
import org.apache.ibatis.annotations.One;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import com.zjy.hibernate.model.annotation.Account;
import com.zjy.ibatis.annon.model.Customer;


public interface CustomerMapper {
@Select("select * from customer where id=#{id}")
@Results(value={@Result(property="id",column="id"),
@Result(property="username",column="username"),
@Result(property="password",column="password"),
@Result(property="account",column="id",javaType=Account.class,
one=@One(select="com.zjy.ibatis.annon.AccountMapper.findByCustomerId")),
@Result(property="orders",column="id",javaType=List.class,
many=@Many(select="com.zjy.ibatis.annon.OrderMapper.getOrdersByCustomerId")),
@Result(property="activities",column="id",javaType=List.class,
many=@Many(select="com.zjy.ibatis.annon.ActivityMapper.getActivitiesByCustomerId"))})
public Customer findById(int id);
@Update(value={"update customer set username=#{username},password=#{password} where id=#{id}"})
public void update(Customer customer);
@Delete(value="delete from customer where id=#{id}")
public void delete(Customer customer);
@Insert(value="insert into customer(username,password)values(#{username},#{password})")
public void save(Customer customer);
@Select("select * from customer")
public List<Customer> findAll();
@Select("select * from customer limit #{start},#{length}")
public List<Customer> getPage(int start,int length);
}
package com.zjy.ibatis;

import java.util.Map;

import org.apache.ibatis.jdbc.SqlBuilder;

import com.zjy.ibatis.annon.model.Customer;
import com.zjy.ibatis.annon.model.CustomerBuilder;

public class CustomerSqlBuilder extends SqlBuilder{
public String makeSelect(CustomerBuilder c){
SELECT("c.id,c.username,c.password");
FROM("customer c");
if(c.getUsername()!=null){
WHERE("c.username=#{username}");
}

if(c.getPassword()!=null){
OR();
WHERE("c.password=#{password}");
}
if(c.getId()!=0){
AND();
WHERE("c.id=#{customer.id}");
}
return SQL();
}
public String makeUpdate(){
UPDATE("customer");
SET("id=#{c.id}");
SET("username=#{username}");
SET("password=#{password}");
WHERE("id=#{id}");
return SQL();
}
public String makeInsert(){
INSERT_INTO("customer");
VALUES("id,username,password", "#{id},#{username},#{password}");
return SQL();
}
public String makeDelete(){
DELETE_FROM("customer");
WHERE("id=#{id}");
return SQL();
}
public String makeSelectMap(Map<String,Object> map){
CustomerBuilder cb=(CustomerBuilder)map.get("customer");
return makeSelect(cb);
}
}

package com.zjy.ibatis.annon;

import org.apache.ibatis.annotations.DeleteProvider;
import org.apache.ibatis.annotations.InsertProvider;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.SelectProvider;
import org.apache.ibatis.annotations.UpdateProvider;

import com.zjy.ibatis.CustomerSqlBuilder;
import com.zjy.ibatis.annon.model.CustomerBuilder;
public interface CustomerSqlBuilderMapper {
@SelectProvider(type=CustomerSqlBuilder.class,method="makeSelectMap")
public CustomerBuilder findById(@Param("customer") CustomerBuilder c,String userName);
@InsertProvider(type=CustomerSqlBuilder.class,method="makeInsert")
public void insert(CustomerBuilder c);
@UpdateProvider(type=CustomerSqlBuilder.class,method="makeUpdate")
public void update(CustomerBuilder c);
@DeleteProvider(type=CustomerSqlBuilder.class,method="makeDelete")
public void delete(CustomerBuilder c);
}

分享到:
评论

相关推荐

    SSM框架的学习与应用-Java EE企业级应用开发学习记录(第五天)MyBatis的注解开发

    SSM框架的学习与应用-MyBatis的注解...配合上文章,可以做到对Mybatis的注解开发有了大概全面的了解,还可以自己完成单表查询和多表关联查询,用来做为自己测试是否对mybatis的注解开发理解透彻的话,也是非常不错的

    mybatis思维导图总结.zip

    配置 mybatis-config.xml 文件。 数据库连接和事务管理配置。 3. 映射器文件 映射器文件的结构和作用。 SQL 映射的基本元素:、、、。 参数映射和结果映射。 4. 动态 SQL 使用 、、、&lt;otherwise&gt; 构建动态 SQL。 ...

    springmybatis

    MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录. orm工具的基本思想 无论是用过的hibernate,mybatis,你都可以法相他们有一个...

    Java后端+数据库+Mybatis

    MyBatis 可以使用简单的 XML 或注解来配置和原始类型、接口和 Java POJOs(Plain Old Java Objects) 为映射,包括集成的复杂类型。 MyBatis 的主要功能特性包括: SQL 映射: MyBatis 可以映射 SQL 语句到 Java 方法...

    mybatis.xmind

    mybatis框架总结,以xmind导航图的形式总结,内容包括Mybatis框架概述、CRUD操作、关联映射、动态SQL、缓存配置、其他配置、注解、Spring集成Mybatis。

    MyBatis.pdf

    很全面的pdf课程,内容包括主配置文件分析 映射文件 常用元素【重点】 关联映射 动态SQL 注解配置 事务管理 存机制 调用存储过程 Spring ( MVC )整合MyBatis

    MyBatis_Course:MyBatis 适合初学者学习

    v0.3 - 使用MyBatis对表执行CRUD操作——基于注解的实现 v0.4 - MyBatis数据库的配置单独放在一个properties文件中 v0.5 - 为实体类定义别名,简化sql映射xml文件中的引用 v0.6 - 解决字段名与实体类属性名不相同的...

    基于JavaWEB+SSM+mysql框架构建的在线商城系统源码+数据库+项目说明(课程设计).zip

    * 实现了一个 **通用mapper**,免写 SQL,可进行单表和多表关联查询,自动插入一对多/多对一对象(注解配置关联对象,结合 MyBatis Generator ) * 实现了一个 **BaseService 类** ,集成了多条件的查询和增改删...

    软件体系结构与设计模式课堂笔记.docx

    2.Sping Boot:Spring Boot环境配置、Spring Boot核心配置和注解、前后端交互、实现登录功能、前后端分离、MyBatis数据库操作。 3.设计模式Design Pattern:创建型模式(厂模式Factory、抽象工厂模式Abstract ...

    S-mall-ssm:小小商城系统,JavaWEB项目,基于SSM,仿天猫页面,功能齐全,实现了自动处理关联查询的通用Mapper、抽象 BaseService 类、注解鉴权、参数注解校验等

    通过合理配置 MyBatis Generator 和自定义插件,灵活隔离手写代码和自动生成代码。实现了 BaseService 类对 Service 层进行抽象。通过拦截器实现了方法级粒度的鉴权,通过AOP实现了参数校验。 演示: 可自行注册账号...

    JavORM框架DarksORM.zip

    支持一对一、一对多、多对一注解方式的关联查询。 支持在实体模型类方法上配置query注解。可直接调用实体方法进行相关查询。 框架全部采用懒加载机制。 支持单对象查询、分页查询、集合查询、级联查询。 默认...

    专高2_练习手册_高性能架构_第20单元2

    1. (判断)大数据专业高级2-16.0课程20单元:Ioc解决对象之间的依赖问题,把所有Bean的依赖关系通过配置文件或注解关联起来,降低了耦合度 2. (判

    springBootDemo

    关联查询 项目源码 模板引擎Thymeleaf 简单上手 常用标签汇总 项目源码 JPA 和 Thymeleaf 实践 多环境配置 添加Servlet支持 效果图 项目源码 使用Swagger2构建RESTful API 文档 RESTful API设计准则 ...

    SSM开发框架

    02、框架实现了零配置(通过注解实现),充分利用了struts框架、spring框架和myBatis框架提供的相关功能; 03、开发人员开发画面主要写6类文件:sql文、mapper、entity、service、action和jsp; (mapper是对应sql...

    最新SSM整合

    02、框架实现了零配置(通过注解实现),充分利用了struts框架、spring框架和myBatis框架提供的相关功能; 03、开发人员开发主要写6类文件:sql文、mapper、entity、service、action和jsp; (mapper是对应sql文的...

    weixin135房屋租赁管理系统的设计与实现+ssm(源码+部署说明+演示视频+源码介绍+lw).rar

    MyBatis消除了几乎所有的JDBC代码,并允许开发者通过XML或注解将对象与存储的记录关联起来。 前端技术:可能会使用HTML、CSS、JavaScript以及诸如Vue.js或AngularJS等现代JavaScript框架来构建用户界面。 数据库:...

    SSM(详细注释代码清晰)开源框架

    02、框架实现了零配置(通过注解实现),充分利用了spring框架、springmvc框架和myBatis框架提供的相关功能; 03、开发人员开发画面主要写6类文件:controller、dao、mapping、pojo、service、serviceimp和jsp; ...

    全新JAVAEE大神完美就业实战课程 超150G巨制课程轻松实战JAVAEE课程 就业部分.txt

    动态sql-关联查询.myBatis整合spring,逆向工程 14-SpringMVC(学习2天) SpringMvc_day01.spring入门-springMVC三大核心器(视图解析器,处理器映射器and适配器).springMvc整合myBatis SpringMvc_day02高级参数....

    Diboot轻代码开发平台-其他

    5、基础框架中依靠注解实现的数据关联(一对一、一对多、多对多、数据字典关联等),将关联问题简单化了;6、对数据关联设置简单,代码生成与更新也可以自动支持一对一、一对多、多对多、数据字典关联;7、支持开发...

    xmljava系统源码-Java_L2_livebroadcasting_2020.02.20:存放java高薪训练营2020.02.20期课

    1、下载安装配置 2、关联idea 3、常用命令 4、构建SSM分模块项目 Git使用 程序员开发协作工具使用 1、下载安装 2、命令行使用(创建添加修改上传更新解决冲突) 3、远程操作(上传下载) 4、idea中使用git MyBatis...

Global site tag (gtag.js) - Google Analytics