`
cnflat
  • 浏览: 13603 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

mybatis学习笔记3-mapper

    博客分类:
  • JAVA
阅读更多
Mybatis中,DAO层的代码只需要定义接口,其他的事情由Mybatis框架帮忙搞定。一个例子:
package example.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import example.model.User;

public interface UserMapper {
	public User findById(int id);
	public User findByName(String name);
	public void addUser(User user);
	public List<User> findUsers(@Param("start")int start, @Param("size")int size);
        public List<User> findUsers1(int limit);
}

定义了几个方法,方法名称和mapper.xml中的sql定义的id相同。例如findById,在mapper.xml中定义了一个:
<select id="findById" parameterType="HashMap" resultMap="usermap">
	select 
		a.id as user_id,
		a.name as user_name,
		a.sex as user_sex,
		a.age as user_age
	from T_User a where a.id=#{id}
</select>


需要注意的是,如果方法定义只有一个参数的,在mapper.xml文件中定义sql时可以直接使用参数名作为sql语句中的占位符。如果方法定义有多个参数的,要么使用@Param注解指定mapper.xml中的占位符名称,要么在mapper.xml中使用param1, param2等作为占位符。下面是mapper.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">
	<!--这块等于dao接口的实现  namespace必须和接口的类路径一样-->
<mapper namespace="example.dao.UserMapper">
	<resultMap type="User" id="usermap">
		<id property="id" column="user_id" />
		<result column="user_name" property="name" typeHandler="example.dao.typehandler.SimpleTypeHandler"/>
		<result property ="sex" column="user_sex" />
		<result property="age" column="user_age" />
		<!-- 
		<discriminator javaType="byte" column="user_sex">
			<case value="1" resultType="example.model.GameUser">
				<result property="wins" column="wins" />
			</case>
			<case value="0" resultType="example.model.SingUser">
				<result property="sings" column="sings" />
			</case>
		</discriminator>
		-->
	</resultMap>
	<resultMap type="User" id="userMapWithAlbum">
		<id property="id" column="user_id" />
		<result property="name" column="user_name" />
		<result property ="sex" column="user_sex" />
		<result property="age" column="user_age" />
		<collection property="albums" column="user_id" ofType="Album" select="selectAlbumForUser" />
	</resultMap>
	
	<select id="findById" parameterType="HashMap" resultMap="usermap">
		select 
			a.id as user_id,
			a.name as user_name,
			a.sex as user_sex,
			a.age as user_age
		from T_User a where a.id=#{id}
    </select>
    
    <!-- 这里的#{start}和#{size},如果代码中没有用@Param指定,就需要使用#{param1},#{param2} -->
    <select id="findUsers" parameterType="HashMap" resultMap="usermap">
    	select 
			a.id as user_id,
			a.name as user_name,
			a.sex as user_sex,
			a.age as user_age
		from T_User a limit #{start},#{size}
    </select>
    
    <select id="findUsers1" parameterType="HashMap" resultMap="usermap">
    	select 
			a.id as user_id,
			a.name as user_name,
			a.sex as user_sex,
			a.age as user_age
		from T_User a limit #{limit}
    </select>
    
    <select id="selectAlbumForUser" resultType="Album">
    	select * from T_Album where userId=#{user_id}
    </select>
    
    <select id="findByName" parameterType="HashMap" resultType="User" resultMap="usermap">
		select 
			a.id as user_id,
			a.name as user_name,
			a.sex as user_sex,
			a.age as user_age
		from T_User a where a.name=#{name}
    </select>
     
     <insert id="addUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
     	insert into T_User (name,sex,age) values(#{name},#{sex},#{age})
     </insert>
</mapper>
分享到:
评论

相关推荐

    MyBatis学习笔记1

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

    Mybatis-kuang--master.zip

    "Mybatis-kuang--master.zip" 这个压缩包文件很可能是狂神(Kuang Shen)提供的一个关于Mybatis学习资源的集合,包括了他的笔记和一些练习题目。 在Mybatis的学习中,首先需要了解的是它的基本概念和架构。Mybatis ...

    mybatis学习笔记

    这篇“mybatis 学习笔记”将带你深入理解 MyBatis 的核心概念和主要功能。 1. **MyBatis 概述**: MyBatis 是一个轻量级的 Java ORM(对象关系映射)框架,它的核心是 SQL 映射文件和 SqlSessionFactory。ORM 技术...

    MyBatis学习笔记.zip

    在这些MyBatis学习笔记中,我们可以期待涵盖以下几个关键知识点: 1. **MyBatis简介**:首先会介绍MyBatis的起源、目标和优点,例如简化数据库操作、提高开发效率、易于维护等。 2. **环境搭建**:包括如何下载...

    MyBatis学习笔记(一):MyBatis configuration和mapper xml配置总结

    本笔记将详细解析MyBatis的configuration配置文件和Mapper XML配置,帮助你深入掌握这两个核心组件。 首先,我们来看MyBatis的`configuration`配置文件。这个XML文件是MyBatis系统的核心,包含了MyBatis运行所需的...

    MyBatis学习笔记

    ### MyBatis学习笔记 #### 一、MyBatis简介及环境搭建 **MyBatis** 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis...

    SSM 框架整合教程:一、MyBatis-尚硅谷学习笔记 2022 年

    - "SSM框架整合教程:一、MyBatis——尚硅谷学习笔记 2022 年.md":Markdown格式的学习笔记,详细记录了教程中的关键知识点和步骤。 - "SSM框架整合教程:一、MyBatis——尚硅谷学习笔记 2022 年.pdf":PDF版本的...

    mybatis学习笔记LBY.pdf

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

    Mybatis学习笔记

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

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

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

    狂神说Java-Mybatis学习笔记

    ### 狂神说Java-Mybatis学习笔记 #### 一、MyBatis概述与环境搭建 ##### 1.1 什么是MyBatis MyBatis是一款优秀的持久层框架,其核心设计理念在于避免几乎所有的JDBC代码和手动设置参数以及获取结果集的过程。通过...

    Mybatis源码学习-代码+笔记

    3. **Mybatis配置** 学习Mybatis时,会涉及`mybatis-config.xml`配置文件,这里包含了数据源、事务管理器、环境设置等关键信息。通过源码,可以了解Mybatis如何读取并解析这些配置。 4. **SqlSessionFactory与...

    马士兵 mybatis学习笔记

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

    《MyBatis 基础笔记》源代码

    以上内容只是MyBatis基础部分的概述,实际使用中,MyBatis还有更多高级特性和最佳实践,如结果映射的复杂性、延迟加载、插件机制等,都需要深入学习和理解。通过阅读《MyBatis 基础笔记》的源代码,你可以更深入地...

Global site tag (gtag.js) - Google Analytics