初入MyBatis,配置与使用

kevincheung 2020-06-14

一.下载MyBatis

github项目地址:https://github.com/mybatis/mybatis-3/releases

二.将MySql驱动和MyBatis的jar包放到项目的buildpath中

初入MyBatis,配置与使用

 三.在src根目录下新建mybatis-config.xml,用于配置数据库连接和映射文件

初入MyBatis,配置与使用

 配置文件设置

<?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>
    <!-- 加载类路径下的属性文件(JDBC加载数据库driver,url,username,password的字段封装) -->
    <!--properties resource="db.properties"/-->

    <!--此处设置Java POJO类型别名-->
    <typeAliases>
        <!--1.单独设置某个类型的别名-->
        <!--<typeAlias type="com.woniuxy.mall.entity.Category" alias="Category"/>-->
        <!--2.将package中的所有类,都以简单类名作为别名-->
        <package name="com.woniu.mall.entity"/>
    </typeAliases>
    <!-- 设置一个默认的连接环境信息 -->
    <environments default="development">
        <!-- 连接环境信息,取一个任意唯一的名字 -->
        <environment id="development">
            <!-- mybatis使用jdbc事务管理方式 -->
            <transactionManager type="JDBC" />
            <!-- mybatis使用连接池方式来获取连接 -->
            <dataSource type="POOLED">
                <!-- 配置与数据库交互的4个必要属性 -->
                <!--1.若存在属性文件字段(例:jdbc.driver=com.mysql.cj.jdbc.Driver)则使用${mysql.*}方式读取-->
                <!--property name="driver" value="${mysql.driver}"/-->
                <!--2.若不存在属性文件,则手动填写数据库连接相应信息(driver,url,username,password)-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver" />
                <property name="url"    value="jdbc:mysql://localhost:3310/woniumall?useSSL=false&amp;serverTimezone=UTC" />
                <property name="username" value="root" />
                <property name="password" value="123456" />
            </dataSource>
        </environment>
    </environments>
    <!-- 加载映射文件-->
    <mappers>
        <mapper resource="com/woniu/mall/dao/CategoryMapper.xml" />
        <mapper resource="com/woniu/mall/dao/UserMapper.xml" />
        <mapper resource="com/woniu/mall/dao/RecAddressMapper.xml" />
        <mapper resource="com/woniu/mall/dao/GoodsMapper.xml"/>
        <mapper resource="com/woniu/mall/dao/CartMapper.xml"/>
        <mapper resource="com/woniu/mall/dao/OrderMapper.xml"/>
        <mapper resource="com/woniu/mall/dao/OrderDetilsMapper.xml"/>
    </mappers>
</configuration>

三.在实体类entity包新建POJO, 属性与关系数据库中的列对应

初入MyBatis,配置与使用

 四.在数据访问层 DAO(Data Access Object),dao包中新建接口XxxDAO,里面声明若干的抽象方法

初入MyBatis,配置与使用

 五.为每一个在同一个包中新建一个_ _Mapper.xml的映射文件,其中配置就是DAO中的方法,映射关系

   初入MyBatis,配置与使用

映射文件配置:

<?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">
<!-- mapper 为根元素节点, 一个namespace对应一个dao -->
<mapper namespace="com.woniu.mall.dao.CartDAO">
    <!-- id字段必填对应接口中抽象方法名-->
    <!-- parameterType (可选配置, 默认为mybatis自动选择处理)
        将要传入语句的参数的完全限定类名或别名, 如果不配置,mybatis会通过ParameterHandler 根据参数类型默认选择合适的typeHandler进行处理
        parameterType 主要指定参数类型,可以是int, short, long, string等类型(简单类型),也可以是复杂类型(如对象) -->
    <!--此处的别名已在config文件中将实体类全部包扩,将com.*.entity前缀简化-->
    <insert id="add" parameterType="Cart">
        insert into mall_cart(userid,goodsid,goodsnum,goodsprice,date)
        values(#{userId},#{goodsId},#{goodsNum},#{goodsPrice},#{date})
    </insert>
</mapper>

六.将映射文件配置到config文件中

<!-- 加载映射文件-->
    <mappers>
        <mapper resource="com/woniu/mall/dao/CategoryMapper.xml" />
        <mapper resource="com/woniu/mall/dao/UserMapper.xml" />
    </mappers>

七.写入数据测试

@Test
    public void testAdd() {
     //读取mybatis-config.xml文件
        String resource = "mybatis-config.xml";
        InputStream inputStream = null;
        try {
            inputStream = Resources.getResourceAsStream(resource);
        } catch (IOException e) {
            e.printStackTrace();
        }
     //初始化mybatis,创建SqlSessionFactory类的实例
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
     //创建一个session实例
        SqlSession session = sqlSessionFactory.openSession(); // 类似Connection
     //使用session.getMapper(**DAO.class)创建对应的DAO实例
        CategoryDAO dao = session.getMapper(CategoryDAO.class); // 会根据接口产生一个实现(动态代理)
        Category category = new Category();
        category.setName("生活");
        category.setStatus("1");
     //调用DAO接口中对应的抽象方法,实现数据的增删改查
        dao.add(category);
     //事务提交
        session.commit();   //提交,MyBatis默认不会提交事务

    }

相关推荐