Mybatis

Posted zhouchangyang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis相关的知识,希望对你有一定的参考价值。

技术图片

 

一.MyBatis简介.

    MyBatis是一个支持普通SQL查询存储过程高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

 

二.MyBatis快速入门.

  1.在mevn库导入mybatis包和mysql

 <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.1</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>6.0.6</version>
    </dependency>

2.创建resources文件并标记为资源文件,在该文件夹下创建mybatis的配置文件(mybatis-config.xml).

  XML 配置文件中包含了对 MyBatis 系统的核心设置,包含获取数据库连接实例的数据源(DataSource)和决定事务作用域和控制方式的事务管理器(TransactionManager)。

<?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 default="dev">
        <environment id="dev">
            <!--配置事务管理器-->
            <transactionManager type="JDBC"/>
            <!--配置数据源的类型为链接池类型-->
            <dataSource type="POOLED">
                <!--配置数据库-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/zcy?serverTimezone=Asia/Shanghai"/>
                <property name="username" value="root"/>
                <property name="password" value="357159"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

 

3.加载mybatis配置文件.

从 SqlSessionFactory 中获取 SqlSession,SqlSession 完全包含了面向数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 对象来直接执行已映射的 SQL 语句
public void init() throws IOException {

        //读取成输入流,注意为ibatis.io包下的
        InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(in);
        SqlSession session = sessionFactory.openSession();
}

4.创建一个接口,.通过这个接口连接数据库查询.

package com.lanou.demo.mapper;
import com.lanou.demo.bean.OrderBean;
import java.util.List;

public interface OrderMapper {
    
    //查询所有
    List<OrderBean> findAll();
    List<OrderBean> findDetails();
}

5.创建mapper的xml配置文件,这个文件相当于实现了上面接口的类,用来写sql语句.

<?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">

<!--命名空间,当前的mapping文件的唯一标识-->
<!--namespace指明这是实现的接口的路径--> <mapper namespace="com.lanou.demo.mapper.OrderMapper"> <!--这里写映射和sql语句-->

<!--映射:
映射表示查询返回的结果对应的实体类
id:该映射的id
type:这个映射对应的实体类
-->
<resultMap id="userWithOrdersMap" type="userBean">
<!--这个id表示查询结果的id列数据,result表示其他列的数据
column:查询结果id列的列名,property:映射的实体类的属性名
-->

<id column="user_id" property="userId"/>
<result column="username" property="username"/>
</resultMap>

<!--sql语句-->
<!--id是对应接口中的方法  resultMap是映射的id,表示该sql语句对应哪个映射-->
<select id="findAll" resultMap="orderWithUserMap">
select order_id,order_code,user_id,
us.user_id ,us.username
from tb_order
</select>
</mapper>

6.在mybatis-config.xml配置文件中引入mapper的配置文件.把下面代码添加到mybatis配置文件的<configuration>标签里

   <!--引入所有的xml文件-->
<mappers> <!--引入方式--> <!-- <mapperclass="com.lanou.demo.mapper.UserRepository"/>--> <!-- <mapperresource="com/lanou/demo/mapper/UserRepository.xml"/> --> <!--批量引入Mapper文件--> <package name="com.lanou.demo.mapper"/> </mappers>

7.通过 SqlSession 实例来直接执行已映射的 SQL 语句,通过接口得到一个接口的实例

public void init() throws IOException {

        //读取成输入流,注意为ibatis.io包下的
        InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(in);
        //从 SqlSessionFactory 中获取 SqlSession,
        // SqlSession 完全包含了面向数据库执行 SQL 命令所需的所有方法。
        SqlSession session = sessionFactory.openSession(); // 通过 SqlSession 实例来直接执行已映射的 SQL 语句 
//通过接口得到一个接口的引用
OrderMapper orderMapper = session.getMapper(OrderMapper.class);
//调用口中的方法去xml文件中找到对应的sql语句
List
<OrderBean> all = orderMapper.findAll(); }

 

以上是关于Mybatis的主要内容,如果未能解决你的问题,请参考以下文章

SSM-MyBatis-05:Mybatis中别名,sql片段和模糊查询加getMapper

mybatis动态sql片段与分页,排序,传参的使用

MyBatis动态SQL标签用法

MYBATIS05_ifwherechoosewhentrimsetforEach标签sql片段

mybatis动态sql之利用sql标签抽取可重用的sql片段

[mybatis]动态sql_sql_抽取可重用的sql片段