Mybatis入门示例

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

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

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


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(statement 1) ;
        System. out.println(user) ;
    }
}
                                                                               
你将会看到打印出的 User对象~~~~                             
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值