`

MyBatis学习笔记(十)注解映射

阅读更多

1.普通映射

 

@Select("select * from mybatis_Student where id=#{id}")
public Student getStudent(int id);
@Insert("insert into mybatis_Student (name, age, remark, pic,grade_id,address_id) values (#{name},#{age},#{remark}, #{pic},#{grade.id},#{address.id})")
public int insert(Student student);
@Update("update mybatis_Student set name=#{name},age=#{age} where id=#{id}")
public int update(Student student);
@Delete("delete from mybatis_Student where id=#{id}")
public int delete(int id);

 2.结果集映射

@Select("select * from mybatis_Student")
@Results({
	@Result(id=true,property="id",column="id"),
	@Result(property="name",column="name"),
	@Result(property="age",column="age")
})
public List<Student> getAllStudents();

 3.关系映射

     1),一对一

@Select("select * from mybatis_Student")
@Results({
	@Result(id=true,property="id",column="id"),
	@Result(property="name",column="name"),
	@Result(property="age",column="age"),
		@Result(property="address",column="address_id",one=@One(select="com.skymr.mybatis.mappers.AddressMapper.getAddress"))
})
public List<Student> getAllStudents();

    2)一对多

package com.skymr.mybatis.mappers;

import org.apache.ibatis.annotations.Many;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;

import com.skymr.mybatis.model.Grade;

public interface Grade2Mapper {

	@Select("select * from mybatis_grade where id=#{id}")
	@Results({
		@Result(id=true,column="id",property="id"),
		@Result(column="grade_name",property="gradeName"),
		@Result(property="students",column="id",many=@Many(select="com.skymr.mybatis.mappers.Student2Mapper.getStudentsByGradeId"))
	})
	public Grade getGrade(int id);
}

  

package com.skymr.mybatis.mappers;

import java.util.List;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
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.skymr.mybatis.model.Student;

public interface Student2Mapper {

	@Select("select * from mybatis_Student where id=#{id}")
	public Student getStudent(int id);
	@Insert("insert into mybatis_Student (name, age, remark, pic,grade_id,address_id) values (#{name},#{age},#{remark}, #{pic},#{grade.id},#{address.id})")
	public int insert(Student student);
	@Update("update mybatis_Student set name=#{name},age=#{age} where id=#{id}")
	public int update(Student student);
	@Delete("delete from mybatis_Student where id=#{id}")
	public int delete(int id);
	
	@Select("select * from mybatis_Student")
	@Results({
		@Result(id=true,property="id",column="id"),
		@Result(property="name",column="name"),
		@Result(property="age",column="age"),
		@Result(property="address",column="address_id",one=@One(select="com.skymr.mybatis.mappers.AddressMapper.getAddress"))
	})
	public List<Student> getAllStudents();
	@Select("select * from mybatis_Student where grade_id=#{gradeId}")
		@Results({
		@Result(id=true,property="id",column="id"),
		@Result(property="name",column="name"),
		@Result(property="age",column="age"),
		@Result(property="address",column="address_id",one=@One(select="com.skymr.mybatis.mappers.AddressMapper.getAddress"))
	})
	public List<Student> getStudentsByGradeId(int gradeId);
}

 4.动态sql注解映射

provider类

package com.skymr.mybatis.mappers.provider;

import java.util.Map;

import org.apache.ibatis.jdbc.SQL;

import com.skymr.mybatis.model.Student;

public class StudentDynaSqlProvider {

	public String insertStudent(final Student student){
		return new SQL(){
			{
				INSERT_INTO("mybatis_Student");
				if(student.getName() != null){
					VALUES("name","#{name}");
				}
				if(student.getAge() > 0){
					VALUES("age","#{age}");
				}
			}
		}.toString();
	}
	
	public String updateStudent(final Student student){
		return new SQL(){
			{
				UPDATE("mybatis_Student");
				if(student.getName() != null){
					SET("name=#{name}");
				}
				if(student.getAge() > 0){
					SET("age=#{age}");
				}
				WHERE("id=#{id}");
			}
		}.toString();
	}
	
	public String getStudent(final Map<String,Object> map){
		return new SQL(){
			{
				SELECT("*");
				FROM("mybatis_Student");
				if(map.containsKey("name")){
					WHERE("name like #{name}");
				}
				if(map.containsKey("age")){
					WHERE("age=#{age}");
				}
			}
		}.toString();
	}
	
	public String deleteStudent(){
		return new SQL(){
			{
				DELETE_FROM("mybatis_Student");
				WHERE("id=#{id}");
			}
		}.toString();
	}
}

 Mapper接口

	@SelectProvider(type=StudentDynaSqlProvider.class,method="getStudent")
	public List<Student> getStudents(Map<String,Object> map);

 

 

 

 

 

 

 

 

 

0
0
分享到:
评论

相关推荐

    MyBatis学习笔记1

    【标题】"MyBatis学习笔记1" 涉及的知识点主要集中在MyBatis这一流行的持久层框架上。MyBatis是一个优秀的Java ORM(对象关系映射)框架,它允许开发者将SQL查询与Java代码分离,使得数据库操作更加灵活且易于维护。...

    mybatis学习笔记

    MyBatis 的精髓在于 SQL 映射文件(例如:iBatis学习笔记中的映射文件),其中定义了 SQL 语句、参数和结果集映射。这些映射可以包含动态 SQL,使得 SQL 语句更加灵活,可以根据传入的参数动态生成不同的 SQL。 4....

    Mybatis学习笔记整合架构

    Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将...

    MyBatis学习笔记.zip

    在"MyBatis学习笔记.zip"这个压缩包中,包含了四天的学习内容,分别以"MyBatis_day1"、"MyBatis_day2"、"MyBatis_day3"和"MyBatis_day4"命名,这些笔记可能详细阐述了MyBatis的核心概念和使用方法。让我们逐一解析...

    MyBatis学习笔记

    MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 在深入探讨MyBatis的知识点之前,让我们先了解其核心概念。MyBatis的...

    Mybatis学习笔记+学习源码.zip

    在本学习资源中,你将找到一份详尽的Mybatis学习笔记和源码,这将极大地助力你的学习过程,尤其是对自学者而言。这份笔记被认为是非常有价值且深入的,作者在其中倾注了大量的精力,确保了内容的全面性和实用性。 ...

    Mybatis学习笔记

    本学习笔记是作者在大学期间深入学习Mybatis后的整理,旨在帮助初学者快速入门并掌握其核心概念与功能。 笔记共分为11个章节,涵盖Mybatis的基础到高级应用,以下是主要知识点的详细讲解: 1. **Mybatis简介**:...

    马士兵 mybatis学习笔记

    马士兵老师的MyBatis学习笔记主要涵盖了以下几个核心知识点: 1. **MyBatis安装与环境搭建**:首先,你需要配置Java开发环境,并了解Maven或Gradle构建工具,因为MyBatis通常与这些工具结合使用来管理依赖。然后,...

    《MyBatis 基础笔记》源代码

    5. **注解映射**: 除了XML配置,MyBatis也支持使用注解的方式来定义SQL和结果映射。在接口方法上使用`@Select`, `@Insert`, `@Update`, `@Delete` 注解,而在实体类字段上使用`@Column`注解来指定数据库列名。 6....

    mybatis学习笔记代码

    在“mybatis学习笔记代码”中,我们可以深入探讨以下几个关键知识点: 1. **MyBatis架构**:MyBatis由SqlSessionFactoryBuilder、SqlSessionFactory和SqlSession三个核心组件构成。SqlSessionFactoryBuilder用于...

    传播智客-mybatis课堂笔记(2天)

    总的来说,“传播智客-mybatis课堂笔记(2天)”涵盖了MyBatis的基础到进阶知识,对于学习者来说是一份宝贵的参考资料,有助于快速提升MyBatis的使用技能。通过这份笔记,学员可以系统地学习MyBatis的各个方面,并在...

    mybatis完整学习笔记

    本学习笔记基于MyBatis的最新版本,全面覆盖了MyBatis的核心概念、配置、使用方法以及最佳实践。 首先,MyBatis的核心是SQL映射文件,它允许开发者在XML或注解中编写定制化的SQL语句,避免了JDBC中的大量模板代码。...

    mybatis学习笔记和相关帮助文档jar包

    标题中的“mybatis学习笔记”指的是对MyBatis框架的学习记录,通常包括基础概念、核心组件、配置文件解析、SQL映射文件的编写、动态SQL、事务管理、缓存机制等内容。学习笔记可能还会涵盖如何集成Spring框架实现依赖...

    mybatis学习笔记LBY.pdf

    ### Mybatis学习笔记知识点 #### 1. Mybatis 相关概念 ##### 1.1 什么是 Mybatis Mybatis 是一款优秀的持久层框架,它支持普通的 SQL 查询、存储过程以及高级映射等功能。该框架简化了 JDBC 的使用,允许开发者以...

    SpringMVC+Mybatis学习笔记

    【SpringMVC+Mybatis学习笔记】 SpringMVC和Mybatis是Java开发中常见的两个框架,它们分别负责Web层和持久层的管理。SpringMVC是Spring框架的一部分,提供了强大的模型-视图-控制器(MVC)架构模式,用于构建高性能...

    MyBatis学习笔记2

    【标题】"MyBatis学习笔记2"涵盖了MyBatis框架的深入理解和实践应用,是进一步提升对这个流行持久层框架理解的关键。MyBatis是一个优秀的、轻量级的Java ORM(对象关系映射)框架,它使得数据库操作与业务逻辑更加...

Global site tag (gtag.js) - Google Analytics