zoukankan      html  css  js  c++  java
  • MyBatis学习-偏实践(单独MyBatis项目)

    准备先把MyBatis搞熟悉了,然后把SpringMVC搞熟悉了。

    MyBatis的材料,除了我之前自己实验的

    http://www.cnblogs.com/charlesblc/p/5906431.html

    还有这个:

    http://www.cnblogs.com/charlesblc/p/5939505.html

    现在主要参考以下两个:

    http://www.cnblogs.com/charlesblc/p/5906431.html (转载自 http://www.yihaomen.com/article/java/302.htm)

    http://limingnihao.iteye.com/blog/781671

    可能还有这个: http://www.cnblogs.com/xdp-gacl/p/4261895.html

    利用Idea重新开始搭建:

    按照这个页面:http://www.yihaomen.com/article/java/303.htm 写了一些代码。(整理好的版本在后面给出)

    运行, 开始没有找到配置文件:

    java.io.IOException: Could not find resource /Users/baidu/Documents/Data/Work/Code/Self/mybatis-demo/target/classes/resources/Mybatis.xml

    本来以为需要配置才能把Resources里面的文件放到编译目标目录。上网查之后发现是自动放的。后来发现文件貌似是在:

    /Users/baidu/Documents/Data/Work/Code/Self/mybatis-demo/target/classes

    然后用了

    String configFile = Class.class.getClass().getResource("/").getPath().toString() + "Mybatis.xml";
    reader = Resources.getResourceAsReader(configFile);

    还是报错找不到,但是报错信息中的文件,是实际存在的。

    怀疑是不是不能用绝对路径,所以改了一下:

    reader = Resources.getResourceAsReader("Mybatis.xml");

    发现可以了。哈哈。

    整理代码结构如下,其中红框内的是实际用到的文件:

    在开发之前,在数据库中建立一个表。注意其中语句G表示Gracefully显示,垂直显示。另外,如果结果出现乱码,查看之前Mysql修正乱码的帖子。

    mysql> use springdemo;
    Database changed
    mysql> show create table user G 
    *************************** 1. row ***************************
           Table: user
    Create Table: CREATE TABLE `user` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `nickname` varchar(45) DEFAULT NULL,
      `password` varchar(45) DEFAULT NULL,
      `first_name` varchar(45) DEFAULT NULL,
      `last_name` varchar(45) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8
    1 row in set (0.00 sec)
    
    mysql> select * from user;
    +----+------------+----------+------------+-----------+
    | id | nickname   | password | first_name | last_name |
    +----+------------+----------+------------+-----------+
    |  1 | chaoliu    | 321      | chao       | liu       |
    |  3 | micro      | 123      | bill       | gates     |
    |  5 | helloworld | 123      | hello      | world     |
    |  7 | 你好     | 123      | 中        | 文       |
    +----+------------+----------+------------+-----------+
    4 rows in set (0.00 sec)

    然后看工程里面各个文件:

    pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.myapp</groupId>
        <artifactId>mybatis-demo</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <properties>
            <!-- mybatis版本号 -->
            <mybatis.version>3.2.8</mybatis.version>
    
            <!-- mysql驱动版本号 -->
            <mysql-driver.version>5.1.29</mysql-driver.version>
    
            <!-- log4j日志包版本号 -->
            <slf4j.version>1.7.18</slf4j.version>
            <log4j.version>1.2.17</log4j.version>
    
        </properties>
    
        <dependencies>
    
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>${mybatis.version}</version>
            </dependency>
    
            <!-- 添加mysql驱动依赖 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql-driver.version}</version>
            </dependency>
    
            <!-- 添加日志相关jar包 -->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>${log4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
    
        </dependencies>
    
    </project>

    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>
        <typeAliases>
            <typeAlias alias="User" type="com.myapp.mybatis.model.User"/>
        </typeAliases>
    
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://[host]:8306/springdemo" />
                    <property name="username" value="root"/>
                    <property name="password" value="[password]"/>
                </dataSource>
            </environment>
        </environments>
    
        <mappers>
            <mapper resource="User.xml"/>
        </mappers>
    </configuration>

    User.xml

    <?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.myapp.mybatis.models.UserMapper">
        <select id="selectUserByID" parameterType="int" resultType="User">
            select * from `user` where id = #{id}
        </select>
    </mapper>

    User.java

    package com.myapp.mybatis.model;
    
    /**
     * Created by baidu on 16/10/18.
     */
    public class User {
        private int id;
        private String nickname;
    
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getNickName() {
            return nickname;
        }
        public void setUserName(String nickName) {
            this.nickname = nickName;
        }
    }

    Test.java

    package com.myapp.mybatis.test;
    
    import com.myapp.mybatis.model.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;
    import org.apache.log4j.lf5.util.Resource;
    
    import java.io.Reader;
    
    /**
     * Created by baidu on 16/10/18.
     */
    public class Test {
        private static SqlSessionFactory sqlSessionFactory;
        private static Reader reader;
    
        static {
            try {
                //String configFile = Class.class.getClass().getResource("/").getPath().toString() + "Mybatis.xml";
                reader = Resources.getResourceAsReader("Mybatis.xml");
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public static SqlSessionFactory getSession() {
            return sqlSessionFactory;
        }
    
        public static void main(String[] args) {
            SqlSession session = sqlSessionFactory.openSession();
            try {
                User user = (User)
                        session.selectOne("com.myapp.mybatis.models.UserMapper.selectUserByID", 1);
                System.out.printf("Get user id: %d, nickname: %s
    ", user.getId(), user.getNickName());
            } finally {
                session.close();
            }
        }
    }

    然后运行,用基本的java环境运行即可。运行结果如下:

    /Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/bin/java -Didea.launcher.port=7532 "-Didea.launcher.bin.path=/Applications/IntelliJ IDEA.app/Contents/bin" -Dfile.encoding=UTF-8 -classpath "/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/ext/cldrdata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/ext/jaccess.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/ext/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/ext/nashorn.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/jfxswt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/lib/ant-javafx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/lib/dt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/lib/javafx-mx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/lib/jconsole.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/lib/packager.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/lib/sa-jdi.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/lib/tools.jar:/Users/baidu/Documents/Data/Work/Code/Self/mybatis-demo/target/classes:/Users/baidu/.m2/repository/org/mybatis/mybatis/3.2.8/mybatis-3.2.8.jar:/Users/baidu/.m2/repository/mysql/mysql-connector-java/5.1.29/mysql-connector-java-5.1.29.jar:/Users/baidu/.m2/repository/log4j/log4j/1.2.17/log4j-1.2.17.jar:/Users/baidu/.m2/repository/org/slf4j/slf4j-api/1.7.18/slf4j-api-1.7.18.jar:/Users/baidu/.m2/repository/org/slf4j/slf4j-log4j12/1.7.18/slf4j-log4j12-1.7.18.jar:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar" com.intellij.rt.execution.application.AppMain com.myapp.mybatis.test.Test
    log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory).
    log4j:WARN Please initialize the log4j system properly.
    log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
    Get user id: 3, nickname: micro
    
    Process finished with exit code 0
  • 相关阅读:
    http 性能测试. Apache ab 使用.
    JavaScript , js 上下文(this 的指代)
    nodejs --- querystring模块.
    NodeJs -- URL 模块.
    Node.js 回调函数 1) 阻塞 ,同步 2) 非阻塞 ,异步.
    NPM 使用介绍
    xampp 忘记密码的处理方式.
    css 伪类: 1)a:link , a:visited, a:hover, a:active 2):first-child
    background 的一些 小的细节: 1, 背景色覆盖范围: border+ width+ padding ;背景图覆盖范围: width + padding ; 2设置多个背景图片 ; 3) background-position定位百分比的计算方式: 4)background-clip 和 background-origin 的区别
    webstrom 里面使用github
  • 原文地址:https://www.cnblogs.com/charlesblc/p/5973071.html
Copyright © 2011-2022 走看看