Mybatis学习--Mapper.xml映射文件demo

7 篇文章 0 订阅
1 篇文章 0 订阅

mapper.xml 常用写法

映射文件中有很多属性,常用的就是parameterType(输入类型)、resultType(输出类型)、resultMap()、rparameterMap()。

  • parameterType(输入类型)  项目常用类型  通过id查找或删除列表  一般输入类型为int   string  
  • <deleteid="deleteByAppId"parameterType="INTEGER">


  • 如果是通过条件查找列表  一般是  

    <selectid="pageQuery"parameterType="java.util.HashMap"resultMap="ConsignAdjustResultMap">

  • 如果是添加或者更新实体  

    <insertid="add"parameterType="com.dhc.fastersoft.entity.order.ConsignAdjust">

  1、#{}与${}


<!-- 根据名称模糊查询用户信息 -->
2     <select id="selectUserByName" parameterType="string" resultType="user">
3        select * from user where username like '%${value}%'
4     </select>

  #{}实现的是向prepareStatement中的预处理语句中设置参数值,sql语句中#{}表示一个占位符即?

如果本例子使用 #{} 则传入的字符串中必须有 % 号,而 % 是人为拼接在参数中,显然有点麻烦,如果采用 ${} sql 中拼接为 % 的方式则在调用 mapper 接口传递参数就方便很多。



--resultMap:当使用resultMap做SQL语句返回结果类型处理时,通常需要在mapper.xml中定义resultMap进行pojo和相应表字段的对应。column:指定唯 一标识用户信息的列   javaType:映射到user的哪个属性  property:java 实体属性名称。 一般数据量3个就够用了,int  String double  如果是时间日期,我习惯用字符串,添加与读取进行to_date与to_char 进行格式处理,这样就不用前端进行转换。

property 映射到列结果的字段或属性。如果匹配的是存在的,和给定名称相同 的 JavaBeans 的属性,那么就会使用。否则 MyBatis 将会寻找给定名称 property 的字段。这两种情形你可以使用通常点式的复杂属性导航。比如,你 可以这样映射一些东西: “username” ,或者映射到一些复杂的东西: “address.street.number” 。
column 从数据库中得到的列名,或者是列名的重命名标签。这也是通常和会 传递给 resultSet.getString(columnName)方法参数中相同的字符串。
javaType 一个 Java 类的完全限定名,或一个类型别名(参考上面内建类型别名 的列表) 。如果你映射到一个 JavaBean,MyBatis 通常可以断定类型。 然而,如果你映射到的是 HashMap,那么你应该明确地指定 javaType 来保证所需的行为。
jdbcType 在这个表格之后的所支持的 JDBC 类型列表中的类型。JDBC 类型是仅 仅需要对插入,更新和删除操作可能为空的列进行处理。这是 JDBC jdbcType 的需要,而不是 MyBatis 的。如果你直接使用 JDBC 编程,你需要指定 这个类型-但仅仅对可能为空的值。

resultMap 外部 resultMap 的命名引用。结果集的映射是 MyBatis 最强大的特性,对其有一个很好的理解的话,许多复杂映射的情形都能迎刃而解。使用 resultMap 或 resultType,但不能同时使用。

动态 SQL

  • if
  • choose (when, otherwise)
  • trim (where, set)
  • foreach

  • if 动态 SQL 通常要做的事情是有条件地包含 where 子句的一部分。比如:

    <select id="findActiveBlogWithTitleLike"
         resultType="Blog">
      SELECT * FROM BLOG 
      WHERE state = ‘ACTIVE’ 
      <if test="title != null">
        AND title like #{title}
      </if>
    </select>



<?xmlversion="1.0"encoding="UTF-8"?>

<!DOCTYPEmapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd" >

<mappernamespace="com.dhc.fastersoft.dao.consignment.ConsignAdjustDao">

<resultMaptype="com.dhc.fastersoft.entity.order.ConsignAdjust"id="ConsignAdjustResultMap">

<resultproperty="id"     column="N_ID"     javaType="int"   jdbcType="INTEGER"/>

<resultproperty="routeId"   column="V_ROUTEID"  javaType="String" jdbcType="VARCHAR"/>

<resultproperty="amount"     column="N_AMOUNT"    javaType="double"     jdbcType="DOUBLE"/> <resultproperty="act"    column="D_ACT"  javaType="String"jdbcType="TIMESTAMP"/>

</resultMap>


--oracle 分页查询

select * from ( select row_.*, rownum rownum_ from (select * from t_dealer_order ) row_ where rownum <= 20) where rownum_ > 10

<selectid="pageQuery"parameterType="java.util.HashMap"resultMap="ConsignAdjustResultMap">

${start} 

SELECT 

A.N_ID id,to_char(A.D_ACT,'YYYY/MM/DD'act

from T_DEALER_CONSIGN_ADJUST A 

where 1=1

<iftest="routeId!=null and routeId!=''">

and  V_ROUTEID=#{routeId,jdbcType=VARCHAR}

</if>

/*<if test="routeId!=null and routeId!=''">

 and  V_ROUTEID LIKE '%${routeId,jdbcType=VARCHAR}%'

</if>*/


<iftest="(timeStart!=null and timeStart!='') and (timeEnd==null or timeEnd=='')">

AND to_date(to_char(D_ACT,'YYYY-MM-DD'),'YYYY-MM-DD') >= to_date('${timeStart}','YYYY-MM-DD')

</if>

<iftest="(timeStart==null or timeStart=='') and (timeEnd!=null and timeEnd!='')">

AND to_date(to_char(D_ACT,'YYYY-MM-DD'),'YYYY-MM-DD')<![CDATA[ <= ]]> to_date('${timeEnd}','YYYY-MM-DD') 

</if>

<iftest="(timeStart!=null and timeStart!='') and (timeEnd!=null and timeEnd!='')">

AND to_date(to_char(D_ACT,'YYYY-MM-DD'),'YYYY-MM-DD') BETWEEN to_date('${timeStart}','YYYY-MM-DD') AND to_date('${timeEnd}','YYYY-MM-DD') 

</if>

order by A.N_ID DESC

${end}

</select>


<selectid="getConsignAdjust"parameterType="String resultType="com.dhc.fastersoft.entity.order.ConsignAdjust">

SELECT 

A.N_ID id,A.V_ROUTEIDrouteId,A.V_ROUTENAME routeName,A.V_USERID userId,A.V_USERNAME userName,

A.V_NOTE note,A.V_FILEID fileId,F.V_FILE_NAME fileName, A.V_STATE state,A.D_ACT act,A.N_NUMnum,A.N_AMOUNT amount,A.N_PROD_AMOUNT prodAmount

,A.N_USED_AMOUNT usedAmount,A.N_UNPAID_AMOUNT unpaidAmount,A.N_SALE_AMOUNT saleAmount

from T_DEALER_CONSIGN_ADJUST A ,T_DEALER_DICT_FILE F

where N_ID=#{appId} AND

A.V_FILEID=F.V_ID(+)

</select>

<selectid="getRecordCount"parameterType="java.util.HashMap"resultType="int">

SELECT COUNT(0) FROM T_DEALER_CONSIGN_ADJUST  

where 1=1

</select>

<insertid="add"parameterType="com.dhc.fastersoft.entity.order.ConsignAdjust">

--添加之后需要返回主键ID

<selectKeyresultType="INTEGER"order="BEFORE"keyProperty="id">  

      SELECT SEQ_CONSIGN_ADJUST.NEXTVAL as id from DUAL

    </selectKey> 

INSERT INTO T_DEALER_CONSIGN_ADJUST (

N_ID,

V_ROUTEID,

V_ROUTENAME,

V_USERID,

V_USERNAME,

V_NOTE,

V_FILEID,

D_ACT,

V_STATE,

N_NUM,

N_AMOUNT,

N_PROD_AMOUNT,

N_USED_AMOUNT,

N_UNPAID_AMOUNT,

N_SALE_AMOUNT 

) VALUES (

#{id},

#{routeId,jdbcType=VARCHAR},

#{routeName,jdbcType=VARCHAR},

#{userId,jdbcType=VARCHAR},

#{userName,jdbcType=VARCHAR},

#{note,jdbcType=VARCHAR},

#{fileId,jdbcType=VARCHAR},

sysdate,

#{state,jdbcType=VARCHAR},

#{num,jdbcType=INTEGER},

#{amount,jdbcType=DOUBLE},

#{prodAmount,jdbcType=DOUBLE},

#{usedAmount,jdbcType=DOUBLE},

#{unpaidAmount,jdbcType=DOUBLE},

#{saleAmount,jdbcType=DOUBLE}

)

</insert>

<updateid="update"parameterType="com.dhc.fastersoft.entity.order.ConsignAdjust">

UPDATE T_DEALER_CONSIGN_ADJUST SET 

V_USERID=#{userId,jdbcType=VARCHAR},

V_USERNAME=#{userName,jdbcType=VARCHAR},

V_NOTE=#{note,jdbcType=VARCHAR},

D_ACT=sysdate,  ---to_date(act,'yyyy/MM/dd HH:mm:ss')

N_NUM=#{num,jdbcType=INTEGER},

N_PROD_AMOUNT=#{prodAmount,jdbcType=DOUBLE},

N_AMOUNT=#{amount,jdbcType=DOUBLE},

N_USED_AMOUNT=#{usedAmount,jdbcType=DOUBLE},

N_UNPAID_AMOUNT=#{unpaidAmount,jdbcType=DOUBLE},

V_STATE=#{state,jdbcType=VARCHAR},

N_SALE_AMOUNT=#{saleAmount,jdbcType=DOUBLE}

<iftest="fileId!=null and fileId!=''">

,V_FILEID=#{fileId,jdbcType=VARCHAR}

</if>

WHERE N_ID=${id} 

</update>

<deleteid="deleteByAppId"parameterType="INTEGER">

DELETE  FROM T_DEALER_CONSIGN_ADJUST_PROD

WHERE N_APPID=#{appid}

</delete>


</mapper>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: mybatis-config.xml 模板如下: ```xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <settings> <!-- 设置全局属性 --> </settings> <typeAliases> <!-- 指定类型别名 --> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <!-- 数据库连接信息 --> </dataSource> </environment> </environments> <mappers> <!-- 指定映射器 --> </mappers> </configuration> ``` 其中,settings、typeAliases、environments、mappers 是 mybatis-config.xml 的四个重要元素。 - settings 中定义了全局属性,如开启驼峰命名规则等。 - typeAliases 中定义了类型别名,可以简化映射文件中类名的编写。 - environments 中定义了环境信息,包括事务管理器和数据源。 - mappers 中指定了映射文件的位置。 请注意,上面的模板是基本的配置,根据需要可能会有修改。 ### 回答2: mybatis-config.xmlMyBatis框架中的配置文件,用于配置和管理MyBatis的各个组件和功能。 这个模板文件包含了一些重要的配置项和属性,可以根据用户的需求进行自定义。以下是一个常见的mybatis-config.xml模板示例: ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <properties> <!-- 数据库连接配置 --> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/mybatis_demo" /> <property name="username" value="root" /> <property name="password" value="123456" /> </properties> <typeAliases> <!-- 实体类别名配置 --> <package name="com.example.entity" /> </typeAliases> <mappers> <!-- Mapper接口配置 --> <mapper resource="com/example/dao/UserMapper.xml" /> </mappers> <environments default="development"> <environment id="development"> <!-- 事务管理器配置 --> <transactionManager type="JDBC" /> <!-- 数据源配置 --> <dataSource type="POOLED"> <property name="driver" value="${driver}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> </dataSource> </environment> </environments> </configuration> ``` 通过这个模板,我们可以配置数据库的连接信息、实体类别名、Mapper接口以及事务管理器和数据源等。 使用时,可根据实际情况修改数据库连接信息、实体类别名和Mapper接口的路径等。这样可以方便地进行数据库操作和管理,提供了灵活性和扩展性。 注意,在实际的项目中,mybatis-config.xml文件可能还会包含其他的配置项,以满足具体的需求。这只是一个简单的模板示例,具体的配置内容需要根据项目的需求进行调整。 ### 回答3: mybatis-config.xmlMyBatis框架的主配置文件,用于配置MyBatis的全局属性和插件。下面是一个简单的mybatis-config.xml模板: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 设置MyBatis的运行环境 --> <environments default="development"> <environment id="development"> <!-- 设置事务管理器 --> <transactionManager type="JDBC" /> <!-- 设置数据源 --> <dataSource type="POOLED"> <!-- 设置数据库连接信息 --> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/testdb"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <!-- 设置映射文件 --> <mappers> <mapper resource="com/example/mapper/ExampleMapper.xml"/> </mappers> </configuration> 在配置文件中,可以配置多个environments环境,根据实际情况选择对应的环境用于数据源和事务管理器的配置。在dataSource标签中,可以配置数据库的连接信息,包括驱动名、URL、用户名和密码等。在mappers标签中,可以配置映射文件的路径,其中每个映射文件对应一个Mapper接口。 通过这个模板,我们可以根据实际需要进行修改和扩展,例如更换数据库的连接信息、配置多数据源、添加插件等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值