mapper.xml配置文件详解

--命名空间通常为该mapper映射文件所对应maper接口所在的路径

<mapper namespace="com.harbsoft.com.mybatis.mapper.UserMapper">

--开启二级缓存 (实体类必须序列化)

<cache type="org.mybatis.caches.ehcache.EhcacheCache" />

--抽取通用的SQL

<sql id="user_query_where">

通用sql

</sql>

--if

<if test="id!=null and id!=‘‘">

 通常是where条件语句

</if>

--foreach

<foreach collection="ids" item="id" open="and (" close=")" separator="or">

user.id=#{id}

</foreach>

--$

AND user.username LIKE ‘${username}%‘


--#

AND user.sex = #{sex}

--resultMap对应的是表与实体类的映射  -- type 数据库表对应的实体类,别名或完整类名都可以

<resultMap type="person" id="resultMapPerson">

<!-- 结果集的主键 -->

--主键  <id/>

<id  property="userid" column="id"/>

<!-- 普通的列 -->

--column 是数据库中字段, property是实体类中字段

<result property="name"  column="username" />

<result property="addr"  column="address" />

</resultMap>

-- 一对一的关系处理(一个订单对应一个用户, 此处相当于一个类中的一个字段,该字段为一个对象)

<association property="user" javaType="com.harbosoft.mybatis.po.User">

<id  property="id" column="user_id"/>

<result  property="username" column="username"/>

<result  property="sex" column="sex"/>

<result  property="address" column="address"/>

</association>

--一对多的关系处理(一个用户有多个订单,此处相当于一个类中的一个字段,该字段为一个集合)

<!-- 订单信息 -->

<collection property="orders" ofType="com.harbosoft.mybatis.po.Orders">

<!-- 订单号 -->

<result property="order_number" column="order_number" />

<result property="id" column="id" />

</collection>

三者可以嵌套使用

一个用户--------多个订单-------多个订单明细

一个用户--------多个订单-------多个订单明细--------多个商品

--select

public User findUserById(int id)

<select id="findUserById" parameterType="int"  resultType="user">

SELECT * FROM USER WHERE id=#{id}

     id-------mapper接口的方法名;

     parameterType -------mapper接口的方法参数的类型

     resultType ---------mapper接口的方法的返回值类型 

     user ----------是别名(全名是com.harbosoft.mybatis.Items)

     id 和形参保持一致   (#)

</select>

--返回值是list   user

public List<User> findUserByName(String username)

<select id="findUserByName" parameterType="string" resultType="user">

SELECT * FROM USER WHERE username like ‘${value}%‘

该方法返回值类型为List,但是集合中装的是user,所以resultType 的值只要和集合中存储的一样即可

value 可以随意些,什么都可以  ($)

</select>

--返回值是list   参数是user   resultType 

public List<User> findUserList(User user)throws Exception;

<!-- 综合查询用户信息 -->

<select id="findUserList" parameterType="user" resultType="user">

SELECT * FROM USER

<where>

<!-- 用户的查询条件 -->

<include refid="user_query_where"/>

 该条失去了可能会重用,所以抽取出来,引用时用include

</where>

</select>

<sql id="user_query_where">
          <if test="id!=null and id!=‘‘">
             AND user.id=#{id}

</if>

<foreach collection="ids" item="id" open="and (" close=")" separator="or">
               user.id=#{id} and (userid =
          </foreach>
          <if test="username!=null and username!=‘‘">
             AND user.username LIKE ‘${username}%‘
          </if>
          <if test="sex!=null and sex!=‘‘">
             AND user.sex = #{sex}
          </if>

</sql>

--返回值是List   resultMap 

public List<Person> findUserListResultMap(User user)throws Exception;

<!-- 综合查询用户信息 使用resultMap-->

<select id="findUserListResultMap" parameterType="user" resultMap="resultMapPerson">

SELECT * FROM USER WHERE username like ‘${username}%‘ and sex=#{sex}

</select>

--参数是map    hashmap   resultType

public List<User> findUserListByHashmap(Map map)throws Exception;

<!-- 通过hashmap查询用户信息 -->

<select id="findUserListByHashmap" parameterType="hashmap" resultType="user">

SELECT * FROM USER WHERE username like ‘${name}%‘ and sex=#{sex}

</select>

--返回值是map    resultType

public Map findUserByIdReturnMap(int id) throws Exception;

<!-- 获取单个用户信息返回hashmap -->

<select id="findUserByIdReturnMap" parameterType="int"  resultType="hashmap">

SELECT * FROM USER WHERE id=#{id}

</select>

--insert

public void insertUser(User user) throws Exception;

<insert id="insertUser" parameterType="user">

<!--  keyProperty:指定主键映射的pojo对象的属性

order:selectKey的执行顺序,mysql这里设置为after

企业中实际使用时,主键通常使用uuid()即 SELECT UUID()

-->

<selectKey keyProperty="id" order="AFTER" resultType="int">

SELECT LAST_INSERT_ID()

</selectKey>

INSERT INTO USER(username,birthday,sex,address,detail,score)

VALUES(#{username},#{birthday},#{sex},#{address},#{detail},#{score})

</insert>

--update

public void updateUserById(User user) throws Exception;

<update id="updateUserById"  parameterType="com.harbsoft.mybatis.po.User">

update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address},detail=#{detail},score=#{score}
      where id=#{id}

</update>

--delete

public void deleteUserById(int id) throws Exception;

<delete id="deleteUserById"  parameterType="java.lang.Integer">
        delete from user where id=#{value}

</delete>

 
时间: 2024-10-12 16:42:06

mapper.xml配置文件详解的相关文章

赵雅智_AndroidManifest.xml配置文件详解

HDU Today Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 13235    Accepted Submission(s): 3096 Problem Description 经过锦囊相助,海东集团终于度过了危机,从此,HDU的发展就一直顺风顺水,到了2050年,集团已经相当规模了,据说进入了钱江肉丝经济开发区500强.这时候

AndroidManifest.xml配置文件详解(转载)

AndroidManifest.xml配置文件详解 2013-01-05 10:25:23 分类: Android平台 AndroidManifest.xml配置文件对于Android应用开发来说是非常重要的基础知识,本文旨在总结该配置文件中重点的用法,以便日后查阅.下面是一个标准的AndroidManifest.xml文件样例.     [html] view plaincopy <?xml version="1.0" encoding="utf-8"?&g

Maven的pom.xml配置文件详解

1 Maven的pom.xml配置文件详解 2 Maven简述 3 Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. 4 Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具.由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目.由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长

Maven之pom.xml配置文件详解

Maven之pom.xml配置文件详解 2019-06-05 一.什么是pom? POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml.作用类似ant的build.xml文件,功能更强大.该文件用于管理:源代码.配置文件.开发者的信息和角色.问题追踪系统.组织信息.项目授权.项目的url.项目的依赖关系等等.事实上,在Maven世界中,project可以什么都没有,甚至没有代码,但是必须包含pom.xml文件.

web.xml配置文件详解

一.web.xml配置文件常用元素及其意义预览 1 <web-app> 2 3 <!--定义了WEB应用的名字--> 4 <display-name></display-name> 5 6 <!--声明WEB应用的描述信息--> 7 <description></description> 8 9 <!--context-param元素声明应用范围内的初始化参数--> 10 <context-param&g

Tmocat的service.xml配置文件详解(含中文翻译)

Tmocat的service.xml配置文件 英文原版 中文手译 <?xml version='1.0' encoding='utf-8'?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file distributed with this work for additional informa

Mybatis学习--XML配置文件详解

在配置的Mybatis的时候,我们可以通过一个XML来配置,也可以嵌入到其他配置文件中, 比如Spring的applicationContext.xml中. MyBatis 的 XML 配置文件包含了影响 MyBatis 行为甚深的设置和属性信息. XML 文档 的高层级结构如下: configuration 配置 properties 属性 settings 设置 typeAliases 类型命名 typeHandlers 类型处理器 objectFactory 对象工厂 plugins 插件

struts2中struts.xml配置文件详解

struts.xml的常用配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts

AndroidManifest.xml配置文件详解 (转)

AndroidManifest.xml配置文件对于Android应用开发来说是非常重要的基础知识,本文旨在总结该配置文件中重点的用法,以便日后查阅.下面是一个标准的AndroidManifest.xml文件样例. [html] view plaincopy <?xml version="1.0" encoding="utf-8"?> <manifest> <!-- 基本配置 --> <uses-permission />