当前位置: 首页 > news >正文

Mybatis---增删改查

目录

一、添加用户

(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 mapperPUBLIC "-//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)测试方法

@Testpublic 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 mapperPUBLIC "-//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)测试方法

@Testpublic 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 mapperPUBLIC "-//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)测试方法

@Testpublic 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 mapperPUBLIC "-//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)测试方法

 @Testpublic 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)测试方法

@Testpublic 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 mapperPUBLIC "-//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,a2select *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

 

http://www.lryc.cn/news/163757.html

相关文章:

  • 开机性能-如何抓取开机systrace
  • VBA技术资料MF54:VBA_EXCEL实时获取鼠标位置
  • 模电课程设计
  • 【2023研电赛】兆易创新命题三等奖: 低成本单母线电流永磁同步无感驱动器
  • 原生Js 提取视频中的音频
  • 设计模式-备忘录模式(Memento Pattern)
  • PHP对接阿里云虚拟号的实现(号码隐私保护)
  • 刷新单年发射纪录:SpaceX成功发射62次猎鹰9号火箭
  • 项目打包docker镜像 | 上传nexus | jenkins一键构建
  • ios 运行ipa包 日志查看方式
  • AUTOSARCAN-Tp协议
  • 【设计模式】组合模式实现部门树实践
  • 恒林家居引入纷享销客CRM系统,领跑家居行业营销数字化进程
  • 多线程-锁的种类
  • Hive 和 HDFS、MySQL 之间的关系
  • 【面试题】如何实现数组去重的?有几种方式?
  • 使用TCP方式拉取Canal数据
  • Docker安装mysql实战说明
  • 前端DOM操作精解:基础概念、方法与最佳实践
  • python sorted函数详解2023.9.11
  • Spring Reactive:响应式编程与WebFlux的深度探索
  • Qt应用开发(基础篇)——工具按钮类 QToolButton
  • 【数据结构面试题】栈与队列的相互实现
  • 华为认证和红帽认证哪个比较好考呢
  • [Java]_[中级]_[使用okhttp3和HttpClient代理访问外部网络]
  • ubuntu 20.04 docker 安装 mysql
  • C++在C语言基础上的优化
  • 分享一个python实验室设备预约管理系统 实验室设备维修系统源码 lw 调试
  • 兵者多诡(HCTF2016)
  • 【JAVA-Day04】Java关键字和示例:深入了解常用关键字的用法