mybatis入门

前身是Ibatis,数据持久化的解决方案。

Hibernate是纯ORM,Mybatis是半ORM。

mybatis让程序将主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成(半自动化,大部分需要程序员编写sql)满足需要sql语句。

1》引入jar包

log4j-1.2.17.jar

mybatis-3.3.1.jar

obdbc6.jar

2》编写数据库的jdbc配置文件mybatis.xml放到src目录下

<?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">        <!--表示Oracle数据库链接驱动-->
        <property name="driver" value="oracle.jdbc.driver.OracleDriver"/>        <!--表示链接字符串-->
        <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
        <property name="username" value="hotelsup"/>
        <property name="password" value="123"/>
      </dataSource>
    </environment>
  </environments>   <mappers>    <!--sql的配置文件 暂时不管-->  </mappers>
</configuration>

3》编写实体类(数据库表映射的实体类)

package com.jinglin.hotelsup.model;

import java.io.Serializable;

public class Userinfo implements Serializable{
       private Integer userid ;
       private String username ;
       private String userpwd ;
       private String card ;
       private String job ;
       private String del ;
    public Integer getUserid() {
        return userid;
    }
    public void setUserid(Integer userid) {
        this.userid = userid;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getUserpwd() {
        return userpwd;
    }
    public void setUserpwd(String userpwd) {
        this.userpwd = userpwd;
    }
    public String getCard() {
        return card;
    }
    public void setCard(String card) {
        this.card = card;
    }
    public String getJob() {
        return job;
    }
    public void setJob(String job) {
        this.job = job;
    }
    public String getDel() {
        return del;
    }
    public void setDel(String del) {
        this.del = del;
    }
}

4》编写SQL配置文件。表示对于这张映射的表的所有SQL操作都放在这个配置文件里,而这个配置文件存放的路径就是model所在的路径。(SQL的语句写在配置文件里,后期还有数据映射的配置文件)

(编写UserinfoMapper.xml放置在数据库实体映射的model层下)

<?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="com.jinglin.hotelsup.model">
    <!-- 编写SQL语句,select,delete,update,insert -->
    <insert id="insertitem" parameterType="com.jinglin.hotelsup.model.Userinfo">
        insert into userinfo(userid,username,userpwd,card,job)
        values(userseq.nextval,#{username},#{userpwd},#{card},#{job})
    </insert>

    <update id="updateitem" parameterType="com.jinglin.hotelsup.model.Userinfo">
        update userinfo set username=#{username},userpwd=#{userpwd},card=#{card},job=#{job} where userid=#{userid}
    </update>
    <!--物理删除-->
    <delete id="deleteitem" >
        delete userinfo where userid=#{id}
    </delete>
    <!--逻辑删除-->
    <delete id="updateuser" parameterType="com.jinglin.hotelsup.model.Userinfo">
        update userinfo set del=‘Y‘ where userid=#{id}
    </delete>

    <select id="selectone" resultType="com.jinglin.hotelsup.model.Userinfo">
        select * from userinfo where del=‘N‘ and userid=#{id}
    </select>

    <select id="selectall" resultMap="com.jinglin.hotelsup.model.userinfomap">
        select * from userinfo where del=‘N‘
    </select>
    <!-- 配置查询结果集   数据表字段和实体类的属性的映射关系-->
    <resultMap id="userinfomap" type="com.jinglin.hotelsup.model.Userinfo">
        <!-- id表示首先配置主键 ,property表示的是实体类的属性名,column表示的是数据库表的字段名-->
        <id  property="userid" column="userid"/>
        <result property="username" column="username"/>
        <result property="userpwd" column="userpwd"/>
        <result property="card" column="card"/>
        <result property="job" column="job"/>
        <result property="del" column="del"/>
    </resultMap>

</mapper>

5》将该SQL配置文件加入到mybatis-config.xml里。(2中sql的配置文件 暂时不管的内容)

<mappers>
  <!-- 引入映射的配置文件 -->
  <mapper resource="com/jinglin/bookstore/model/UserinfoMapper.xml" />
</mappers>

6》操作mybatis,首先需要获取SqlSessionFactory对象,由这个对象来生成SqlSession(表示每次与数据库的交互):

package com.jinglin.hotelsup.dao.imp;

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

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 org.junit.Test;

import com.jinglin.hotelsup.dao.IDao;
import com.jinglin.hotelsup.model.Userinfo;

public class UserInfoDao implements IDao<Userinfo> {
    static SqlSessionFactory sqlsessionFactory =null;
    static{
        String resource = "mybatis-config.xml";
        try {
            //把配置信息读取到内存中
            InputStream inputStrem =Resources.getResourceAsStream(resource);
            //创建sqlsessionFactory这个对象
            sqlsessionFactory =new  SqlSessionFactoryBuilder().build(inputStrem);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    @Override
    public int additem(Useriinfo t) {
        //采用Mybatis的方法
        SqlSession sqlSession = sqlsessionFactory.openSession();
        //表示调用新增数据的方法
        int i =sqlSession.insert("com.jinglin.hotelsup.model.insertItem", t);
        //涉及到事务
        sqlSession.commit();//把操作的数据提交到数据库中
        //关掉操作
        sqlSession.close();
        return i;
    }
    @Test
    public void testit(){
        Userinfo u = new Userinfo();
        u.setCard("123");
        u.setJob("工程师");
        u.setUsername("admin123");
        u.setUserpwd("123456");
        int result = additem(u);
        System.out.println(result);
    }
}
时间: 2024-10-08 17:36:49

mybatis入门的相关文章

MyBatis1:MyBatis入门

MyBatis是什么 MyBatis是什么,MyBatis的jar包中有它的官方文档,文档是这么描述MyBatis的: MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis eliminates almost all of the JDBC code and manual setting of para

MyBatis入门基础(一)

一:对原生态JDBC问题的总结 新项目要使用mybatis作为持久层框架,由于本人之前一直使用的Hibernate,对mybatis的用法实在欠缺,最近几天计划把mybatis学习一哈,特将学习笔记记录于此,方便大家参考,也方便自己查阅. 话不多说,先看看原始的JDBC程序代码,看看这样的代码存在什么问题. package com.utils; import java.sql.Connection; import java.sql.DriverManager; import java.sql.P

mybatis入门学习之(1)+简单例子测试

Mybatis 入门之(1)环境配置+简单例子测试 什么是MyBatis? 它是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis 使用简单的XML或注解用于配置和原始映射,将接口和POJOs(Plan Old Java Objects,普通的 Java对象)映射成数据库中的记录. 其实简单一点说mybatis就是一直访问数据库的技术,它是现在比较流行的一个持久层框架,如果你对JDBC熟悉那就更容易

mybatis入门基础(二)----原始dao的开发和mapper代理开发

阅读目录 一:原始dao开发方法 二:mapper代理方法(只需要mapper接口,相当于dao接口) 承接上一篇 mybatis入门基础(一) 看过上一篇的朋友,肯定可以看出,里面的MybatisService中存在大量的重复代码,看起来不是很清楚,但第一次那样写,是为了解mybatis的执行步骤,先苦后甜嘛! 回到顶部 一:原始dao开发方法 概要:1.在上篇中搭建好的框价中编写dao接口和dao实现类 2.向dao接口实现类中注入SqlSessionFactory,在方法体内通过SqlSe

mybatis系列笔记(1)---mybatis入门

mybatis入门   MyBatis是什么? MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis,实质上Mybatis对ibatis进行一些改进. 目前mybatis在github上托管.  git(分布式版本控制,当前比较流程) MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费

MyBatis入门案例、增删改查

1.MyBatis是什么?(下载地址:https://github.com/mybatis/mybatis-3/releases) MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis,实质上Mybatis对ibatis进行一些改进. MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费

Mybatis入门学习篇(三)之模糊查询的两种写法

在上一讲(Mybatis入门学习篇(二)之基于注解的增删改查)中,需要用到模糊查询,比如我想查找所有含有'zjh'的Student的信息.如果是在数据库中,那么我们可以方便的使用通配符%:select * from student where name like '%zjh%' .但是如果在mybatis中直接像sql中那样,就会报错.遂百度,无果,偶然在一篇帖子中看到,遂记录下来,以备后用. 方法一: 在要查询的字符串合适位置加上%,如这里的'zjh'就应该为'%zjh%'.这是一个很管用的方

mybatis入门_mybatis基本原理以及入门程序

一.传统jdbc存在的问题 1.创建数据库的连接存在大量的硬编码, 2.执行statement时存在硬编码. 3.频繁的开启和关闭数据库连接,会严重影响数据库的性能,浪费数据库的资源. 4.存在大量的重复性编码 二.mybatis执行流程 Mybatis基本的执行流程如下图所示: 三.mybatis入门程序 3.1 通过mybatis完成通过主键(id)查询用户(user) 3.1.1.项目环境搭建 建立的是Java项目.采用的mybatis版本为3.2.7. 需要导入mybatis核心jar包

MyBatis入门(五)---延时加载、缓存

一.创建数据库 1.1.建立数据库 /* SQLyog Enterprise v12.09 (64 bit) MySQL - 5.7.9-log : Database - mybatis ********************************************************************* */ /*!40101 SET NAMES utf8 */; /*!40101 SET SQL_MODE=''*/; /*!40014 SET @[email protec

MyBatis入门(二)---一对一,一对多

一.创建数据库表 1.1.创建数据表同时插入数据 /* SQLyog Enterprise v12.09 (64 bit) MySQL - 5.6.27-log : Database - mybatis ********************************************************************* */ /*!40101 SET NAMES utf8 */; /*!40101 SET SQL_MODE=''*/; /*!40014 SET @[emai