002-SSM三大框架(二)—— 基于Maven工程搭建 MyBatis 开发环境


一、MyBatis简介


一、什么是MyBatis

  MyBatis 本是 apache 的一个开源项目 iBatis, 2010 年这个项目由 apache software foundation 迁移到了 google code,并且改名为 MyBatis 。

  MyBatis是一个基于 Java 的持久层框架,是一个sql映射框架,提供的数据库的操作能力。在一个项目中搭建一次之后,我们对于数据库的操作就可以集中到sql编写上,不必去关心 Connection,Statement,ResultSet 等对象的创建,销毁、sql语句的执行、 sql语句执行结果的转换等问题。



二、MyBatis的搭建



一、 使用 Maven 创建 web 工程

  1. 创建 web 工程,可参考我之前的一篇博客链接: 004-IDEA 中基于 Maven 创建 web 工程.

  2. 加入 maven 坐标


 <!--mybatis依赖-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.1</version>
    </dependency>
    
<!--mysql驱动-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.9</version>
    </dependency>
  1. 加入 maven 插件
<build>
    <resources>
      <resource>
        <directory>src/main/java</directory><!--所在的目录-->
        <includes><!--包括目录下的.properties,.xml 文件都会扫描到-->
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <filtering>false</filtering>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
</build>

二、编写实体类

  创建包 com.domain, 包中创建 User 类,为了提高代码可读性,这里实体类的类名推荐和表名一样,类中定义属性的属性名和所要操作的数据库表列名一样。

package com.domain;

public class User {

	// 属性名和表的列名一样
    private Integer userId;
    private String  userName;
    private String  password;
    private String  sex;
    private String  email;
    
    //记得补上构造方法和set ,get , toString等方法
}

三、编写 Dao 接口 UserDao

  创建 com.dao 包,创建 UserDao 接口

package com.dao;
import com.domain.User;

//接口操作User表
public interface UserDao {

	//可以根据你要操作表的方式定义不同的方法,例如
	//根据 id 查询信息
    User getByID(Integer id);

}

四、编写 Dao 接口 Mapper 映射文件 UserDao.xml

  1. 在 dao 包中创建文件 UserDao.xml;
  2. UserDao.xml 文件名称和接口 UserDao 一样,区分大小写的一样。
<?xml version="1.0" encoding="UTF-8" ?>
<!--指定约束文件,起到限制作用,检查在当前文件中出现的标签,属性必须符合mybatis的要求。-->
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
        
<!--mapper 是当前文件的根标签,必须的。
    namespace:叫做命名空间,唯一值的, 可以是自定义的字符串,但是为了配合使用动态代理创建对象,需使用dao接口的全限定名称。-->
<mapper namespace="com.dao.UserDao">
    <!--
       select:表示查询操作。
       id: 执行的sql语法的唯一标识, mybatis会使用这个id的值来找到要执行的sql语句,可以自定义,但是但是为了配合使用动态代理创建对象,需使用使用接口中的方法名称。
       parameterType:表示参数类型
       resultType:表示结果类型的, 是sql语句执行后得到ResultSet,遍历这个ResultSet得到java对象的类型,其值写的类型的全限定名称-->
    <select id="getByID" parameterType="java.lang.Integer" resultType="com.domain.User">
        select * from users where userId = #{id}
    </select>

    <!--插入操作-->
    <insert id=""></insert>
    
	<!--更新操作-->
    <update id=""></update>

	<!--删除操作-->
    <delete id=""></delete>
</mapper>


五、创建 MyBatis 主配置文件

  在目录 src/main/ resources ,创建主配置文件:名称为 mybatis.xml (主配置文件名称是自定义的) 内容如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!--
   mybatis的主配置文件: 主要定义了数据库的配置信息, sql映射文件的位置
-->
<!--指定约束文件,起到限制作用,检查在当前文件中出现的标签,属性必须符合mybatis的要求。-->
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<!--configuration 是当前文件的根标签。-->
<configuration>

    <!--settings:控制mybatis全局行为-->
    <settings>
        <!--设置mybatis输出日志-->
        <setting name="logImpl" value="STDOUT_LOGGING" />
    </settings>

    <!--环境配置: 数据库的连接信息
        default:必须和下面某个environment的id值一样。告诉mybatis使用哪个数据库的连接信息。也就是访问哪个数据库
    -->
    <environments default="mysql">
        <!-- environment : 一个数据库信息的配置
             id:一个唯一值,自定义,表示环境的名称。
        -->
        <environment id="mysql">
            <!--
               transactionManager :mybatis的事务类型
                   type: JDBC(表示使用jdbc中的Connection对象的commit,rollback做事务处理)
            -->
            <transactionManager type="JDBC"/>
            <!--
               dataSource:表示数据源,连接数据库的
               type:表示数据源的类型, POOLED表示使用连接池
            -->
            <dataSource type="POOLED">
                <!--
                   driver, user, username, password 是固定的,不能自定义。
                -->
                <!--数据库的驱动类名-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <!--连接数据库的url字符串-->
                <property name="url" value="jdbc:mysql://localhost:3306/exmp"/>
                <!--访问数据库的用户名-->
                <property name="username" value="root"/>
                <!--密码-->
                <property name="password" value="123"/>
            </dataSource>
        </environment>
    </environments>

    <!-- sql mapper(sql映射文件)的位置-->
    <mappers>
        <!--一个mapper标签指定一个映射文件的位置。-->
        <mapper resource="com/dao/UserDao.xml"/>
    </mappers>
</configuration>


六、创建测试类 Test

  创建测试文件并且执行,如下:

package com.test;


import java.io.IOException;
import java.io.InputStream;

import com.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class test {
    public static void main(String[] args) {
        //1.mybatis 主配置文件
        String config = "mybatis.xml";
        //2. 读取配置文件
        InputStream in = null;
        try {
            in = Resources.getResourceAsStream(config);
            //3. 创建 SqlSessionFactory 对象,获取 Sql Session
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
            //4. 获取 SqlSession,SqlSession 能执行 sql 语句
            SqlSession session = factory.openSession();
            //5. 基于动态代理: 使用SqlSession.getMapper(dao接口.class) 获取这个dao接口的对象,并且执行对应的方法
             UserDao dao = session.getMapper(UserDao.class);
            User studentList = dao.getByID(5);
            //6. 循环输出查询结果
            System.out.println(studentList);
            //7. 关闭 SqlSession ,释放资源
            session.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}




相关链接:

链接: 004-IDEA 中基于 Maven 创建 web 工程.
链接: 001-SSM三大框架(一)—— 三层架构.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值