Mybatis入门示例

来源:互联网 发布:日本教科书知乎 编辑:程序博客网 时间:2024/05/26 16:01

近期刚入职公司,从学生时代往工程师转变,有很多技术细节不得不注意了,不再是学生时代了解大概就可以。最近看公司项目,发现很多技术、框架都需要重新梳理总结学习,把每天的内容碎片整理到印象笔记,隔三差五整理成博客,给自己总结复习之用,也向业内自学者贡献一点自己的力量,毕竟我也是这么过来的,如果没有前人通过博客等无私传播知识,那我们该如何自学呢?这便是我在这里开博客的初衷~~

很多东西不够完善,加上写作水平的局限,望各位看官海涵~

本人的博客除了每次大的主题,还会加入一些自己当时想得起的理解~~希望初学者也会有我这样的思考过程~~~


mybatis 入门

1、准备数据库

CREATE DATABASE mybatis;
USE mybatis;
CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20), age INT);
INSERT INTO users(name, age) VALUES('Tom', 12);
INSERT INTO users(name, age) VALUES('Jack', 11);
INSERT INTO users(name, age) VALUES('youngholl', 24);


Tips:mysql 中类型后面往往会限制宽度,比如 INT(5),VARCHAR(20)但是这里可能很多人都理解错了,整型相关的几个类型后面的宽度指的是显示宽度,和实际存储的宽度无关,比如常见的00001就是INT(5)  同时设置ZEROFILL的结果。
         对于字符型才是限制能存储的宽度,
CHARVARCHAR类型声明的长度表示你想要保存的最大字符数,例如,CHAR(30)可以占用30个字符。
         同时,CHAR和VARCHAR的主要区别是:

         CHAR列的长度固定为创建表时声明的长度。长度可以为从0255的任何值。当保存CHAR值时,在它们的右填充空格以达到指定的长度。当检索到CHAR值时,尾部的空格被删除掉。在存储或检索过程中不进行大小写转换。  

        VARCHAR列中的值为可变长字符串。长度可以指定为065,535之间的值。(VARCHAR的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是65,532字节)

       CHAR对比,VARCHAR值保存时只保存需要的字符数,另加一个字节来记录长度(如果列声明的长度超过255,则使用两个字节)VARCHAR值保存时不进行填充。当值保存和检索时尾部的空格仍保留,符合标准SQL


2、建立工程、准备依赖jar(使用maven),如果不使用maven构建,可以去官网自行下载下关jar包,注意使用到的几处资源路径,自己跑时可能会有报错,慢慢修改路径调试即可
       工程结构可以简单建为下图所示:

    

<dependencies>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.0.8</version>
    </dependency>
    <!-- mybatis依赖 -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.1.1</version>
    </dependency>
</dependencies>


3、在resources下建立mybatis 配置文件(conf.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>
    <!--
        development 开发环境
        work 上线环境
    -->
    <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://localhost:3306/mybatis" />
                <property name="username" value="root" />
                <property name="password" value="868848" />
            </dataSource>
        </environment>
    </environments>
    <!--注册 映射配置文件-->
    <mappers>
        <mapper resource="userMapper"/>
    </mappers>
</configuration>

4、建立操作users表的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">


<mapper namespace="userMapper">
    <select id="getUser" parameterType="int"
            resultType="com.mybatis.hello.User">
        select from users where id=#{id}
    </select>
</mapper>

5、创建User.java实体类(省略了 setter、getter方法)

package com.mybatis.hello;

/**
 * Created by yanghui10 on 2016/8/3.
 * 与数据表对应的实体类
 */
public class User {
    private int id;
    private String name;
    private int age;

6、接下来就可以测试了

package com.mybatis.hello;

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 java.io.IOException;
import java.io.Reader;

/**
 * Created by yanghui10 on 2016/8/3.
 */
public class MybatisTest {
    public static void main(String[] args) throws IOException {
        String resource = "conf.xml";
       //加载mybatis 的配置文件(它也加载关联的映射文件)

       //InputStream is=MybatisTest.class.getClassLoader().getResourceAsStream(resource);
        Reader reader = Resources.getResourceAsReader(resource);
        //构建sqlSession 的工厂
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
        //创建能执行映射文件中sql 的sqlSession
        SqlSession session = sessionFactory.openSession();
        //映射sql 的标识字符串
        String statement = "userMapper"+".getUser";
        //执行查询返回一个唯一user 对象的sql

        User user = session.selectOne(statement1);
        System.out.println(user);
    }
}
                                                                              
你将会看到打印出的 User对象~~~~                             
0 0
原创粉丝点击