zoukankan      html  css  js  c++  java
  • [J2EE]MyBatis HelloWorld

    一、MyBatis简单介绍


    iBatis是apche的一个开源项目。2010年迁移到google code后改名为MyBatis,2013年前已到github.MyBatis是一个基于java的持久层框架。与hibernate相比更加简单。关于MyBatis和Hibernate的对照,可參考这篇博客: Hibernate与 MyBatis的比較.

    二、MyBatis特点


    1. 开源的优秀持久层框架
    2. sql语句与代码分离
    3. 面向配置编程
    4. 支持复杂数据映射
    5. 动态sql

    三、MyBatis开发环境搭建


    工程文件夹:
    这里写图片描写叙述

    3.1下载jar包

    1. mybatis-3.2.8.zip(3.2.8之后的jar包没有log4j,这一点我临时也不知道为什么)
    2. mysql-connector,选择JDBC Driver for MySQL下载。

    3.2在mysql中新建数据库

    MyBatis是一个持久层框架,也就是和数据库打交道的,mysql新建一个数据库用来做測试。

    create database book

    建立一张user表:

    Create Table: CREATE TABLE `User` (
      `id` int(10) NOT NULL AUTO_INCREMENT,
      `username` varchar(20) NOT NULL,
      `passWord` varchar(20) NOT NULL,
      PRIMARY KEY (`id`)
    ) 

    插入几条记录:

    +----+----------+------------+
    | id | username | passWord   |
    +----+----------+------------+
    |  1 | 小华     | xiaohua    |
    |  2 | 柯南     | 666666     |
    |  3 | 慕白     | 123456     |
    |  4 | 小明     | xiaoming12 |
    +----+----------+------------+

    这样数据库准备好了,也能够在mysql图形界面中操作。

    3.3配置开发环境

    3.3.1新建java project

    在eclipse中新建java project,命名为Mybatis HelloWorld

    3.3.2导入jar包

    单击工程名右键->build path->config build path->add external jars,加入下面jar包mysql-connector-java-5.1.38-bin.jarmybatis-3.2.8.jarasm-3.3.1.jarcglib-2.2.2.jarcommons-logging-1.1.1.jarjavassist-3.17.1-GA.jarlog4j-1.2.17.jarlog4j-api-2.0.2.jarlog4j-core-2.0.2.jarslf4j-api-1.7.5.jarslf4j-log4j12-1.7.5.jar

    3.3.3配置log4j

    在src文件夹下加入log4j.properties,log4j可用来打印sql查询语句:

    log4j.rootLogger=DEBUG, CONSOLE
    
    #Console
    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
    
    log4j.logger.java.sql.ResultSet=INFO
    log4j.logger.org.apache=INFO
    log4j.logger.java.sql.Connection=DEBUG
    log4j.logger.java.sql.Statement=DEBUG
    log4j.logger.java.sql.PreparedStatement=DEBUG

    3.3.4 加入User.java

    新建ucas.book.map、ucas.book.pojo、ucas.book.test包
    在ucas.book.pojo包下新建User实体:

    package ucas.book.pojo;
    
    public class User {
        private int id;
        private String username;
        private String password;
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
    }

    3.3.5Mybatis配置文件

    在ucas.book.map包下加入mybatis.xml和UserMapper.xml:

    数据库连接和相关配置信息写在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="ucas.book.pojo.User" />
        </typeAliases>
    
    
        <environments default="development">
            <environment id="development">
                <!-- 事务管理类型,JDBC表示直接使用JDBC的提交和回滚设置,依赖于数据源得到的连接来管理事务 -->
                <transactionManager type="JDBC" />
                <!-- 数据库连接池POOLED表示使用数据库连接池 -->
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver" />
                    <property name="url" value="jdbc:mysql://localhost:3306/book?useSSL=true" />
                    <property name="username" value="root" />
                    <property name="password" value="napoay" />
                </dataSource>
            </environment>
        </environments>
    
        <mappers>
            <!-- SQL代码和映射信息配置文件 -->
            <mapper resource="ucas/book/map/UserMapper.xml" />
        </mappers>
    </configuration>
    

    sql代码写在UserMapper.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">
    <!-- namespace必须是唯一的,建议用该文件所在的包路径全类名 -->
    <mapper namespace="ucas.book.map.UserMapper">
        <!-- select:表示这是一个查询操作 -->
        <!-- id:用来配合namespace来定位这个操作,也就是在调用时,将採用ucas.book.pojo.User.getUserById -->
        <!-- resultType:表示返回值类型,必须是全类名。MyBatis将自己主动为我们将查询结果封装成Student对象 -->
        <!-- parameterType:表示传进来的參数的类型,由于传的是id主键。所以是int型 -->
        <select id="getUserById" parameterType="int" resultType="ucas.book.pojo.User">
            <!-- #{id}:表示占位符。也就是调用时必须为其传一个id參数进来。注意是#不是$ -->
            select * from User where id = #{id}
        </select>
    </mapper>

    <select></select>中写的是通过id查询记录的sql语句。

    3.3.6測试代码

    package ucas.book.test;
    
    import java.io.IOException;
    import java.io.Reader;
    
    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 ucas.book.pojo.User;
    
    public class TestUser {
        public static void main(String[] args) {
            String resource = "ucas/book/map/mybatis.xml";
            Reader reader = null;
            SqlSession session;
    
            try {
                reader = Resources.getResourceAsReader(resource);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
    
            session = factory.openSession();
            User user = session.selectOne("getUserById", 1);
    
            System.out.println("
    username:" + user.getUsername());
    
            session.close();
    
        }
    }
    

    结果:
    这里写图片描写叙述

  • 相关阅读:
    loaded some nib but the view outlet was not set
    指标评比
    IOS DEVELOP FOR DUMMIES
    软件测试题二
    javascript select
    DOM节点类型详解
    mysql操作
    UVA 10055
    solutions for 'No Suitable Driver Found For Jdbc'
    解决git中文乱码问题
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/7271847.html
Copyright © 2011-2022 走看看