• [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();
    
        }
    }
    

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

  • 相关阅读:
    Android AndroidManifest 清单文件以及权限详解!【转】
    java的几个版本以及jre,jdk等概念——【转载】JDK、Java SE、Java EE、Java ME我该选
    eclipse中的两种Jre 及 Jre与Jdk的区别
    LAMP_yum安装
    CentOS7修改主机名(hostname)
    Linux下U盘挂载
    mount命令
    vmware虚拟机无法连接网络
    shell中awk printf的用法
    scp命令
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/7271847.html
Copyright © 2020-2023  润新知