提示:

Mapper配置文件的命名空间为对应接口包名+接口名字,这个经常会忘记和搞错的!!


select标签

在接口中编写三个查询方法

//获取全部用户
List<User> selectUser(); //根据id查询用户
User getUserByID(int id); //根据一个对象查询
User getUserByUser(User user);

标签信息

    <select id="" parameterType="" resultType="" resultMap="">
-- sql语句 (#{name}--这个格式能获取方法参数与sql语句整合)
</select>

id:对应接口对应方法名字

parameterType:为参数类型

resultType:查询结果返回类型

resultMap:手动映射查询结果(之后随笔会介绍)

UserMapper.xml中select语句:

<select id="selectUser" resultType="com.ttt.pojo.User" >
select * from mybatis.user
</select> <select id="getUserByID" parameterType="int" resultType="com.ttt.pojo.User">
select * from mybatis.user where id=#{id}
</select> <select id="getUserByUser" parameterType="com.ttt.pojo.User" resultType="com.ttt.pojo.User">
select * from mybatis.user where name=#{name}
</select>

1、若返回结果为一个集合,那么返回类型就填返回集合里对象类型。

2、在接口方法的参数前加 @Param属性 ,Sql语句编写的时候,直接取@Param中设置的值即可,不需要单独设置参数类型

例如:

//通过密码和名字查询用户
User selectUserByNP(@Param("username") String username,@Param("pwd") String pwd);
/*
<select id="selectUserByNP" resultType="com.ttt.pojo.User">
select * from user where name = #{username} and pwd = #{pwd}
</select>
*/

测试语句:

@Test
public void test01(){
SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List<User> users1 = userMapper.selectUser();
User user2 = userMapper.getUserByID(1);
User user3 = userMapper.getUserByUser(new User(1, "黑子", "123456")); System.out.println("selectUser方法结果:");
for (User user : users1) {
System.out.println(user);
} System.out.println("getUserByID方法结果:");
System.out.println(user2); System.out.println("getUserByUser方法结果:");
System.out.println(user3); sqlSession.close();
}

test


insert标签:

1、在接口添加方法

//insert一个用户
int addUser(User user);

2、UserMapper.xml中insert语句

<insert id="addUser" parameterType="com.ttt.pojo.User">
insert into user(id, name, pwd) values (#{id}, #{name}, #{pwd})
</insert>

3、测试

   @Test
public void test04(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class); userMapper.addUser(new User(4,"demo", "1234" ));
sqlSession.commit(); sqlSession.close();
}

test


update标签

1、接口添加方法

//修改用户
int updateUser(User user);

2、UserMapper.xml中update语句

<update id="updateUser" parameterType="com.ttt.pojo.User">
update user set name = #{name}, pwd=#{pwd} where id=#{id} </update>

注:update语句没有返回标签

3、测试

@Test
public void test05(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class); userMapper.updateUser(new User(4, "绿员君", "123456"));
sqlSession.commit(); sqlSession.close();
}

test


delete标签

1、接口中添加方法

//删除一个用户
int deleteUser(int id);

2、UserMapper.xml中delete语句

<delete id="deleteUser" parameterType="int">
delete from mybatis.user where id=#{id};
</delete>

3、测试

@Test
public void test06(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class); userMapper.deleteUser(4);
sqlSession.commit(); sqlSession.close();
}

test


传参技巧--万能map

  1. 在接口方法中,参数直接传递Map  
    1. User selectUserByNP2(Map<String,Object> map);
  1. 编写sql语句的时候,需要传递参数类型,参数类型为map

    1. <select id="selectUserByNP2" parameterType="map" resultType="com.ttt.pojo.User">
      select * from user where name = #{username} and pwd = #{pwd}
      </select>
  2. 在使用方法的时候,Map的 key 为 sql中取的值即可,没有顺序要求!

    Map<String, Object> map = new HashMap<String, Object>();
    map.put("username","小明");
    map.put("pwd","123456");
    User user = mapper.selectUserByNP2(map);

  如果参数太多,我们可以使用map实现,而参数太少了,就直接传递参数即可。


小结:

  • 所有的增删改操作都需要提交事务!
  • 接口所有的普通参数,尽量都写上@Param参数,尤其是多个参数时,必须写上!
  • 有时候根据业务的需求,可以考虑使用map传递参数!
  • 为了规范操作,在SQL的配置文件中,我们尽量将Parameter参数和resultType都写上!

Mybatis:CRUD操作的更多相关文章

  1. MyBatis crud操作

    Test2.java package com.mycom.mybatis_1.crud; import java.util.List; import org.apache.ibatis.session ...

  2. 使用MyBatis对表执行CRUD操作

    一.使用MyBatis对表执行CRUD操作——基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: <?xml version="1.0&quo ...

  3. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作(转载)

    本文转载自:http://www.cnblogs.com/jpf-java/p/6013540.html 上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybati ...

  4. MyBatis入门学习教程-使用MyBatis对表执行CRUD操作

    上一篇MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对use ...

  5. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    一.使用MyBatis对表执行CRUD操作--基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: 1 <?xml version="1.0&q ...

  6. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...

  7. mybatis(二)执行CRUD操作的两种方式配置和注解

    一.使用MyBatis对表执行CRUD操作——基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: <?xml version="1.0&quo ...

  8. MyBatis学习总结_02_使用MyBatis对表执行CRUD操作

    一.使用MyBatis对表执行CRUD操作——基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: 1 <?xml version="1.0&q ...

  9. 【转】MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    [转]MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作 上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据, ...

  10. Mybatis的学习总结二:使用Mybatis对表进行CRUD操作【参考】

    一.使用Mybatis对表进行CRUD操作------基于XML的实现 1.定义SQL的映射文件 2.在conf.xml中进行注册. 2.创建测试类 [具体过程参考:Mybatis的学习总结一] 二. ...

随机推荐

  1. Maven私服Nexus的搭建

    # Maven私服Nexus的搭建 ## 私服存在的合理性 Maven中的依赖是从服务器仓库中下载的,Maven的仓库只有两大类: - 1) 本地仓库 - 2) 远程仓库,其中在远程仓库中又分成了3种 ...

  2. Jetpack系列:Paging组件帮你解决分页加载实现的痛苦

    相信很多小伙伴们在项目实战中,经常会用到界面的分页显示.加载更多等功能.需要针对具体功能做针对性开发和调试,耗时耗力. Paging组件的使用将这部分的工作简化,从而让开发者更专注于业务的具体实现.下 ...

  3. JAVA-JDBC-c3p0连接池配置

    配置c3p0数据源的方式有三种,分别是手动配置,xml文件配置和properties文件配置,这三种配置方式存在一种即可. 通常来讲,用文件配置更方便书写和阅读 配置如下: 注:*号部分写自己的配置 ...

  4. vue项目引入bootstrap正确姿势

    vue如何引入bootstrap 最近在玩全栈,自然少不了vue的使用.使用vue-cli生成的项目想引入bootstrap,需要先安装相应的npm包,然后在代码中显示引入. 1.安装依赖包: cnp ...

  5. UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 357: illegal multibyte sequence 错误解决方法(已解决)

    今天在搭建数据驱动测试框架的时候遇到这个错误: 好在我英语水平还不错(也就六级水平吧),根据英文提示说是多字节数据顺序是非法的 顺着错误往上找发现 File "C:\Users\Mr雷的电脑 ...

  6. mac下idea中安装docker插件

    idea中安装docker插件: 点击Intellij IDEA->Preferences...->Plugins->Browse repositories...如下: 点击Inst ...

  7. InfluxDB从原理到实战 - InfluxDB常用的基础操作

    0x00 基础操作介绍 在本文中将介绍InfluxDB常用的基础操作,帮助读者建立对InfluxDB的感性认识,快速的动手玩起来,持续查询(Continuous Queies).Group by.Se ...

  8. .NET进阶篇03-Reflection反射、Attribute特性

    知识需要不断积累.总结和沉淀,思考和写作是成长的催化剂 内容目录 一.概述二.反射1.反射使用2.创建对象3.调用方法4.字段属性三.特性四.总结 一.概述 反射其实无处不在,我们用VS进行调试时候, ...

  9. 2.1实现简单基础的vector

    2.1实现简单基础的vector 1.设计API 我们参考下C++ <std> 库中的vector, vector中的api很多,所以我们把里面用的频率很高的函数实现; 1.1 new&a ...

  10. Python3字符串常见方法

    目录 字符串的进阶使用 格式化输出字符串 当然除了上述方法外,还可以你使用format方法 format方法第二种用法: Python字符串与二进制的转换 字母大写 计字符a出现的次数 输出50个字符 ...