parametertype

Mybatis——动态SQL语句!

不问归期 提交于 2020-02-21 07:25:28
含义 动态的SQL语句,就是指在运行的时候,根据Mapper.xml中的语句,来决定方法传入参数的使用。 使用 <if test=""></if>标签 Mapper.xml中的配置 if 判断 参数传入的值,判断是否可以使用,再执行SQL语句, 缺点 如何传入的值分别是null,1时or 符号不会消失,这样sql语句识别不出来。 < select id = "queryUserByUser" resultType = "com.atguigu.pojo.User" parameterType = "com.atguigu.pojo.User" > select `id` , `last_name` lastName , `sex` from t_user where < if test = "lastName!=null" > last_name = # { lastName } < / if > < if test = "sex==0||sex==1" > or sex = # { sex } < / if > < / select > <where ></where>标签 Mapper.xml中的配置where能有效帮助我们,添加和去除查询条件 前面 的关键字。 缺点 不能去除查询条件 后面 的多余的关键。 < select id = "queryUserByUser"

Java框架之Mybatis(二)

流过昼夜 提交于 2020-02-19 08:44:36
本文主要介绍 Mybatis(一)之后剩下的内容: 1 mybatis 中 log4j的配置 2 dao层的开发(使用mapper代理的方式) 3 mybatis的配置详解 4 输入输出映射对应的类型 ( parameterType 和 resultType ) 5 mybatis 动态 sql 6 mybatis 中的一级缓存 7 mybatis 中的二级缓存 8 mybatis 和 缓存框架的整合 9 mybatis 中二级缓存使用时注意的问题 10 mybatis 和 spring 整合 11 mybatis + spring mvc 一、mybatis 中 log4j 的配置 在 config 文件夹下,新建 log4j.properties ,其内容如下: 即可 log4j.rootLogger=DEBUG, Console #Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n log4j.logger.java.sql

2.MyBatis的CRUD操作

我怕爱的太早我们不能终老 提交于 2020-02-11 20:59:46
转载:https://blog.kuangstudy.com/index.php/archives/492/ 一.CRUD操作 1.基本操作流程 在Mapper接口中添加一个方法 在Mapper.xml中添加一个xml语句与方法对应 在测试类中添加一个方法测试 2.namespace 配置文件中namespace中的名称为对应Mapper接口或者Dao接口的完整包名,必须一致! 3.select (1)介绍 select标签是mybatis中最常用的标签之一 select语句有很多属性可以详细配置每一条SQL语句 id:对应namespace中的方法名 parameterType:传入SQL语句的参数类型 。【万能的Map,可以多尝试使用】 resultType:SQL语句返回值类型。【完整的类名或者别名】 (2)案例:根据id查询用户 Mapper接口中添加方法 1 //根据ID查询用户 2 User getUserById(int id); Mapper.xml中添加xml语句 1 <!--根据ID查询用户--> 2 <select id="getUserById" parameterType="int" resultType="edu.ustc.wzh.pojo.User"> 3 select * from mybatis.user where id=#{id} 4 <

MySql批量操作数据库

为君一笑 提交于 2020-02-09 10:06:09
1)批量插入 批量操作主要使用的是Mybatis的foreach,遍历参数列表执行相应的操作, 所以批量插入/更新/删除的写法是类似的,只是SQL略有区别而已。 mysql批量操作需要数据库连接配置allowMultiQueries=true才可以。 <insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="true"> <foreach close="" collection="list" index="index" item="item" open="" separator=";"> insert into user (name, age,dept_code) values (#{item.name,jdbcType=VARCHAR}, #{item.age,jdbcType=INTEGER}, #{item.deptCode,jdbcType=VARCHAR} ) </foreach> </insert> 或者 <insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="true"> insert into user (name, age,dept_code) values <foreach

Mybatis入门

£可爱£侵袭症+ 提交于 2020-02-01 08:48:08
1 Mybatis概念 (1)mybatis : 一个基于Java的 持久层 框架 (2)持久层 : 操作数据库那层代码 (项目分层:界面层(jsp/controller) 业务层(service层) 持久层(数据层 dao层)) 持久层框架 : jdbc , springjdbc jpa springdatajpa , mybatis (3) 框架: a) 每个框架为了解决某一个领域问题产生 b)框架还是一个半成品, 已经完成一部分功能 ,只需要在上面进行开发 --提高开发效率 c) 可以让我们很多人写的代码 都按照一定规则去写--可读性 维护性 (4)持久化概念: 把内存里面数据 保存到数据库中 --过程就叫持久化 (5)mybatis 它是一个持久层框架,同时又是ORM的框架 ORM: 对象关系映射 --jpa/springdatajpa 2 Mybatis的特点 (1)MyBatis 是一个支持普通 SQL查询,存储过程(数据库mysql/oracle)和高级映射的优秀持久层框架。 (2)MyBatis 消除了几乎所有的JDBC代码和手工设置参数以及结果集的检索 。 jdbc: a) 贾琏欲执事 -- 不需要做 b) 手工设置参数(传参) -- 不需要做 insert into xxx (name,age) values(?,?) c) 结果集 ResultSet(返回值)

Mybatis的高级查询&批量删除&批量添加&Mybatis集成SSM

亡梦爱人 提交于 2020-01-29 00:31:00
一、映射Mapper 接口方法映射到对应的SQL XXXMapper.xml的命名空间名称就是Mapper接口的全限定名 Mapper接口上也可以通过相应的注释来写SQL(但是最好不要这么写哦) // 查询全部 // @Select("select * from employee") List < Employee > findAll ( ) ; employeeMapper.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 = "cn.cxm.mapper.mapper.EmployeeMapper" > < select id = "findOne" parameterType = "long" resultType = "cn.cxm.mapper.domain.Employee" > SELECT * FROM employee WHERE id = # { id } < / select > < select id

Java框架之Mybatis(一)

懵懂的女人 提交于 2020-01-28 06:31:40
一、Mybatis 简介 Mybatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为Mybatis , 2013年11月迁移到Github , iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)Mybatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。Mybatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。Mybatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。 二、Mybatis 的执行框架 1) SqlMapConfig.xml 文件 //名称不一定是这个名称 类似hibernate中的主配置文件 主配置文件 配置数据源,事务等运行环境,配置映射文件 (xxXmapper.xml... 多个) 2) SessionFactory 会话工厂,它是根据配置文件创建的,用来创建 SqlSession 3) SqlSession 会话 ,是一个接口

[刘阳Java]_MyBatis_映射文件的常用标签总结_第5讲

早过忘川 提交于 2020-01-25 17:50:33
MyBatis中常用标签的总结,简单给出自己的总结 MyBatis映射文件中的标签使用介绍 1.<select>:用于编写查询语句用的标签 id:表示当前<select>标签的唯一标识 parameterType:指定查询限制条件的输入类型,一般使用#{}实现的是向prepareStatement中的预处理语句中设置参数值 resultType:指定查询返回结果的输出类型,如果返回的结果是一个实体类,必须要求实体类的属性和表的字段名称相同 resultMap:也是一个输出类型,配合<resultMap>标签使用 flushCache:设置查询的时候是否清空缓存,默认为false useCache:将查询结果放入缓存中,默认为true timeout:设置查询返回结果的最大响应时间 fetchSize:每次批量返回的结果行数。默认不设置 statementType:STATEMENT、PREPARED或CALLABLE的一种,这会让MyBatis使用选择Statement、PreparedStatement或CallableStatement。默认值:PREPARED resultSetType:设置游标FORWARD_ONLY、SCROLL_SENSITIVE、SCROLL_INSENSITIVE中的一种。认不设置 2.<resultMap>

SQL 映射的 XML 文件

梦想的初衷 提交于 2020-01-21 13:55:00
MyBatis 真正的力量是在映射语句中。这里是奇迹发生的地方。 对于所有的力量, SQL 映射的 XML 文件是相当的简单。当然如果你将它们和对等功能的 JDBC 代码来比较,你会 发现映射文件 节省了大约 95% 的代码量 。 MyBatis 的构建就是聚焦于 SQL 的,使其远离于 普通的方式。 SQL 映射文件有很少的几个顶级元素( 按照它们应该被定义的顺序 ):  cache - 配置给定命名空间的缓存。  cache-ref – 从其他命名空间引用缓存配置。  resultMap – 最复杂,也是最有力量的元素,用来描述如何从数据库结果集中来加载你的对象。  sql – 可以重用的 SQL 块,也可以被其他语句引用。  insert – 映射插入语句  update – 映射更新语句  delete – 映射删除语句  select – 映射查询语句 select <select id=”selectPerson” parameterType=”int” resultType=”hashmap”> SELECT * FROM PERSON WHERE ID = #{id} </select> 这个语句被称作 selectPerson,使用一个 int (或 Integer)类型的参数,并返回一个 HashMap类型的对象,其中的键是列名,值是列对应的值

记录一次TestNg+MyBatis中的SqlSession出现的问题,问题虽然解决了但尚未明白问题原因

醉酒当歌 提交于 2020-01-19 16:28:58
问题: TestNg测试端项目结构: 几个主要文件的内容: 1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 5 <mapper namespace="com.course"> 6 <!-- 获取登录接口case --> 7 <select id="loginCase" parameterType="Integer" resultType="com.course.model.LoginCase"> 8 SELECT * FROM loginCase 9 WHERE id = #{id}; 10 </select> 11 <!--添加用户接口case--> 12 <select id="addUserCase" parameterType="Integer" resultType="com.course.model.AddUserCase"> 13 select * from addUserCase where id=#{id}; 14 </select> 15 <!-- 获取用户信息case --> 16 <select