<?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="dao.IUserDao">
<!-- 重点之一-->
<!-- 配置数据库的列名与实体类中国属性名的对应关系
<resultMap id="userMap" type="bean.User">
主键的配置
<id property="" column="">
非主键的配置
<result property=""column=""></result>
</resultMap> --> <!-- SQL语句
配置查找
提供Sql语句 获取'PreparedSatement'
和返回的类型3
-->
<!--查找所有-->
<select resultType="bean.User" id="findAll">
select * from user
</select> <!--保存用户 插入 parameterType传进去的-->
<insert id="saveUser" parameterType="bean.User">
<!-- insert into user(username)values(#{userName},#{必须与对应的bean中对应})
前面那个user()学过数据库应该都知道该怎么写--> <!--配置插入操作后,获取插入数据的id keyColumn列名称对应表
有它存贮后id从null变成了数据库里存储的id
-->
<selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER">
select last_insert_id();
</selectKey> insert into user(username)values(#{userName})
</insert> <update id="updateUser" parameterType="bean.User">
update user set username=#{userName}where id=#{id}
</update>
<!--可以写int可以Integer-->
<delete id="deleteUser" parameterType="int">
<!--可以id 也可以写userId-->
/*一个参数时名字随便写*/
delete from user where id=#{id}
</delete>
<!--根据id查询用户 -->
<select id="findById" parameterType="int" resultType="bean.User">
select * from user where id=#{id}
</select>
<!-- 重点之一-->
<!-- 模糊查询
如果这样写必须写成value,源码里规定
查询时就不需要加%了
select * from user where username like '%${value}%'‘
二者比较
这种使用Statement拼接Sql
下面那个用的时PrateStatement的?预处理方式
-->
<select id="findByName" parameterType="String" resultType="bean.User">
<!-- 传进的参数须带% 此方式更好-->
select * from user where username like #{userName} </select>
<!--获取用户数 -->
<select id="count" resultType="int">
select count(*) from user
</select>
<!-- 重点之一-->
<!-- 对实体类对象包装起来查询-->
<select id="findUserByVo" parameterType="bean.QueryVo" resultType="bean.User">
select * from user where username like #{user.userName}
</select>
</mapper>

许多操作看Sql语句就能明白
学习到了三个重点:

1.模糊查询的俩种方式,一种得在set函数中自己加入%,一个必须严格使用vlaue

2.使用实体类对象包装查询

3.配置数据库与实体类的属性名对应:俩种方式一种Sql语句中起别名,一种写<resultMap>配置,二者优劣:前者执行效率高,后者只写一遍不用每条Sql都写开发好用

 

最新文章

  1. EF多对多更新报错(TableNoTracking引发的bug)
  2. zabbix的配置使用
  3. IOS Storyboard使用-模拟登录、注册、混合使用
  4. Python Web.py
  5. RPC框架motan: 通信框架netty之Netty4Client
  6. Linux C 程序 字符串函数(12)
  7. java_jdbc_spring框架查询操作简例
  8. Direct3D 11的资源
  9. Qt Creator needs a compiler set up to build. Configure a compiler in the kit options - Stack Overflow
  10. js继承之原型链继承
  11. SQL语句 (一)
  12. Python爬虫入门教程 38-100 教育部高校名单数据爬虫 scrapy
  13. 【做题】SRM704 Div1 Median - ModEquation——数论
  14. KazaQ&#39;s Socks (找规律)
  15. go语言fallthrough的用法心得
  16. js中级小知识1
  17. PC/FORTH 变量|常数|数组
  18. 2018.4.25-ml笔记(梯度下降)
  19. python 简单的server请求
  20. get和post的解析

热门文章

  1. java并发(二):初探syncronized
  2. 新闻网大数据实时分析可视化系统项目——14、Spark2.X环境准备、编译部署及运行
  3. ROS学习笔记1-引言
  4. oracle jobs查看 sql及创建 jobs
  5. Mybatis-问题总结
  6. luogu P2766 最长不下降子序列问题
  7. php 实现店铺装修1
  8. python-python基础3
  9. MQTT 协议学习:000-有关概念入门
  10. 解决Google浏览器不能打开kubernetes dashboard方法【转】