您的位置:首页 > 其它

MyBatis HelloWorld

2016-03-16 11:05 316 查看

一、MyBatis简介

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

二、MyBatis特点

开源的优秀持久层框架

sql语句与代码分离

面向配置编程

支持复杂数据映射

动态sql

三、MyBatis开发环境搭建

工程目录:



3.1下载jar包

mybatis-3.2.8.zip(3.2.8之后的jar包没有log4j,这一点我暂时也不知道为什么)

mysql-connector,选择JDBC Driver for MySQL下载。

3.2在mysql中新建数据库

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

[code]create database book


建立一张user表:

[code]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`)
)


插入几条记录:

[code]+----+----------+------------+
| 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.jar
mybatis-3.2.8.jar
asm-3.3.1.jar
cglib-2.2.2.jar
commons-logging-1.1.1.jar
javassist-3.17.1-GA.jar
log4j-1.2.17.jar
log4j-api-2.0.2.jar
log4j-core-2.0.2.jar
slf4j-api-1.7.5.jar
slf4j-log4j12-1.7.5.jar


3.3.3配置log4j

在src目录下添加log4j.properties,log4j可用来打印sql查询语句:

[code]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实体:

[code]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里面:

[code]<?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中:

[code]<?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测试代码

[code]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("\nusername:" + user.getUsername());

        session.close();

    }
}


结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: