Mybatis-02 CRUD操作及配置解析
发布日期:2022-01-20 01:09:38
浏览次数:2
分类:技术文章
本文共 3944 字,大约阅读时间需要 13 分钟。
CRUD操作
namespace将上面案例中的UserMapper接口改名为 UserDao;将UserMapper.xml中的namespace改为为UserDao的路径 .再次测试
结论:
配置文件中namespace中的名称为对应Mapper接口或者Dao接口的完整包名,必须一致!
selectselect标签是mybatis中最常用的标签之一select语句有很多属性可以详细配置每一条SQL语句 SQL语句返回值类型。【完整的类名或者别名】 传入SQL语句的参数类型 。【万能的Map,可以多尝试使用】 命名空间中唯一的标识符 接口中的方法名与映射文件中的SQL语句ID 一一对应 id parameterType resultType
1、在UserMapper中添加对应方法
package com.Dao;import com.Pojo.User;import java.util.List;public interface UserMapper { ListgetUserList(); //跟据id查询 User getUserById(int id);}
2、在UserMapper.xml中添加Select语句
3、测试类中测试
@Testpublic void getUserByIdtest(){ SqlSession sqlSession = Utils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); User user = mapper.getUserById(1); System.out.println(user); sqlSession.close();}
inster
Dao接口int addUser(User user);
mapper接口
insert into mybatis.user(id,name,pwd) values (#{id},#{name},#{pwd});
测试了
public void addUser(){ SqlSession sqlSession =Utils.getSqlSession(); UserMapper mapper=sqlSession.getMapper(UserMapper.class); int i = mapper.addUser(new User(4,"哈哈","123333")); if(i>0){ System.out.println("执行成功"); } //提交事务 sqlSession.commit(); sqlSession.close();}
delete接口
//delete一个用户 int deleteUser(int id);
mapper.xml
delete from mybatis.user where id=#{id}
测试
@Test public void deleteUser(){ SqlSession sqlSession=Utils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); mapper.deleteUser(4); sqlSession.commit(); sqlSession.close(); }
UPdata
接口//updata一个用户 int upDataUser(User user);
mapper.xml
update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id};
测试类
@Test public void upDataUser(){ SqlSession sqlSession=Utils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); mapper.upDataUser(new User(4,"呵呵","4561233")); sqlSession.commit(); sqlSession.close(); }
注意点:增、删、改操作需要提交事务!
所有的增删改操作都需要提交事务!接口所有的普通参数,尽量都写上@Param参数,尤其是多个参数时,必须写上!有时候根据业务的需求,可以考虑使用map传递参数!为了规范操作,在SQL的配置文件中,我们尽量将Parameter参数和resultType都写上!
重要:空指针异常
utils mybatis 工具类package com.Utils;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;import java.io.InputStream;//sqlsessionFactory--》sqlsessionpublic class Utils { private static SqlSessionFactory sqlSessionFactory; static{ //获取SqlSessionFactory try { String resources="mybatis-config.xml"; InputStream inputStream= Resources.getResourceAsStream(resources); sqlSessionFactory= new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } // //获取SqlSession连接 public static SqlSession getSqlSession(){ return sqlSessionFactory.openSession(); }}
万能的Map使用
假设 我们的实体类,或者数据库中的表,字段或者参数过多,我们应当考虑map 在接口方法中,参数直接传递Map;User selectUserByNP2(Mapmap);
2、编写sql语句的时候,需要传递参数类型,参数类型为map
3、在使用方法的时候,Map的 key 为 sql中取的值即可,没有顺序要求!
Mapmap = new HashMap ();map.put("username","小明");map.put("pwd","123456");User user = mapper.selectUserByNP2(map);
总结:如果参数过多,我们可以考虑直接使用Map实现,如果参数比较少,直接传递参数即可
模糊查询ListgetUserLike(String value);
@Test public void getUserLike(){ SqlSession sqlSession = Utils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); ListuserLike = mapper.getUserLike("%李%"); for (User user : userLike) { System.out.println(user); } }
转载地址:https://blog.csdn.net/answero/article/details/106772935 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月18日 02时49分44秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Vue介绍---vue工作笔记0001
2019-04-26
Vue基本使用---vue工作笔记0002
2019-04-26
微信公众号介绍_以及注册订阅号---微信公众号开发工作笔记0001
2019-04-26
Vue模板语法---vue工作笔记0003
2019-04-26
Vue计算属性之基本使用---vue工作笔记0004
2019-04-26
Vue监视---vue工作笔记0005
2019-04-26
Vue条件渲染---vue工作笔记0008
2019-04-26
Vue事件处理_vue的事件处理超级方便_功能强大---vue工作笔记0011
2019-04-26
Vue表单数据自动收集---vue工作笔记0012
2019-04-26
Vue生命周期---vue工作笔记0013
2019-04-26