Mybatis---增删改查

2023-11-18

目录

一、添加用户

(1)持久层接口方法

(2)映射文件

(3)测试方法

二、修改用户

(1)持久层接口方法

(2)映射文件

(3)测试方法

三、删除用户

(1)持久层接口方法

(2)映射文件

(3)测试方法

四、查询用户

(1)持久层接口方法

(2)映射文件

(3)测试方法

五、模糊查询

(1)持久层接口方法

(2)映射文件

(3)测试方法

 六、分页查询

(1)持久层接口方法

(2)映射文件

(3)测试方法

七、映射文件注意点


一、添加用户

(1)持久层接口方法

public interface UserMapper {
    //增加用户
    void add(User user);
}

(2)映射文件

<?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="com.gq.mapper.UserMapper">
    <!-- 增加用户-->
    <insert id="add" parameterType="com.gq.pojo.User">
        insert into user(username,sex,address) values(#{username},#{sex},#{address})
    </insert>
</mapper>

(3)测试方法

@Test
    public void addTest() throws Exception {
        InputStream is=Resources.getResourceAsStream("SqlMapConfig.xml");
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();
        SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(is);
        SqlSession session=sqlSessionFactory.openSession();
        UserMapper userMapper=session.getMapper(UserMapper.class);
        User user=new User("大明","女","合肥");
        userMapper.add(user);
        session.commit();
        session.close();
        is.close();
   }

二、修改用户

(1)持久层接口方法

public interface UserMapper {
 
    //更新用户
    void update(User user);
}

(2)映射文件

<?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="com.gq.mapper.UserMapper">
    <!-- 更新用户-->
    <update id="update" parameterType="com.gq.pojo.User">
        update user set username=#{username},sex=#{sex},address=#{address} where id=#{id}
    </update>
</mapper>

(3)测试方法

@Test
    public void updateTest() throws Exception{
        InputStream is=Resources.getResourceAsStream("SqlMapConfig.xml");
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();
        SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(is);
        SqlSession session=sqlSessionFactory.openSession();
        UserMapper userMapper=session.getMapper(UserMapper.class);
        User user=new User(7,"唐三","男","北京");
        userMapper.update(user);
        session.commit();
        session.close();
        is.close();
   }

三、删除用户

(1)持久层接口方法

public interface UserMapper {

    //删除用户
    void delete(int userid);
}

(2)映射文件

<?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="com.gq.mapper.UserMapper">
  
    <!--根据id删除用户-->
    <delete id="delete" parameterType="int">
        delete from user where id=#{userid}
    </delete>
</mapper>

(3)测试方法

@Test
    public void deleteTest() throws Exception{
        InputStream is=Resources.getResourceAsStream("SqlMapConfig.xml");
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();
        SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(is);
        SqlSession session=sqlSessionFactory.openSession();
        UserMapper userMapper=session.getMapper(UserMapper.class);
        userMapper.delete(7);
        session.commit();
        session.close();
        is.close();
    }

四、查询用户

(1)持久层接口方法

public interface UserMapper {
    //根据id查询用户
    User findById(int userid);
}

(2)映射文件

<?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="com.gq.mapper.UserMapper">
   
    <!--根据id查询用户 -->
    <select id="findById" parameterType="int" resultType="com.gq.pojo.User">
        select *from user where id=#{userid}
    </select>
</mapper>

(3)测试方法

 @Test
    public void selectByidTest() throws Exception{
        InputStream is=Resources.getResourceAsStream("SqlMapConfig.xml");
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();
        SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(is);
        SqlSession session=sqlSessionFactory.openSession();
        UserMapper userMapper=session.getMapper(UserMapper.class);
        User user=userMapper.findById(3);
        System.out.println("-------------_______---------------");
        System.out.println("username="+user.getUsername()+" address="+user.getAddress()+" sex="+user.getSex());
        session.commit();
        session.close();
        is.close();
    }

五、模糊查询

(1)持久层接口方法

  List<User> findByNameLike(String username);

(2)映射文件

 <select id="findByNameLike" parameterType="string" resultType="com.gq.pojo.User">
        select *from user where username like #{username}
    </select>

 

(3)测试方法

@Test
    public void findNameLikeTest() throws Exception{
        InputStream is=Resources.getResourceAsStream("SqlMapConfig.xml");
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();
        SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(is);
        SqlSession session=sqlSessionFactory.openSession();
        UserMapper userMapper=session.getMapper(UserMapper.class);
        List<User> userList=userMapper.findByNameLike("%北京%");
       for(User user:userList){
           System.out.println(user.toString());
       }
        session.commit();
        session.close();
        is.close();
    }

 六、分页查询

(1)持久层接口方法

 

 List<User> findPage(@Param("a1") int start, @Param("a2") int size);

对于这里的@Param注解,解释如下:

它可以定义参数名称,让我们在映射文件直接使用名称即可,如果没有他的话,分页查询传递的则为arg0,arg1....或者是param1,param2......并且这两个是死的,不能改

(2)映射文件

 

<?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="com.gq.mapper.UserMapper">
 
    <!-- 分页查询-->
    <select id="findPage" resultType="com.gq.pojo.User">
//因为这里我们前面已经使用@Param注解定义过名字了,不然不可以使用a1,a2
        select *from user limit #{a1},#{a2}
    </select>
</mapper>

(3)测试方法

    public void findPageTest() throws Exception{
        InputStream is=Resources.getResourceAsStream("SqlMapConfig.xml");
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();
        SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(is);
        SqlSession session=sqlSessionFactory.openSession();
        UserMapper userMapper=session.getMapper(UserMapper.class);
        List<User> userList=userMapper.findPage(0,2);
        userList.forEach(System.out::println);
        session.commit();
        session.close();
        is.close();
    }

七、映射文件注意点

对于映射文件中的一些如parameterType等等,具体解释如下。

parameterType:表示参数类型

resultType:表示返回值的类型

对于parameterType,假如是字符串类型,我们将他的值写为string,而不是java.lang.String,为什么呢?

参数/返回值类型为基本数据类型/包装类/String等类型我们可以写全类名也可以写别名

数据类型      别名
byte          _byte
long         _long
short        _short
int         _int
int         _integer
double      _double
float       _float
boolean     _boolean
String      string
Byte        byte
Long        long
Short       short
Integer     int/integer
Double      double
Float       float
Boolean     boolean
Date        date
BigDecimal  decimal/bigdecimal
Object      object
Map         map
HashMap     hashmap
List        list
ArrayList   arraylist
Collection  collection
Iterator    iterator

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mybatis---增删改查 的相关文章

  • 如何在 Openfire 中使用 smack

    你好 我计划开发一个可以连接到 gtalk facebook 等的聊天客户端 我决定将 smack API 与 openfire 一起使用 但我需要很少的指导来了解如何将它与 openfire 服务器一起使用 openfire 是否提供了基
  • 如何强制jar使用(或jar运行的jvm)utf-8而不是系统的默认编码

    我的Windows默认编码是GBK 而我的Eclipse完全是utf 8编码 因此 在我的 Eclipse 中运行良好的应用程序崩溃了 因为导出为 jar 文件时这些单词变得不可读 我必须在 bat 文件中写入以下行才能运行该应用程序 st
  • 删除优先级队列的尾部元素

    如何删除优先级队列的尾部元素 我正在尝试使用优先级队列实现波束搜索 一旦优先级队列已满 我想删除最后一个元素 优先级最低的元素 Thanks 没有简单的方法 将元素从原始元素复制到新元素 最后一个除外 PriorityQueue remov
  • 您建议使用哪种压缩(GZIP 是最流行的)servlet 过滤器?

    我正在寻找一个用于大容量网络应用程序的 GZIP servlet 过滤器 我不想使用容器特定的选项 要求 能够压缩响应负载 XML Faster 已在大批量应用的生产中得到验证 应适当设置适当内容编码 跨容器移植 可选择解压缩请求 谢谢 我
  • Android 中 localTime 和 localDate 的替代类有哪些? [复制]

    这个问题在这里已经有答案了 我想使用从 android API 获得的长值 该值将日期返回为长值 表示为自纪元以来的毫秒数 我需要使用像 isBefore plusDays isAfter 这样的方法 Cursor managedCurso
  • Eclipse - 安装新的 JRE (Java SE 8 1.8.0)

    我正在尝试安装 Java 8 到目前为止我所做的 安装最新版本的 Eclipse 下载并安装 Java SE 运行时环境 8http www oracle com technetwork java javase downloads jre8
  • 如何删除日期对象的亚秒部分

    当 SQL 数据类型为时间戳时 java util Date 存储为 2010 09 03 15 33 22 246 如何在存储记录之前将亚秒设置为零 例如 在本例中为 246 最简单的方法是这样的 long time date getTi
  • 寻找局部最小值

    下面的代码正确地找到了数组的局部最大值 但未能找到局部最小值 我已经进行了网络搜索 以找到找到最小值的最佳方法 并且根据这些搜索 我认为我正在使用下面的正确方法 但是 在几天的时间里多次检查每一行之后 下面的代码中有一些我仍然没有看到的错误
  • 如何通过 Android 按钮单击运行单独的应用程序

    我尝试在 Android 应用程序中添加两个按钮 以从单独的两个应用程序订单系统和库存系统中选择一个应用程序 如图所示 我已将这两个应用程序实现为两个单独的 Android 项目 当我尝试运行此应用程序时 它会出现直到正确选择窗口 但是当按
  • Java - 从 XML 文件读取注释

    我必须从 XML 文件中提取注释 我找不到使用 JDOM 或其他东西来让它们使用的方法 目前我使用 Regex 和 FileReader 但我不认为这是正确的方法 您可以使用 JDOM 之类的东西从 XML 文件中获取注释吗 或者它仅限于元
  • IntelliJ 组织导入

    IntelliJ 是否具有类似于 Eclipse 中的组织导入功能 我拥有的是一个 Java 文件 其中多个类缺少导入 例子 package com test public class Foo public Map map public J
  • Lombok @Builder 不创建不可变对象?

    在很多网站上 我看到 lombok Builder 可以用来创建不可变的对象 https www baeldung com lombok builder singular https www baeldung com lombok buil
  • 使用Java绘制维恩图

    我正在尝试根据给定的布尔方程绘制维恩图 例如 a AND b AND c我想在 Android 手机上执行此操作 因此我需要找到一种使用 Java 来执行此操作的方法 我找到了一个完美的小部件 它可以完成我在这方面寻找的一切布尔代数计算器
  • 如何从 Spring Boot 中排除依赖项

    我正在使用 Spring Boot 以下是我的 gradle 文件 buildscript ext springBootVersion 2 0 0 BUILD SNAPSHOT repositories mavenCentral maven
  • 如何处理 StaleElementReferenceException

    我正在为鼠标悬停工作 我想通过使用 for 循环单击每个链接来测试所有链接的工作条件 在我的程序中 迭代进行一次 而对于下一次迭代 它不起作用并显示 StaleElementReferenceException 如果需要 请修改代码 pub
  • 替换文件中的字符串

    我正在寻找一种方法来替换文件中的字符串而不将整个文件读入内存 通常我会使用 Reader 和 Writer 即如下所示 public static void replace String oldstring String newstring
  • 使用 Java https 上传到 Imgur v3 错误

    我目前正在尝试使用他们当前的 API v3 上传到 imgur 但是我不断收到错误 错误 javax net ssl SSLException 证书中的主机名不匹配 api imgur com imgur com OR imgur com
  • HttpClient请求设置属性问题

    我使用这个 HttpClient 库玩了一段时间 几周 我想以某种方式将属性设置为请求 不是参数而是属性 在我的 servlet 中 我想使用 Integer inte Integer request getAttribute obj 我不
  • try-with-resources 中出现死代码警告,但翻译后的 try-catch-finally 中没有出现死代码警告

    以下代码使用try 有资源 https docs oracle com javase specs jls se7 html jls 14 html jls 14 20 3Java 8 中引入的构造 偶尔抛出 方法被声明为抛出一个偶尔的异常
  • 即使调整大小,如何获得屏幕的精确中间位置

    好的 这个问题有两部分 当我做一个JFrame 并在其上画一些东西 即使我将宽度设置为 400 并使其在一个项目击中它时 当然 允许项目宽度 它会反弹回来 但由于某种原因 它总是偏离屏幕约 10 个像素 有没有办法解决这个问题 或者我只需要

随机推荐