您的位置:

MybatisElse-利用Java持久层框架管理数据库数据

一、Mybatis介绍

Mybatis是一种基于Java编程语言的开源框架,可用于实现将SQL语句与Java程序相分离。Mybatis并不包含数据源或数据库连接池,它仅负责管理SQL语句和结果集。Mybatis常用于使用传统JDBC编程时所需要完成的大量准备工作,而且使用Mybatis开发的程序具有高度的灵活性和性能。

二、Mybatis的使用

Mybatis的使用可分为以下几步:

第一步:在pom.xml文件中,添加Mybatis相应的依赖。


<dependencies>
  <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.2</version>
  </dependency>
</dependencies>

第二步:配置Mybatis的映射文件,指定每一个映射文件与其对应的Java接口。


<mapper resource="org/mybatis/example/BlogMapper.xml" />

第三步:编写Java接口,该接口中包含需要执行的SQL语句。


public interface UserMapper {
  @Select("SELECT * FROM users WHERE id = #{userId}")
  User getUser(@Param("userId") String userId);
}

第四步:编写调用Mybatis的Java程序。


String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

try (SqlSession session = sqlSessionFactory.openSession()) {
  UserMapper mapper = session.getMapper(UserMapper.class);
  User user = mapper.getUser("123");
}

三、Mybatis中的一些特性

1、mybatis-config.xml

Mybatis的配置文件mybatis-config.xml是整个框架中最重要的一个文件,它包含了Mybatis全局配置参数、类型别名和映射文件的配置信息。在实际应用中,mybatis-config.xml的作用类似于Hibernate中的hibernate.cfg.xml文件。

以下是一个简单的mybatis-config.xml文件示例:


<?xml version="1.0" encoding="UTF-8" ?>

<configuration>
  <typeAliases>
    <typeAlias type="com.example.domain.User" alias="User"/>
  </typeAliases>

  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
        <property name="username" value="mysql"/>
        <property name="password" value="mysql"/>
      </dataSource>
    </environment>
  </environments>

  <mappers>
    <mapper resource="mappers/user.xml"/>
  </mappers>
</configuration>

2、映射文件

在Mybatis中,映射文件的作用是定义了一个或多个SQL语句和结果元映射。以user.xml为例,如下:


<mapper namespace="com.example.mapper.userMapper">
  <resultMap id="userResultMap" type="com.example.domain.User">
    <result property="id" column="id"/>
    <result property="name" column="name"/>
    <result property="email" column="email"/>
    <result property="phone" column="phone"/>
  </resultMap>

  <select id="getUserById" resultMap="userResultMap" parameterType="java.lang.String">
    SELECT * FROM user WHERE id = #{id}
  </select>
</mapper>

映射文件中,定义了Namespace(命名空间)和一个或多个CRUD类型的方法等,具体可以参照Mybatis官方文档进行理解。

3、动态SQL

动态SQL是Mybatis的一个非常实用的功能,它可以让用户编写出灵活且功能强大的SQL语句。以下是一个例子:


<select id="getUserExt">
  SELECT * FROM user WHERE
  <if test="name != null">
    name = #{name},
  </if>
  <if test="phone != null">
    phone = #{phone},
  </if>
  <if test="email != null">
    email = #{email},
  </if>
</select>

如果用户调用getUserExt方法时同时提供了name和phone参数,那么生成的SQL语句如下:


SELECT * FROM user WHERE name = 'xxxx' and phone = 'xxxx';

四、Mybatis与Spring的整合

Spring是Java企业级开发中很具有代表性的开源框架,提供了全面的企业级应用程序支持,其中包括对Mybatis的支持。

Spring整合Mybatis的步骤如下:

第一步:在pom.xml文件中,添加Spring和Mybatis的依赖。

第二步:在Spring 的配置文件applicationContext.xml中,将所有属性设置好,并且将DataSource、SqlSessionFactory和MapperScannerConfigurer注册到Spring中。


<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
  <property name="driverClassName" value="${dataSource.driver}"/>
  <property name="url" value="${dataSource.url}"/>
  <property name="username" value="${dataSource.username}"/>
  <property name="password" value="${dataSource.password}"/>
  <property name="initialSize" value="${dataSource.initialSize}"/>
  <property name="maxActive" value="${dataSource.maxActive}"/>
</bean>

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="dataSource" ref="dataSource" />
  <property name="configLocation" value="classpath:mybatis-config.xml" />
</bean>

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  <property name="basePackage" value="com.example.mapper" />
</bean>

五、小结

Mybatis是一个优秀的Java持久层框架,提供了很多实用的功能。它的灵活性和高性能让它成为了Java企业级开发的首选之一。通过以上的介绍和演示,相信大家已经对如何使用Mybatis以及Mybatis与Spring的整合有了一定的了解,希望这篇文章能够对大家有所帮助。