初始MyBatis

一.熟悉Mybatis基础配置

  1.首先导入我们需要的jar包(向pom.xml)

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
    </dependency>

    <!--引入mysql数据库需要的jar-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.6</version>
    </dependency>
    <!--父项目中引入log4j的配置-->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>
    <!--引入mybatis需要的jar-->
    <dependency>
      <groupId>asm</groupId>
      <artifactId>asm</artifactId>
      <version>3.3.1</version>
    </dependency>

    <dependency>
      <groupId>cglib</groupId>
      <artifactId>cglib</artifactId>
      <version>2.2.2</version>
    </dependency>

    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.1.1</version>
    </dependency>
    <dependency>
      <groupId>org.javassist</groupId>
      <artifactId>javassist</artifactId>
      <version>3.17.1-GA</version>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.5</version>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.5</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.3.0</version>
    </dependency>

//放在build标签中
  <build>
    <resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.xml</include>
        </includes>
      </resource>
    </resources>
  </build>

二.在src下建立resources文件夹(记得点击 Mark Directory as中的Resources Root把器变成可被程序解析的文件夹)

  1.首先需要配置大配置文件(上图中的mybatis.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>
        <!--所有cn.wd.pojo包下的所有类的别名都是类名小写或大写-->
        <package name="cn.wd.pojo"/>
    </typeAliases>

    <!--设置mybatis运行环境 default默认运行环境是environment节点中的id  -->
    <environments default="mysql">
        <environment id="mysql">
            <!--设置事务管理   后续ssm整合就交给Spring去管理-->
            <transactionManager type="JDBC"></transactionManager>
            <!--配置数据源 POOLED:mybatis自带的数据源  JNDI:tomcat中的数据源-->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>  <!--管理我们设置的映射文件-->
        <mapper resource="cn/wd/dao/UserMapper.xml"/>
    </mappers>
</configuration>

  2.因为使用的是连接池,所以需要配套文件(上图中的jdbc.properties)

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///mybatis
jdbc.username=root
jdbc.password=root

  3.导入我们的日志文件(上图中的log4j.properties)

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%-5p] %c %L %m %n

log4j.rootLogger=trace,console

 三.因为MyBatis是基于ORM映射的,所以我们需要建立实体类(pojo)

 四.在dao层建立接口和映射文件(.xml)

  1.建立xxxMapper接口来写入我们要实现的方法

 

举个栗子~

//新增:
int add(User user);

  2.作为最重要的核心SQL语句写在映射文件中

    <!--增加-->
    <insert id="add" parameterType="User">
        <selectKey resultType="int" keyProperty="id" order="AFTER">
            SELECT @@identity
        </selectKey>
        INSERT INTO user(userName,password) VALUE (#{userName},#{password})
    </insert>

注:1. id=“add”  为方法名,必须与接口中的方法保持一致;

  2.parameterType="User"  为方法的参数类型; 

 3.<selectKey resultType="int" keyProperty="id" order="AFTER">
            SELECT @@identity
        </selectKey>

    作用为获取添加后的id值(id自增),其中的

    SELECT @@identity 与 SELECT LAST_INSERT_ID()方法用法相似,可以替换;

五.配置SqlSessionFactory的工具类

  1.首先创建util的包

  2.此方法设为单例更为贴切一些

public class SqlSessionFactoryUtil {

    private static SqlSessionFactory factory;
    private SqlSessionFactoryUtil() {

    }
    public static synchronized SqlSession getSession(){
        try {
            /**
             * 给我们一个核心配置文件的位置 返回一个输入流
             * 也就是把配置信息读取到了 内存中 方便我们后续使用
             */
            InputStream is = Resources.getResourceAsStream("mybatis.xml");
            //通过构造器创建工厂
            if(factory==null){
                factory = new SqlSessionFactoryBuilder().build(is);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return factory.openSession();
    }
}

  3.之后就是在测试类里测试了

写就要写到底~~

    static SqlSession session;
    static UserMapperLogin mapper;



private static void selectAll() {
      //获取session
        session= SqlSessionFactoryUtil.getSession();
        //获取mapper实例==》让接口和xml文件关联
        mapper=session.getMapper(UserMapperLogin.class);
  
                User user=new User();
        user.setPassword("小明");
        user.setUserName("xm");
        int num=mapper.add(user);//通过mapper通过调用接口的方法
        System.out.println(user.getId());
        if(num>0){
            System.out.println("新增成功");
        }else {
            System.out.println("新增失败");
        }

        session.commit();
        session.close();
    }    

小结:这样一个简单的功能就写完了,快去练习一下把~

                      by  舞凍

原文地址:https://www.cnblogs.com/wang2386033566/p/9516931.html