Mybatis学习笔记(二)Mapper的配置问题

简介: Mybatis学习笔记(二)Mapper的配置问题

学到今天发现Maper主要有两种一种是mapper.xml还有一种就是mapper.interface

大多数用的都是mapper.xml来进行操作

第一种mapper.xml文件中首先要定义的就是该mapper的namespace属性,类似于id一样,就是标识他唯一,之后就可以定义其中的许多标签比如select,delete等等,

一般普通的都具有id,parameterType等属性id就是一般的标识唯一,parameterType就是标识的参数类型

但是当是select标签的时候就会有返回类型,这之后又有两种了,一种是resultType就是简单的可以直接写出来的对象,另一种就是resultMap,这种返回的其实也是一个对象,但是可以对其进行映射

第二种mapper.interface,这就是一个接口,实现起来比mapper.xml要简单一些,只需要重载该接口中的insert,delete等方法即可

接下来就是两者在conf.xml文件中的配置了,也是今天困扰我很久的一个问题

如果是interface文件,配置起来就如下:



<mappers>
         <!-- 注册UserMapper映射接口-->
         <mapper class="me.gacl.mapping.UserMapperI"/>
    </mappers>


就类似于直接写出文件

二是xml文件是,配置起来就是这样的:


<mappers>
        <!-- 注册userMapper.xml文件, 
         userMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/userMapper.xml-->
         <mapper resource="me/gacl/mapping/userMapper.xml"/>
    </mappers>


可以明显看出来配置的就像一个路径

这就是两者的配置区别

之后就是两者在实际测试方法整的不同

这里作者直接贴代码了

xml文件如下:


import java.util.List;
import org.apache.ibatis.session.SqlSession;
import me.gacl.domain.User;
import me.gacl.util.MyBatisUtil;
public class TestCRUDByXmlMapper {
  public static void testAdd()
  {
    SqlSession sqlSession=MyBatisUtil.getSqlSession(true);
    String statement="me.gacl.mapping.userMapper.addUser";
    User user=new User();
    user.setName("用户孤傲苍狼");
    user.setAge(20);
    int retResult=sqlSession.insert(statement, user);
    sqlSession.close();
    System.out.println(retResult);
  }
  public static void testUpdate()
  {
    SqlSession sqlSession=MyBatisUtil.getSqlSession(true);
    String statement="me.gacl.mapping.userMapper.updateUser";
    User user=new User();
    user.setId(3);
    user.setName("孤傲苍狼");
    user.setAge(25);
    int retResult=sqlSession.update(statement, user);
    sqlSession.close();
    System.out.println(retResult);
  }
  public static void testDelete()
  {
    SqlSession sqlSession=MyBatisUtil.getSqlSession(true);
    String statement="me.gacl.mapping.userMapper.deleteUser";
    int retResult=sqlSession.delete(statement, 5);
    sqlSession.close();
    System.out.println(retResult);
  }
  public static void testGetAll()
  {
    SqlSession sqlSession=MyBatisUtil.getSqlSession(true);;
    String statement="me.gacl.mapping.userMapper.getAllUsers";
    List<User>lstUsers=sqlSession.selectList(statement);
    sqlSession.close();
    System.out.println(lstUsers);
  }
  public static void main(String[] args) {
    testAdd();
    System.out.println("------------------------");
    testDelete();
    System.out.println("------------------------");
    testGetAll();
    System.out.println("------------------------");
    testUpdate();
  }
}


interface文件如下:


import java.util.List;
import org.apache.ibatis.session.SqlSession;
import me.gacl.domain.User;
import me.gacl.mapping.UserMapperI;
import me.gacl.util.MyBatisUtil;
public class TestCRUDByAnnotationMapper {
  public static void testAdd()
  {
    SqlSession sqlSession=MyBatisUtil.getSqlSession(true);
    UserMapperI mapper=sqlSession.getMapper(UserMapperI.class);
    User user=new User();
    user.setName("nihaohoa");
    user.setAge(20);
    int add=mapper.add(user);
    sqlSession.close();
    System.out.println(add);
  }
    public static void testUpdate(){
        SqlSession sqlSession = MyBatisUtil.getSqlSession(true);
        //得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来
        UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);
        User user = new User();
        user.setId(3);
        user.setName("孤傲苍狼_xdp");
        user.setAge(26);
        //执行修改操作
        int retResult = mapper.update(user);
        //使用SqlSession执行完SQL之后需要关闭SqlSession
        sqlSession.close();
        System.out.println(retResult);
    }
    public static void testDelete(){
        SqlSession sqlSession = MyBatisUtil.getSqlSession(true);
        //得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来
        UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);
        //执行删除操作
        int retResult = mapper.deleteById(7);
        //使用SqlSession执行完SQL之后需要关闭SqlSession
        sqlSession.close();
        System.out.println(retResult);
    }
    public static void testGetUser(){
        SqlSession sqlSession = MyBatisUtil.getSqlSession();
        //得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来
        UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);
        //执行查询操作,将查询结果自动封装成User返回
        User user = mapper.getById(8);
        //使用SqlSession执行完SQL之后需要关闭SqlSession
        sqlSession.close();
        System.out.println(user);
    }
    public static void testGetAll(){
        SqlSession sqlSession = MyBatisUtil.getSqlSession();
        //得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来
        UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);
        //执行查询操作,将查询结果自动封装成List<User>返回
        List<User> lstUsers = mapper.getAll();
        //使用SqlSession执行完SQL之后需要关闭SqlSession
        sqlSession.close();
        System.out.println(lstUsers);
    }
    public static void main(String[] args) {
    testAdd();
    System.out.println("----------------------------");
    testDelete();
    System.out.println("----------------------------");
    testGetAll();
    System.out.println("----------------------------");
    testGetUser();
    System.out.println("----------------------------");
    testUpdate();
  }
}


也是刚学,如果有错,希望指正!!



相关文章
|
1月前
|
XML Java 数据库连接
MyBatis的常见配置
MyBatis 常见配置包括数据库连接、类型别名、映射器等核心模块,合理配置可提升开发效率与系统性能。主要内容涵盖核心配置文件结构、关键配置项详解及配置优先级说明。
233 4
|
2月前
|
SQL XML Java
通过MyBatis的XML配置实现灵活的动态SQL查询
总结而言,通过MyBatis的XML配置实现灵活的动态SQL查询,可以让开发者以声明式的方式构建SQL语句,既保证了SQL操作的灵活性,又简化了代码的复杂度。这种方式可以显著提高数据库操作的效率和代码的可维护性。
217 18
|
7月前
|
Oracle 关系型数据库 Java
【YashanDB知识库】Mybatis-Plus适配崖山配置
【YashanDB知识库】Mybatis-Plus适配崖山配置
|
7月前
|
SQL Java 数据库连接
【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号";"报错
【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号";"报错
|
3月前
|
SQL XML Java
MyBatis Mapper中使用limit参数的查询问题
总结而言,MyBatis中使用 `limit`参数的查询可以高度定制并且灵活,基于方法签名和XML映射文件的组合来达成多样化的查询需求。通过参数化查询和动态SQL,MyBatis可以有效地处理各种复杂情境下的数据库操作,并且将SQL语句的维护与业务代码的编写相分离,提升代码的可维护性和可阅读性。
380 13
|
7月前
|
Java 数据库连接 微服务
微服务——MyBatis配置——事务管理
本段内容主要介绍了事务管理的两种类型:JDBC 和 MANAGED。JDBC 类型直接利用数据源连接管理事务,依赖提交和回滚机制;而 MANAGED 类型则由容器全程管理事务生命周期,例如 JEE 应用服务器上下文,默认会关闭连接,但可根据需要设置 `closeConnection` 属性为 false 阻止关闭行为。此外,提到在使用 Spring + MyBatis 时,无需额外配置事务管理器,因为 Spring 模块自带的功能可覆盖上述配置,且这两种事务管理器类型均无需设置属性。
111 0
|
7月前
|
Java 数据库连接 数据库
微服务——MyBatis配置——多环境配置
在 MyBatis 中,多环境配置允许为不同数据库创建多个 SqlSessionFactory。通过传递环境参数给 SqlSessionFactoryBuilder,可指定使用哪种环境;若忽略,则加载默认环境。`environments` 元素定义环境配置,包括默认环境 ID、事务管理器和数据源类型等。每个环境需唯一标识,确保默认环境匹配其中之一。代码示例展示了如何构建工厂及配置 XML 结构。
118 0
|
7月前
|
SQL Java 数据库连接
【YashanDB 知识库】解决 mybatis 的 mapper 文件 sql 语句结尾加分号";"报错
【YashanDB 知识库】解决 mybatis 的 mapper 文件 sql 语句结尾加分号";"报错
|
7月前
|
Java 数据库连接 数据库
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——MyBatis 介绍和配置
本文介绍了Spring Boot集成MyBatis的方法,重点讲解基于注解的方式。首先简述MyBatis作为持久层框架的特点,接着说明集成时的依赖导入,包括`mybatis-spring-boot-starter`和MySQL连接器。随后详细展示了`properties.yml`配置文件的内容,涵盖数据库连接、驼峰命名规范及Mapper文件路径等关键设置,帮助开发者快速上手Spring Boot与MyBatis的整合开发。
1000 0
|
4月前
|
Java 数据库连接 数据库
Spring boot 使用mybatis generator 自动生成代码插件
本文介绍了在Spring Boot项目中使用MyBatis Generator插件自动生成代码的详细步骤。首先创建一个新的Spring Boot项目,接着引入MyBatis Generator插件并配置`pom.xml`文件。然后删除默认的`application.properties`文件,创建`application.yml`进行相关配置,如设置Mapper路径和实体类包名。重点在于配置`generatorConfig.xml`文件,包括数据库驱动、连接信息、生成模型、映射文件及DAO的包名和位置。最后通过IDE配置运行插件生成代码,并在主类添加`@MapperScan`注解完成整合
788 1
Spring boot 使用mybatis generator 自动生成代码插件