Mybatis---增删改查

目录

一、添加用户

(1)持久层接口方法

(2)映射文件

(3)测试方法

二、修改用户

(1)持久层接口方法

(2)映射文件

(3)测试方法

三、删除用户

(1)持久层接口方法

(2)映射文件

(3)测试方法

四、查询用户

(1)持久层接口方法

(2)映射文件

(3)测试方法

五、模糊查询

(1)持久层接口方法

(2)映射文件

(3)测试方法

六、分页查询

(1)持久层接口方法

(2)映射文件

(3)测试方法

七、映射文件注意点


一、添加用户

(1)持久层接口方法

java 复制代码
public interface UserMapper {
    //增加用户
    void add(User user);
}

(2)映射文件

java 复制代码
<?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)测试方法

java 复制代码
@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)持久层接口方法

java 复制代码
public interface UserMapper {
 
    //更新用户
    void update(User user);
}

(2)映射文件

html 复制代码
<?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)测试方法

java 复制代码
@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)持久层接口方法

java 复制代码
public interface UserMapper {

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

(2)映射文件

html 复制代码
<?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)测试方法

java 复制代码
@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)持久层接口方法

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

(2)映射文件

html 复制代码
<?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)测试方法

java 复制代码
 @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)持久层接口方法

java 复制代码
  List<User> findByNameLike(String username);

(2)映射文件

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

(3)测试方法

java 复制代码
@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)持久层接口方法

java 复制代码
 List<User> findPage(@Param("a1") int start, @Param("a2") int size);

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

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

(2)映射文件

html 复制代码
<?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)测试方法

java 复制代码
    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等类型我们可以写全类名也可以写别名

java 复制代码
数据类型      别名
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
相关推荐
独断万古他化4 分钟前
【SSM开发实战:博客系统】(三)核心业务功能开发与安全加密实现
spring boot·spring·mybatis·博客系统·加密
rannn_11121 分钟前
【苍穹外卖|Day4】套餐页面开发(新增套餐、分页查询、删除套餐、修改套餐、起售停售)
java·spring boot·后端·学习
qq_124987075325 分钟前
基于JavaWeb的大学生房屋租赁系统(源码+论文+部署+安装)
java·数据库·人工智能·spring boot·计算机视觉·毕业设计·计算机毕业设计
短剑重铸之日31 分钟前
《设计模式》第十一篇:总结
java·后端·设计模式·总结
若鱼19191 小时前
SpringBoot4.0新特性-Observability让生产环境更易于观测
java·spring
觉醒大王1 小时前
强女思维:着急,是贪欲外显的相。
java·论文阅读·笔记·深度学习·学习·自然语言处理·学习方法
努力学编程呀(๑•ี_เ•ี๑)1 小时前
【在 IntelliJ IDEA 中切换项目 JDK 版本】
java·开发语言·intellij-idea
码农小卡拉1 小时前
深入解析Spring Boot文件加载顺序与加载方式
java·数据库·spring boot
向上的车轮1 小时前
为什么.NET(C#)转 Java 开发时常常在“吐槽”Java:checked exception
java·c#·.net
Dragon Wu1 小时前
Spring Security Oauth2.1 授权码模式实现前后端分离的方案
java·spring boot·后端·spring cloud·springboot·springcloud