MyBatis——3

mybatis再xml文件中处理大于号小于号的方法

方法一:

用转义字符把>和<替换掉

XML转义字符

方法二:

使用<![CDATA[ ]]>符号进行说明,将此类符号不进行解析

MyBatis错误:Parameter 'xxx' not found.Available parameters are [1,0,param1,param2]

原本用的是名称匹配发现不了,换成0,1,2这样的方式序列匹配;如果还是解决不了的话可能是参数类型不一致或者其中参数为NULL。

MyBatis多表联合查询及优化

表关系

user(id,username,password,gmt_create,gmt_modify)

role(id,name,userid)

user,role:一对多

User和Role的实体类代码:

在User的实体中加入一个Role的属性,对应一对多的关系。

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">
<mapper namespace="src.bonc.lbs.wt.dao.business.UserDao" >
<!-- Result Map-->
<resultMap id="BaseResultMap" type="src.bonc.lbs.wt.entity.business.User" >
	<result column="id" property="id"/>
	<result column="username" property="username"/>
	<result column="password" property="password"/>
	<result column="gmt_create" property="gmt_create"/>
	<result column="gmt_modify" property="gmt_modify"/>
</resultMap>

<!-- Result Map -->
<resultMap type="src.bonc.lbs.wt.entity.business.User" id="queryForListMap">
	<id column="id" property="id"/>
	<result column="username" property="username"/>
	<result column="password" property="password"/>
	<collection property="roles" javaType="java.util.List" ofType="src.bonc.lbs.wt.entity.business.Role">
		<id column="r_id" property="id" jdbcType="VARCHAR" />
        <result column="r_name" property="name" jdbcType="VARCHAR" />
	</collection>
</resultMap>

<!-- user table all fields -->
<sql id="Base_Column_List" >
	 id,username,password,gmt_create,gmt_modify
</sql>

<!-- 查询条件 -->
<sql id="Example_Where_Clause">
where 1=1
<trim  suffixOverrides="," >
	<if test="id != null and id != ''" >
	    and id =  #{id}
	</if>
	<if test="username != null and username != ''" >
	    and username =  #{username}
	</if>
	<if test="password != null and password != ''" >
	    and password =  #{password}
	</if>
</trim>
</sql>

<!-- 插入记录 -->
<insert id="add" parameterType="Object" >
  insert into user(id,username,password)
 values(#{id},#{username},#{password})
</insert>

<!-- 根据id,修改记录-->
 <update id="update" parameterType="Object" >
  update user set username=#{username},password=#{password} where id=#{id}
 </update>

 <!-- 修改记录,只修改只不为空的字段 -->
<update id="updateBySelective" parameterType="Object" >
	update user set
	<trim  suffixOverrides="," >
	<if test="username != null  ">
		username=#{username},
	</if>
	<if test="password != null  ">
		password=#{password},
	</if>
	<if test="gmt_create != null  ">
		gmt_create=#{gmt_create},
	</if>
	<if test="gmt_modify != null  ">
		gmt_modify=#{gmt_modify},
	</if>
	</trim> where id=#{id}
</update>

<!-- 删除记录 -->
<delete id="delete" parameterType="Object">
	delete 	 from user where id = #{id}
</delete>

<!-- 根据id查询 用户 -->
<select id="queryById"  resultMap="BaseResultMap" parameterType="Object">
	select <include refid="Base_Column_List" />
	 from user where id = #{id}
</select>

<!-- 用户 列表总数-->
<select id="queryByCount" resultType="java.lang.Integer"  parameterType="Object">
	select count(1) from user
	<include refid="Example_Where_Clause"/>
</select>

<!-- 查询用户列表 -->
<select id="queryByList" resultMap="BaseResultMap"  parameterType="Object">
	select
	<include refid="Base_Column_List"/>
	from user
	<include refid="Example_Where_Clause"/>
	<if test="pager.orderCondition != null and pager.orderCondition != ''" >
      ${pager.orderCondition}
    </if>
    <if test="pager.mysqlQueryCondition != null and pager.mysqlQueryCondition != ''" >
       ${pager.mysqlQueryCondition}
    </if>
</select>

<select id="queryForList" resultMap="queryForListMap">
	SELECT u.id,u.username,u.password,r.id r_id,r.name r_name FROM user u LEFT JOIN role r ON u.id = r.userid
</select>

<select id="queryForListByCT" resultMap="queryForListMap">
	SELECT u.id,u.username,u.password,r.id r_id,r.name r_name FROM user u LEFT JOIN role r ON u.id = r.userid
	WHERE u.gmt_create > #{0} AND u.gmt_create < #{1}
</select>

</mapper>

mapper接口

package src.bonc.lbs.wt.dao.business;

import java.util.List;

import src.bonc.com.base.dao.BaseDao;
import src.bonc.lbs.wt.entity.business.User;
/**
 *
 * <br>
 * <b>功能:</b>UserDao<br>
 * <b>作者:</b>bonc<br>
 * <b>日期:</b> Feb 2, 2017 <br>
 * <b>版权所有:<b>版权所有(C) 2017,bonc.com.cn<br>
 */
public interface UserDao<T> extends BaseDao<T> {

	List<User> queryForList();

	List<User> queryForListByCT(String startTime, String endTime);
}
时间: 2024-09-06 07:35:13

MyBatis——3的相关文章

springmvc+mybatis整合 MapperScannerConfigurer配置出错

问题描述 springmvc+mybatis整合 MapperScannerConfigurer配置出错 1C 配置如下: 问题:如果配置了 <property name=""sqlSessionFactoryBeanName"" value=""wechatSqlSessionFactory"" />,启动的时候报错如下:Caused by: org.springframework.beans.factory.B

mybatis 嵌套的结果集不能被安全的转为自定义ResultHandler

问题描述 mybatis 嵌套的结果集不能被安全的转为自定义ResultHandler 如下:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: Mapped Statements with nested result mappings cannot be safely used with a custom ResultHandle

spring mvc-springmvc+mybatis+quartz的项目启动出错了,求大神指点

问题描述 springmvc+mybatis+quartz的项目启动出错了,求大神指点 看不懂什么情况,求大神指点下 jackson-mapper-asl严重: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Quart

java 后台获取mybatis自增主键

问题描述 java 后台获取mybatis自增主键 现在java后台执行insert操作想获取 mybatis里这条插入语句的自增主键 SELECT LAST_INSERT_ID() AS source_id insert into tenke_pick_resource (url path name size heightwidthformatstatus) values (#{urljdbcType=VARCHAR} #{pathjdbcType=VARCHAR} #{namejdbcTyp

MyBATIS使用CRUD

MyEclipse不提供自动生成,这里提供mybatis文件包和开发文档 http://download.csdn.net/detail/u010026901/7489319 自己建立配置文件, <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http

Mybatis 在CS程序中的应用

如果是自己用的Mybatis,不需要考虑对配置文件加密,如果不是,那就需要考虑加密,这篇文章主要讲如何配置CS的Mybatis   因为mybatis好使,所以几乎需要操作数据库的时候,我都会使用mybatis,而且在一个正式的项目中,同时存在BS和CS的程序,都使用的Mybatis,使用的相同mapper文件. Mybatis的XML配置文件正常如下: 复制代码 代码如下: <?xml version="1.0" encoding="UTF-8" ?>

Mybatis整合Spring

 Mybatis整合SpringintegrationMapperScannerConfigurer  Mybatis整合Spring 根据官方的说法,在ibatis3,也就是Mybatis3问世之前,Spring3的开发工作就已经完成了,所以Spring3中还是没有对Mybatis3的支持.因此由Mybatis社区自己开发了一个Mybatis-Spring用来满足Mybatis用户整合Spring的需求.下面就将通过Mybatis-Spring来整合Mybatis跟Spring的用法做一个简单

mybatis错误:Invalid bound statement (not found)万分感谢!

问题描述 mybatis错误:Invalid bound statement (not found)万分感谢! 0.问题说明: 我是一名菜鸟,最近使用spring-mvc ,spring,mybatis框架 这两天出现一个错误一直搞不定,心好累,恳请前辈帮帮忙 1. 异常 org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.apache.ib

Mybatis中执行String类型的自己拼写的sql,不执行配置文件中的sql

Mybatis中执行String类型的自己拼写的sql,不执行配置文件中的sql 在自己的dao类中继承SqlSessionDaoSupport类 /** * @author herman.xiong * @since 0.1 * @param <T>实体类 * @param <PK>主键类,必须实现Serializable接口 */ package com.dao; import java.io.Serializable; import org.apache.log4j.Logg

IDEA开发JavaWeb(SpringMVC+MyBatis)项目报错。

问题描述 IDEA开发JavaWeb(SpringMVC+MyBatis)项目报错. 刚开始JavaWeb的开发,用了SpringMVC+Mybatis的结构,按着教程来的,但是运行欢迎页能看到,但是报了Injection of resource dependencies failed.错误,Dao没找到.这是工程的结构.这是applicationContext.xml的配置. <?xml version=""1.0"" encoding="&quo