前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【SSM_08】Mybatis-配置

【SSM_08】Mybatis-配置

作者头像
用户8250147
发布2021-02-04 10:50:02
3900
发布2021-02-04 10:50:02
举报
文章被收录于专栏:黑马黑马

一、Mybatis概述

1. 简介

mybatis是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。mybatis通过xml或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句。最后mybatis框架执行sql并将结果映射为java对象并返回。 采用ORM思想解决了实体和数据库映射的问题,对jdbc 进行了封装,屏蔽了jdbc api 底层访问细节,使我们不用与jdbc api 打交道,就可以完成对数据库的持久化操作。

2. 配置
代码语言:javascript
复制
① 核心配置文件【mybatisConfig.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>
    <!-- 加载配置文件 -->
    <properties resource="jdbc.properties" />

    <!-- 别名 -->
    <typeAliases>
        <!-- 单个类起别名 -->
        <typeAlias type="com.softwareMan.domain.User" alias="user" />

        <!-- 整个包内起别名 -->
        <package name="com.softwareMan.domain"/>
    </typeAliases>

    <!-- 开发环境 -->
    <environments default="first">
        <environment id="first">
            <!-- 事务 -->
            <transactionManager type="JDBC" />
            <!-- 数据源 -->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.dirveClass}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 加载映射文件 -->
    <mappers>
        <!-- 配单个(基于 XML) -->
        <mapper resource="mapper/userMapper.xml" />

        <!-- 配单个(基于注解) -->
        <mapper class="com.softwareMan.dao.UserDao" />

        <!-- 
            配多个 

            ## 注意
            - 使用此种方式时,接口与映射文件需再同一路径下
            - IDEA 在使用这种方式时,若将映射文件写道 java 文件夹内时,IDEA 不会获取静态资源
            【pom加如下配置使其能够获取静态资源】
            <build>
                <resources>
                    <resource>
                    <directory>src/main/java</directory>
                    <includes>
                        <include>**/*.xml</include>
                    </includes>
                    </resource>
                </resources>
            </build>
        -->
        <package name="com.softwareMan.dao"/>
    </mappers>
</configuration>
    
---------------------------------------------------------------------------------------------------------------

② 映射文件【daomapper.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="userMapper">
    <!-- 
        id 为唯一标识
        parameterType、resultType参数与结果集需要配全限定名(或别名【常用数据类型Mybatis底层已有别名】) 

        ## 注意    
        此数 标签名 见名知意,可以混用【不推荐】
    -->
    <select id="findByUserId" parameterType="int" resultType="com.softwareMan.domain.User">
        <!-- sql 语句 #{} 为占位符,内填类的属性名,为单一值时可任意 -->
        select * from user where id = #{value}
    </select>
</mapper>
        

----------------------------------------------------------------------------------------------------------------

③ 执行【Test.java】
public static void main(String[] args) throws IOException {
    //加载核心配置文件
    InputStream rs = Resources.getResourceAsStream("mybatisConfig.xml");
    //创建 session 工厂对象
    SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(rs);
    /*
        获取 sqlSession 会话对象
        * openSession():执行增删改时需要手工提交事务
        提交事务方法:sqlSession.commit();

        * openSession(boolean):为 true 时,自动提交事务
    */
    SqlSession sqlSession = factory.openSession();

    /*
        普通方式执行 sql

        此处增删改方法可以混用
        原因:方法分为两类,增删改底层调用同一种方法
        - update : 增、删、改
        - select : 查
    */
    List<User> list = sqlSession.selectList("userMapper.find");

    /*
        使用接口代理对象执行

        注意:
        映射文件 命名空间 为接口的全限定名
        映射文件 id 为接口方法名
    */
    UserDao mapper = sqlSession.getMapper(UserDao.class);
    List<User> list = mapper.findAll();

    //打印结果集
    System.out.println(list);
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Mybatis概述
    • 1. 简介
      • 2. 配置
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档