博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mybatis输入类型和结果类型
阅读量:5344 次
发布时间:2019-06-15

本文共 3069 字,大约阅读时间需要 10 分钟。

参数类型:

  •          简单类型:引用时名称随便写

                     基本数据类型

                     基本数据类型的包装类型

                     String

  •          pojo对象:引用时写实体类的属性名

                     #{name},引用的是实体类User中的name属性

public class QueryVo {// 包含其他的pojoprivate User user;private Integer startIndex;private Integer pageSize;}

 

 

1.传递的多个参数

/**

* 多条件查询
*/

public List
findUsers(Integer startIndex, Integer pageSize, String name);

 

 

 parameterType:省略不配置

     引入时: param1 ,param2,......

 

2.传递map

//获取sessionSqlSession session = sessionFactory.openSession();//通过getMapper方法获取某接口的动态代理类对象UserDao userDao = session.getMapper(UserDao.class);Map
map = new HashMap<>();map.put("startIndex",2);map.put("pageSize",2);map.put("name","zhang");List
userList = userDao.findUserByMap(map);

 

 

        属性名自己指定

        引用时引用属性名即可

 

返回值

   <!-- resultMap最终还是要将结果映射到pojo上,type就是指定映射到哪一个pojo -->

   <!-- id:设置ResultMap的id -->

   <resultMap id="users" type="user">

       <!-- 定义主键 ,非常重要。如果是多个字段,则定义多个id -->

       <!-- property:主键在pojo中的属性名 -->

       <!-- column:主键在数据库中的列名 -->

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

 

 

 

根据id查询

<!--根据id查询-->

    <!--parameterType:指定参数类型-->

    <!--简单类型:基本数据类型&包装类型   String

        如果参数是简单类型,引用时名称随便写-->

<!--根据id查询-->

 

select * from user where id = #{abc}
select * from user where id = #{id}

模糊查询

<!--

        参数类型:pojo对象,引用实体类中的属性名

        #{name},引用的是实体类中的name属性

    -->

//第一种 //第二种

 

#{} 和${}

关于#{}:

1、#{}等同于 PreparedStatement 中的占位符?,会自动对传入的字符串数据加一对单引号,可以避免 Sql 注入。

         比如

         select * from user where username = #{username} ,  传入的 username 为小张,那么最后打印出来的就是

         select * from user where username = ‘小张’

2、#{}可以接收简单类型值或 Pojo 属性值。

         如果 parameterType 传输单个简单类型值,#{}括号中可以是任意名称。

关于${}:

1、${}将传入的数据直接显示生成在 Sql 中,只是简单的拼接。

         如:order by ${id},如果传入的值是 id,则解析成的 Sql 为 order by id。

         如果上面的例子使用${},则成了 select * from user where username = 小张

2、${}可以接收简单类型值或 Pojo 属性值,

         如果 parameterType 传输单个简单类型值,${}括号中只能是“value”这个字符串

 

 

 

user.setName("Rose");

"%"#{name}"%"     Rose

#{name}           %Rose%
${name}          '%Rose%'
'%${name}%'      Rose

 

 

"%"#{abc}"%"   Rose

'%${value}%'   Rose

     如果传递的是简单类型参数,必须使用${value}

     如果是pojo, 必须${属性名}

 

总结:

1、$方式一般用于传入数据库对象,例如传入表名、order by 的字段

2、一般能用#的就别用$.

 

增加用户

INSERT INTO user values (null,#{name},#{age})

 

<!--

       selectKey: 查询键值
           属性:order:在添加之前查询,还是之后查询
                 keyProperty: 对应pojo对象中的属性名
                 keyColumn: 对应数据库中某列
                 resultType: 返回值类型
            select last_insert_id(): 是mysql数据库的一个函数,获取该表最后一次添加的自增的值
   -->

SELECT last_insert_id();
INSERT INTO user values (null,#{name},#{age})

 

 

sqlSession.insert("com.wqy.dao.UserDao.addUser", user);System.out.println(user.getId());

 

 

在执行插入操纵后,可以打印用户的id

转载于:https://www.cnblogs.com/Cyan-W/p/9866013.html

你可能感兴趣的文章
《C++ Primer Plus》第12章 类和动态内存分配 学习笔记
查看>>
javascript中sort()排序方法总结
查看>>
实现聊天界面的代码
查看>>
自己生成一个NDK的浅析
查看>>
Excel数据导入到数据库
查看>>
jQuery最佳实践
查看>>
SELinux FAQ
查看>>
Java中synchronized同步的理解
查看>>
python 数值计算库
查看>>
java 服务重启 js 中被注释代码仍然执行
查看>>
我并不是不闻不问![C#]
查看>>
web前端经典小题
查看>>
AutoCAD如何倒角 倒圆角 倒直角
查看>>
Office PPT中如何插入flash
查看>>
C# Fade Form Effect With the AnimateWindow API Function
查看>>
golang多维数组的切片
查看>>
IP 网际协议
查看>>
C语言_第五章__实践(密码转换)
查看>>
docker 容器后台运行命令
查看>>
jquery 获取css position的值
查看>>