MyBatis框架:第二章:传统mybatis的hello world 示例

简介: MyBatis框架:第二章:传统mybatis的hello world 示例

创建java Project项目,建库建表插入数据,到数据库中执行

添加mybatis的核心jar

添加mysql数据库连接驱动

添加log4j日记需要的核心jar

在config目录下添加 log4j.properties 日记配置文件

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

注意:有一点,需要说明一下。在开发的时候我们需要把日记的级别设置为DEBUG级别。这样可以查看到更多详细和有用的信息。等项目发布的时候再把日记的级别由为INFO。

创建实体类,给get,set方法,toString方法,无参改造,有参构造

public class User {
  private int id;
  private String lastName;
  private int sex;

创建UserMapper.xml配置文件

然后在Pojo对象User所在的包下,创建一个UserMapper.xml配置文件。这个配置文件用来配置对User对象所对应的表的增,删,改,查的语句。

一般这个配置文件的命名规则为:类名Mapper.xml

如果是User类,那么对应的配置文件名为UserMapper.xml

如果是Teacher类,那么对应的配置文件名为TeacherMapper.xml

UserMapper.xml代码:

<?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">
  <!-- 
    namespace属性是名称空间的意思。
    功能相当于 给配置文件定义一个包名。
    一般情况下。可以写两种值,一种是对应类的全类名
    一种情况是。对应类的处理接口全类名(后面讲)。
   -->
<mapper namespace="com.pojo.User">
  <!-- 
    select 标签用于定义一个select查询语句
    id属性,又称之为statementId
    id属性可以给select语句定义一个唯一的标识
    parameterType 属性定义参数的类型,int 表示基本的Integer类型
    resultType 属性定义返回值的数据类型
   -->
  <select id="selectUserById" parameterType="int" resultType="com.pojo.User">
    select id, last_name lastName, sex from t_user where id = #{value}
  </select>
</mapper>

在config目录创建mybatis-config.xml核心配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <!-- environments 是配置多个jdbc环境 
    default表示使用的默认环境 
   -->
  <environments default="development">
    <!-- 
      environment 标签用来配置一个环境 
        id 是环境的标识
     -->
    <environment id="development">
      <!-- 
        transactionManager  配置使用什么样类型的数据库事务管理
           type="JDBC"    表示启用事务,有commit和rollback操作
           type="MANAGED" 表示不直接控制事务。交给容器处理---几乎不用。
       -->
      <transactionManager type="JDBC" />
      <!-- 
        dataSource标签配置连接池
          type="POOLED" 表示启用数据库连接池
          type="UNPOOLED" 表示不启用数据库连接池
       -->
      <dataSource type="POOLED">
        <!-- 连接数据库的驱动类 -->
        <property name="driver" value="com.mysql.jdbc.Driver" />
        <!-- 数据库访问地址 -->
        <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
        <!-- 数据库用户名 -->
        <property name="username" value="root" />
        <!-- 数据库密码 -->
        <property name="password" value="root" />
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <!-- 导入mapper配置文件 -->
    <mapper resource="com/pojo/UserMapper.xml" />
  </mappers>
</configuration>

测试类:

public class UserTest {
  @Test
  public void test1() throws IOException {
    // 读取mybatis的核心配置文件
    InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
    // 通过SqlSessionFactoryBuilder创建一个SqlSessionFactory对象
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
    // 创建一个sqlSession对象
    SqlSession sqlSession = sqlSessionFactory.openSession();
    try {
      User user = sqlSession.selectOne("com.pojo.User.selectUserById", 1);
      System.out.println(user);
    } finally {
      sqlSession.close();
    }
  }
}

它是怎么工作的?

举例:

User user = sqlSession.selectOne(“com.pojo.User.selectUserById”, 1);

首先读取mybatis的核心配置文件

IInputStream is = Resources.getResourceAsStream("mybatis-config.xml");

在mybatis-config.xml中

<mappers>
  <!-- 导入mapper配置文件 -->
  <mapper resource="com/pojo/UserMapper.xml" />
</mappers>

找到对应的UserMapper.xml,在它里面有

<mapper namespace="com.pojo.User">

找到对应的User类

<select id="selectUserById" parameterType="int" resultType="com.pojo.User">

通过id 使用标识找到对应的selectUserById

<select id="selectUserById" parameterType="int" resultType="com.pojo.User">
  select id, last_name lastName, sex from t_user where id = #{value}
</select>

mybatis配置文件配置自动提示

mybatis-config.xml文件中将http://mybatis.org/dtd/mybatis-3-config.dtd复制然后按如下图所示操作,找到你的mybatis-3-config.dtd文件

xxxMapper.xml文件中奖http://mybatis.org/dtd/mybatis-3-mapper.dtd复制然后按如下图所示操作,找到你的mybatis-3-mapper.dtd文件

相关文章
|
15天前
|
SQL Java 数据库连接
持久层框架MyBatisPlus
持久层框架MyBatisPlus
32 1
持久层框架MyBatisPlus
|
29天前
|
缓存 Cloud Native 安全
探索阿里巴巴新型ORM框架:超越MybatisPlus?
【10月更文挑战第9天】在Java开发领域,Mybatis及其增强工具MybatisPlus长期占据着ORM(对象关系映射)技术的主导地位。然而,随着技术的发展,阿里巴巴集团推出了一种新型ORM框架,旨在提供更高效、更简洁的开发体验。本文将对这一新型ORM框架进行探索,分析其特性,并与MybatisPlus进行比较。
29 0
|
3月前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
3月前
|
Java 数据库连接 mybatis
mybatis框架图
文章介绍了MyBatis框架的起源、发展和其作为持久层框架的功能,提供了MyBatis的框架图以帮助理解其结构和组件。
mybatis框架图
|
3月前
|
Java 数据库连接 mybatis
后端框架的学习----mybatis框架(9、多对一处理和一对多处理)
这篇文章介绍了在MyBatis框架中如何处理多对一和一对多的关联查询,通过定义`<resultMap>`和使用`<association>`与`<collection>`元素来实现对象间的关联映射。
|
3月前
|
Java 数据库连接 测试技术
后端框架的学习----mybatis框架(8、lombok)
这篇文章介绍了如何在MyBatis框架中使用lombok库来简化Java实体类的编写,包括在IDEA中安装Lombok插件、在项目中导入lombok依赖以及在实体类上使用Lombok提供的注解。
|
3月前
|
SQL Java 数据库连接
【Java 第十三篇章】MyBatis 框架介绍
MyBatis 原名 iBATIS,2001 年由 Clinton Begin 创建,以其简易灵活著称。2010 年更名以重塑品牌形象。MyBatis 通过 SQL 映射文件将 SQL 语句与 Java 代码分离,支持编写原生 SQL 并与方法映射。具备对象关系映射功能,简化数据库记录处理。支持动态 SQL 构建,灵活应对不同查询条件。内置缓存机制,提升查询效率。相比全功能 ORM,MyBatis 提供更高 SQL 控制度和更好的维护性,并易于与 Spring 等框架集成,广泛应用于 Java 数据访问层。
39 0
|
3月前
|
druid Java 数据库连接
SpringBoot项目整合MybatisPlus持久层框架+Druid数据库连接池,以及实现增删改查功能
SpringBoot项目整合MybatisPlus和Druid数据库连接池,实现基本的增删改查功能。
341 0
|
3月前
|
SQL Java 数据库连接
后端框架的学习----mybatis框架(5、分页)
这篇文章介绍了如何在MyBatis框架中实现分页功能,包括使用SQL的`limit`语句进行分页和利用MyBatis的`RowBounds`对象进行分页的方法。
|
3月前
|
SQL Java 数据库连接
后端框架的学习----mybatis框架(7、使用注解开发)
这篇文章讲述了如何使用MyBatis框架的注解方式进行开发,包括在接口上使用注解定义SQL语句,并通过动态代理实现对数据库的增删改查操作,同时强调了接口需要在核心配置文件中注册绑定。
下一篇
无影云桌面