zoukankan      html  css  js  c++  java
  • mybatis的开发过程

    1) 新建Java工程

    2) 导入mybatis的jar包以及数据库驱动(放入工程目录下的lib文件夹中,需要Build Path)

    3) 创建数据库和表格

    4) 添加实体类和构造函数

    5) 添加mybatis的配置文件conf.xml(加载数据库驱动、连接到数据库、数据库的用户名和密码)

    *在resource文件夹下添加

    *conf.xml中是配置数据源的信息:即数据库的信息

    1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
     3 "http://mybatis.org/dtd/mybatis-3-config.dtd">
     4 <configuration>
     5     <environments default="development">
     6         <environment id="development">
     7             <transactionManager type="JDBC" />
     8             <dataSource type="POOLED">
     9                 <property name="driver" value="com.mysql.jdbc.Driver" />
    10                 <property name="url"
    11                     value="jdbc:mysql://localhost:3306/mybatis" />
    12                 <property name="username" value="root" />
    13                 <property name="password" value="root" />
    14             </dataSource>
    15         </environment>
    16     </environments>
    17 </configuration>

    6) 定义操作user表的sql映射文件userMapper.xml(以user表为例,映射文件即在实体类、表、sql语句之间映射关系)

    *在src目录下新建mapper的包,再在该包下新建userMapper.xml文件

    *id:标识该标签

    *parameterType:参数的数据类型

    *resultType:返回值的数据类型

    *mapper:即映射

    *namespace:表示命名空间,现在的目的是区分id的

    *mybatis中的占位符用#{ }

    #{id}:类似于EL表达式解析id

    <?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="com.zhiyou.clg.mapper.UserMapper">
    <select id="selectUser" parameterType="int"
    resultType="com.zhiyou.clg.bean.User">
    select * from user where id=#{id}
    </select>
    </mapper>

    7) 在conf.xml文件中注册user Mapper.xml文件(即把映射文件引入到配置文件中)

    *在mappers标签中使用mapper标签(属性:resource)

    1     <mappers>
    2         <mapper resource="com/zhiyou/clg/mapper/UserMapper.xml"/>
    3     </mappers>

    8) 进行单元测试

    //解析配置文件conf.xml

    Reader reader = Resources.getResourceAsReader(“conf.xml”);

    //获取SessionFactory对象

    SqlSessionFactory  sessionFactory = new  SqlSessionFactoryBuilder().build(reader);

    //获取Session对象。这里表示jdbc中Connection.是操作数据库的

    SqlSession session = sessionFactory.openSession();

    User user = session.selectOne("com.zhiyou.clg.mapper.userMapper.getUser", 1);

    *进行增删改的时候需要进行手动提交任务,即将数据提交到数据库中

    session.commit();

    手动提交可实现     事物管理:事物是由一系列动作组成,这些动作要么都执行,要么都不执行

     1 package com.zhiyou.clg.mapper;
     2 
     3 import static org.junit.jupiter.api.Assertions.*;
     4 
     5 import java.io.IOException;
     6 import java.io.Reader;
     7 
     8 import org.apache.ibatis.io.Resources;
     9 import org.apache.ibatis.session.SqlSession;
    10 import org.apache.ibatis.session.SqlSessionFactory;
    11 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    12 import org.junit.jupiter.api.AfterAll;
    13 import org.junit.jupiter.api.BeforeAll;
    14 import org.junit.jupiter.api.Test;
    15 
    16 import com.zhiyou.clg.bean.User;
    17 
    18 class UserTest {
    19     private static SqlSession session = null;
    20     final static String str="com.zhiyou.clg.mapper.UserMapper";
    21     @BeforeAll//测试前会执行
    22     static void setUpBeforeClass() throws Exception {
    23                 //解析配置文件
    24                 Reader reader = Resources.getResourceAsReader("conf.xml");
    25                 //获取SessionFactory对象
    26                 SqlSessionFactory SessionFactory = new SqlSessionFactoryBuilder().build(reader);
    27                 //获取Session对象
    28                 session = SessionFactory.openSession();
    29     }
    30 
    31     @AfterAll//测试后执行
    32     static void tearDownAfterClass() throws Exception {
    33         session.commit();
    34     }
    35 
    36     @Test
    37     void test() throws IOException {
    38         User user=session.selectOne(str+".selectUser", 1);
    39         System.out.println(user);
    40     }
    41 
    42 }
  • 相关阅读:
    几个前端可能会遇到的小问题
    函数内部变量与该函数名冲突会怎样
    顺序表之删除算法
    顺序表之插入算法
    IPV4和IPV6的区别
    win10关闭自动更新
    spring常见十大异常
    java中list和Arrylist的区别
    垃圾收集器与内存分配策略
    java类加载机制
  • 原文地址:https://www.cnblogs.com/lwgok1003/p/11442629.html
Copyright © 2011-2022 走看看