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 {
List
getUserList(); //跟据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(Map
map);

2、编写sql语句的时候,需要传递参数类型,参数类型为map

3、在使用方法的时候,Map的 key 为 sql中取的值即可,没有顺序要求!

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

总结:如果参数过多,我们可以考虑直接使用Map实现,如果参数比较少,直接传递参数即可

在这里插入图片描述模糊查询

List
getUserLike(String value);
@Test    public void getUserLike(){
SqlSession sqlSession = Utils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); List
userLike = mapper.getUserLike("%李%"); for (User user : userLike) {
System.out.println(user); } }

转载地址:https://blog.csdn.net/answero/article/details/106772935 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Mybatis配置解析-03
下一篇:MyBatis-01第一个MyBatis程序

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月18日 02时49分44秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

大数据_MapperReduce_协处理器_类似Mysql的触发器---Hbase工作笔记0024 2019-04-26
大数据_MapperReduce_Hbase的优化_存数据_自动计算分区号 & 自动计算分区键---Hbase工作笔记0027 2019-04-26
大数据_MapperReduce_Hbase的优化_RowKey设计原则---Hbase工作笔记0028 2019-04-26
大数据_MapperReduce_Hbase的优化和Hbase相关面试题_以及hbase的javaapi的一部分源码---Hbase工作笔记0029 2019-04-26
大数据_MapperReduce_Hbase配置参数说明_以及部分源码说明---Hbase工作笔记0031 2019-04-26
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
ES6-ES11新特性_ECMAScript_简单介绍---JavaScript_ECMAScript工作笔记001 2019-04-26
ES6-ES11新特性_ECMAScript相关名词介绍_---JavaScript_ECMAScript工作笔记002 2019-04-26
ES6新特性_let变量声明以及声明特性---JavaScript_ECMAScript_ES6-ES11新特性工作笔记003 2019-04-26
Sharding-Sphere,Sharding-JDBC_介绍_Sharding-Sphere,Sharding-JDBC分布式_分库分表工作笔记001 2019-04-26
Sharding-Sphere,Sharding-JDBC_分库分表介绍_Sharding-Sphere,Sharding-JDBC分布式_分库分表工作笔记002 2019-04-26