MyBatis基础——MyBatis初探——MyBatis快速学习

一、Mybatis介绍:

MyBatis是一个支持普通SQL查询存储过程高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。(简单的说:替代jdbc,使数据持久化)

二、Mybatis——jar包:

下载地址:http://download.csdn.net/download/eson_15/9542081

三、代码结构图及详解:

注:UserMapper.java为自定义接口

  UserMapper.xml为自定义接口对应的映射文件(两个名字必须相同)

  Test为测试类,WEB应用可以直接在Servlet中调用方法

  User为实体类

  UserService为封装的操作类,便于开发项目,调用方法

  SqlFactory为工具类,读取mybatis配置文件

  connection.xml为mybatis配置文件,主要写连接数据库的代码和引入映射文件的代码

四、代码展示:

4.1  SQL代码:

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

INSERT INTO `users` VALUES (‘1‘, ‘张三‘, ‘27‘);
INSERT INTO `users` VALUES (‘2‘, ‘李四‘, ‘27‘);

4.2  connection.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>
     <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="scme" />
             </dataSource>
         </environment>
     </environments>

     <mappers>
         <!-- 加载userMapper.xml映射文件,UserMapper.xml位于com.scme.dao这个包下,所以resource写成com/scme/dao/userMapping.xml-->
         <mapper resource="com/scme/dao/UserMapper.xml"/>
     </mappers>

</configuration>

4.3  SqlFactory代码:

package com.scme.utils;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.session.SqlSessionFactory;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import com.scme.dao.UserMapper;

public class SqlFactory {

    private static  SqlSessionFactory sqlSessionFactory;
    static{
        //mybatis的配置文件的名字
        String fileName="connection.xml";
        //使用输入流读取mybatis的配置文件(它也加载关联的映射文件)
        InputStream inputStream;
        try {
            inputStream = Resources.getResourceAsStream(fileName);
            sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    //返回sqlSessionFactory对象
    public static SqlSessionFactory getSqlSessionFactory() {
        return sqlSessionFactory;
    }
}

4.4  UserMapper.java代码:

package com.scme.dao;

import java.util.List;

import com.scme.pojo.User;

public interface UserMapper {

    //根据id查询
    public List<User> queryById(int id);
}

4.5  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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的
 例如namespace="com.scme.dao.userMapper"就是com.scme.dao(包名)+userMapper(userMapper.xml文件去除后缀)
 -->
<mapper namespace="com.scme.dao.UserMapper">
        <!--根据id查询得到一个user对象-->
        <select id="queryById" resultType="com.scme.pojo.User" parameterType="int">
                select * from users where id=#{id}
        </select>
        <!--注: 在select标签中编写‘查询‘的SQL语句,同理插入为‘insert标签‘,修改为‘update标签‘,‘删除未delete标签‘,
         设置select标签的id属性为queryById,id属性值必须是唯一的,不能够重复,后面会利用id匹配查询方法
           使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型
          resultType="com.scme.pojo.User"就表示将查询结果封装成一个User类的对象返回
          User类就是users表所对应的实体类-->

</mapper>

4.6  UserService代码:

package com.scme.service;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import com.scme.dao.UserMapper;
import com.scme.pojo.User;
import com.scme.utils.SqlFactory;

public class UserService {
    //获取SqlSessionFactory对象
    private SqlSessionFactory  sqlSessionFactory;
    public UserService() {
                sqlSessionFactory=SqlFactory.getSqlSessionFactory();
    }

    //封装queryByID方法
    public List<User> queryByID(int id){
        //创建能执行映射文件中sql的sqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //获取定义查询方法的接口
        UserMapper userDao=sqlSession.getMapper(UserMapper.class);
        //调用根据id查询方法
        //虽然在userMapping.xml里面,resultType="com.scme.pojo.User",即返回值类型为User对象,但这里可以用list泛型集合接收
        List<User> list=userDao.queryById(id);
        sqlSession.close();
        return list;
    }

}

4.7  User代码:

package com.scme.pojo;

public class User {
    //实体类的属性和表的字段名称一一对应
    private int id;
    private String name;
    private int age;

     public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String toString() {
        return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
     }
}

4.8  Test代码:

package com.scme.lunch;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import com.scme.pojo.User;
import com.scme.service.UserService;
import com.scme.utils.SqlFactory;

public class Test {
    public static void main(String[] args) {
        UserService service=new UserService();
        List<User> list=service.queryByID(1);
        System.out.println(list.get(0));
    }
}

五、效果展示:

如有帮助,请关注!

时间: 2024-08-28 22:39:17

MyBatis基础——MyBatis初探——MyBatis快速学习的相关文章

Mybatis基础学习(一)&mdash;初识MyBatis

一.MyBatis是什么?      MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis,实质上Mybatis对ibatis进行一些改进.      MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动.创建connection.创建statement.手动设置参

MyBatis基础学习笔记--摘录

1.MyBatis是什么? MyBatis源自于IBatis,是一个持久层框架,封装了jdbc操作数据库的过程,使得开发者只用关心sql语句,无需关心驱动加载.连接,创建statement,手动设置参数,结果集检索等jdbc底层操作. Mybatis通过xml或注解的方式将要执行的各种statement(statement.preparedStatemnt.CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由myb

MyBatis基础入门《五》核心配置文件

MyBatis基础入门<五>核心配置文件 描述: 在前面的章节中,简单的学习使用了一下mybatis,对于配置文件没有过多详细说明. 这里先描述项目中的一个核心配置文件:mybatis-config.xml 文件. 资料参考:http://www.mybatis.org/mybatis-3/ 1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE configuration 3 PUB

mybatis基础系列(一)&mdash;&mdash;mybatis入门

好久不发博客了,写博文的一个好处是能让心静来,整理下之前学习过的一些知识一起分享,大神路过~ mybatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.传统的 JDBC代码通常存在如下问题: 1. 频繁对数据库进行连接和关闭,造成资源浪费,性能下降. 2. SQL代码.preparedStatement参数.占位符号等硬编码到代码中,不方便维护. 3. 遍历结果集数据时,硬编码解析表字段成java属性,不方便维护. MyBatis 避免了几乎所有的

Mybatis基础: 常见问题与FAQ

Mybatis基础: #{...} 和 ${...} 的区别 MyBatis将 #{-} 解释为JDBC prepared statement 的一个参数标记.而将 ${-} 解释为字符串替换.理解这两者的区别是很有用的, 因为在某些SQL语句中并不能使用参数标记(parameter markers). 比如,我们不能在表名(table name)的位置使用参数标记.假设有下面的代码: Map<String, Object> parms = new HashMap<String, Obj

mybatis基础(二)

上接mybatis基础(二) 开发规范: 1.在mapper.xml中namespace等于mapper接口地址 2.mapper.java接口中的方法名和mapper.xml中statement的id一致 3.mapper.java接口中的方法输入参数类型和mapper.xml中statement的parameterType指定的类型一致. 4.mapper.java接口中的方法返回值类型和mapper.xml中statement的resultType指定的类型一致. 9.properties

初探MyBatis之HelloWorld(三)

三.用SQL映射语句用注解,dataSource用xml(不推荐). 综合上面两节(一个用xml,一个用annotation),发现一个好玩儿的,SQL映射用注解方式,然后还是得有两个xml配置文件. 如果你不知道SQL映射怎么用注解方式,查看这篇:http://www.cnblogs.com/hyyq/p/6718449.html 当SQL语句用注解方式映射后,原来的XML映射文件可以这样写: 这是原来用xml映射SQL语句的方式(这里的mapper节点的 namespace和select节点

MyBatis基础入门《七》查询参数传入对象

MyBatis基础入门<七>查询参数传入对象 描述: 在执行查询语句的时候,传入的参数是一个对象,依据对象的属性,进行检索数据.此时,书写SQL语句中的条件时,其参数需要和对象中的属性保持一致. 实体类:TblClient.java 接口方法 注意: 接口中定义了一个新的方法(根据对象属性进行查询数据),方法的参数传入的是一个对象. xml文件 注意: >>> parameterType="baitang" resultType="baitang

MyBatis基础入门《十五》ResultMap子元素(collection)

MyBatis基础入门<十五>ResultMap子元素(collection) 描述: 见<MyBatis基础入门<十四>ResultMap子元素(association )> >>collection >> 复杂类型集合,一对多 >> 内部嵌套 > 映射一个嵌套结果集到一个列表 >> 属性 > property : 映射数据库列的实体对象的属性 > ofType : 完整java类名或别名(集合所包括的

MyBatis基础入门《十七》动态SQL

MyBatis基础入门<十七>动态SQL 描述: >> 完成多条件查询等逻辑实现 >> 用于实现动态SQL的元素主要有: > if > trim > where > set > choose( when , otherwise ) > foreach 动态SQL为Mybatis重要部分,项目也重新新建了一个:mybatis-dynamic-sql 项目结构: TblClient.java 1 package com.charles.e