zoukankan      html  css  js  c++  java
  • 初始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  舞凍

  • 相关阅读:
    EZOJ #202
    EZOJ #201
    p5156 [USACO18DEC]Sort It Out
    p4363 [九省联考2018]一双木棋chess
    p2150 [NOI2015]寿司晚宴
    p5155 [USACO18DEC]Balance Beam
    p2414 [NOI2011]阿狸的打字机
    实验室断网的解决方案
    人需要看到未来
    门德尔松--罗辑思维
  • 原文地址:https://www.cnblogs.com/wang2386033566/p/9516931.html
Copyright © 2011-2022 走看看