Java常用的三种编写模式 Spring,SpringMVC,myBatis。

myBatis(原名:iBatis):

开源的ORM(持久层)框架,之前为apahce旗下顶级开源项目,后转到google,变为myBatis.目前代码库:http//github.com/mybatis/mybatis-3/releases

myBatis 主要让软件工程师的精力放在sql上,通过myBatis提供的映射方式,可以自由的将数据映射为javaBean对象。

myBatis配置和使用:

  1. 引入jar包
<dependency>

         <groupId>org.mybatis</groupId>

         <artifactId>mybatis</artifactId>

         <version>3.3.1</version>

      </dependency>

      <dependency>

         <groupId>mysql</groupId>

         <artifactId>mysql-connector-java</artifactId>

         <version>5.1.38</version>

      </dependency>

2.创建配置文件

首先建立Mapper.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="com.xt.mybatis">

 <!--

 statementId=namespace+queryAnimalInfoBySid

 属性ID:标示映射文件中的sql的唯一性,ID被称为statementId

属性 parameterType: 入参参数类型

属性resultType:输出结果类型,表示单条数据记录映射成的javaBean

#{value} 表示预处理,代表占位符

${value} 表示sql字符串的拼接,将结束到的数据不加任何修饰拼装到sql中。

  -->

 <select id="queryAnimalInfoBySid" parameterType="string" resultType="com.xt.mybatis.hello.Animal.entity.Animal">

 select * from animal where SID=#{sid}

 </select>

<insert id="insertAnimal" parameterType="com.xt.mybatis.hello.Animal.entity.Animal">

insert into animal vaules (#{sid},#{name},#{kind},#[number},#{addrss})

</insert>

<delete id="deleteAnimal" parameterType="string">

delete from animal where SID=#{sid}

</delete>

<update id="updateAnimal" >

update animal set Name=#{name},Kind="kind", Number =#{number},Address=#{address} where SID=#{sid}

</update>

</mapper>

然后建立myBatis-config.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="xtEnvironment">

    <environment id="xtDevelopment">

      <transactionManager type="JDBC"/>

      <dataSource type="POOLED">

        <property name="driver" value="com.mysql.jdbc.Driver"/>

        <property name="url" value="jdbc:mysql://localhost:3306/bookshop"/>

        <property name="username" value="root"/>

        <property name="password" value="root"/>

      </dataSource>

    </environment>

  </environments>

  <mappers>

<!-- 引入Mapper文件 -->

    <mapper resource="mybatis/mapper/userMapper.xml"/>

  </mappers>

</configuration>

在编写这个文件时,要确定数据的正确性。还有,你要进行操作的表存在,否则先建表。再在工程中建立对应的实体对象,getter,setter和To String方法是必不可少的。

  1. 创建java类,保存将要测试方法。(这是基础性的运用方法,后继博客中会有更好的方法)
package com.xt.mybatis.hello.Animal.entity;

import java.io.IOException;

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.Before;

import org.junit.Test;

public class myBatisTest {

SqlSessionFactory ssf = null;

SqlSession ss = null;

@Before

public void Init(){

      try {

            ssf = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis/mybatis-config.xml"));

            ss = ssf.openSession();

      } catch (IOException e) {

            e.printStackTrace();

      }

}

 @Test

public void queryAnimalInfoBySid() throws IOException{

 //创建SqlsessionFactory通过资源加载器加载配置文件

Animal animal = ss.selectOne("statementId ","数据");

System.out.println("=========="+animal);

 }

 @Test

 public void insertAnimal(){

 Animal al = new Animal();

 al.setSid("数据");

 al.setName("数据");

 al.setKind("数据");

 al.setNumber(数据);

 al.setAddress("数据");

 int i = ss.insert("statementId ",al);

 ss.commit();

 System.out.println("========insert=========="+i);

 }

 @Test

 public void deleteAnimal(){

 int affectedRowNo = ss.delete("statementId ","数据");

ss.commit();

 System.out.println("===========delete========="+affectedRowNo);

 }

 @Test

 public void updateAnimal(){

 Animal am = new Animal();

 am.setSid("1801");

 am.setName("数据");

 am.setKind("数据");

 am.setNumber(数据);

 am.setAddress("数据");

 int i = ss.update("statementId ",am);

 ss.commit();

 System.out.println("======update====="+i);

 }

}

myBatis初学经验----(1)的更多相关文章

  1. Mybatis初学经验----------------(2)

    至于myBatis的配置,上篇文章中有,就不说了.今天谈谈myBatis编写Dao层时的用法. 传统Dao层代码需求 1.在Dao层实现类中,存在大量的模板方法,能否提取模板方法,减少我们的工作量. ...

  2. Mybatis初学笔记

    MyBatis环境搭建:1.需要mybatis-3.3.0.jar,将该jar包导入web工程的libs文件夹中:2.在src下新建一个mybatis-config.xml文件,mybatis的基本配 ...

  3. Java Persistence with MyBatis 3(中文版) 前言

    对很多软件系统而言,保存数据到数据库和从数据库中检索数据是其工作流程中至关重要的一部分.在 Java 领域,有很多的实现了数据持久化层的工具和框架,它们每一个都有自己不同的实现方法.而 MyBatis ...

  4. 搭建ssm框架经验

    要想搭建好ssm框架的开发环境.首先我们需要知道ssm是什么?ssm就是spring,springmvc,mybatis. 然后我们要知道,他们分别都是怎样实现的和做什么用的,充当什么角色?这样我们就 ...

  5. [推荐]MyBatis 核心技术与面试 34 讲

    MyBatis 核心技术与面试 34 讲 职业生涯中常被问到: 如何成为某方面的高手? 如何快速搞定某项技术? 我现在的水平处于什么阶段? -- 我暗暗想,我们从小学到中学到大学,经历了大考三六九.小 ...

  6. WPF项目学习.一

    WPF项目搭建 版权声明:本文为博主初学经验,未经博主允许不得转载. 一.前言 记录在学习与制作WPF过程中遇到的解决方案. 使用MVVM的优点是 数据和视图分离,双向绑定,低耦合,可重用行,相对独立 ...

  7. WPF项目学习.二

    WPF用MVVM的解决记录 版权声明:本文为博主初学经验,未经博主允许不得转载. 一.前言 记录在学习与制作WPF过程中遇到的解决方案.  焦点的控制,键盘事件触发,输入框的数字限制,异步处理,隐藏状 ...

  8. WPF项目学习.三

    工具代码记录 版权声明:本文为博主初学经验,未经博主允许不得转载. 一.前言 记录在学习与制作WPF过程中遇到的解决方案. 分页控件的制作,邮件发送,日志代码,excel导入导出等代码的实现过程: 二 ...

  9. WPF项目学习.四

    信息收录项目 版权声明:本文为博主初学经验,未经博主允许不得转载. 一.前言 记录在学习与制作WPF过程中遇到的解决方案.  需求文案.设计思路.简要数据库结构.简要流程图和明细代码,动图细化每步操作 ...

随机推荐

  1. 在Linux系统下搭建和配置一个minio文件服务器(一)

    1.minio文件服务器的介绍 Minio 是一个基于Go语言的对象存储服务.它实现了大部分亚马逊S3云存储服务接口,可以看做是是S3的开源版本,非常适合于存储大容量非结构化的数据,例如图片.视频.日 ...

  2. 坐标下降(Coordinate descent)

    坐标下降法属于一种非梯度优化的方法,它在每步迭代中沿一个坐标的方向进行线性搜索(线性搜索是不需要求导数的),通过循环使用不同的坐标方法来达到目标函数的局部极小值.

  3. mysql-15-view

    #视图 /* 含义:虚拟表,和普通表一样使用.通过表动态生成的数据 只保存了sql逻辑,不保存查询结果 应用场景: 1.多个地方用到同样的查询结果 2.该查询结果使用的sql语句较为复杂 */ USE ...

  4. web框架推导

    django 引言 所有的web应用本质上就是一个socket服务端,而用户的浏览器. 软件开发架构 cs架构 bs架构 本质上,bs架构也是cs架构 http协议 网络协议 http协议 数据传输是 ...

  5. CLP(FD)有限域上的约束逻辑式编程

    译自http://www.pathwayslms.com/swipltuts/clpfd/clpfd.html#_simple_constraints,SWI-Prolog官网所推荐的进阶教程.目前还 ...

  6. VUE 安装项目

    注意:在cmd中执行的命令 1,前提是安装了node.js 查看 npm 版本号 2,创建项目路径 mkdir vue cd vue 3,安装vue-cli (脚手架) npm install -个v ...

  7. oracle 11g linux 导入中文字符乱码问题解决

    1. 涉及的字符集 这个可以分成三块,数据库服务器字符集(server).实例字符集(instance), 会话字符集(session) 2. 乱码的原因 session 的字符集和 server 的 ...

  8. 搭建ipse隧道

    我没有太多的物理服务器,实验环境只能用四台装了linux的虚拟机来模拟,用户层工具是openswan.大致拓扑如下(我有点懒,公网地址我用的194.168.10.0/24,别和192.168.xx.x ...

  9. 2020年java全套教程,此套java涵盖了pdf,java源码,项目案例,完整视频约3000G的资源

    疫情期间,百无聊赖,是不是需要充电一下,让自己更有竞争力呢?学习java一定要快呦! 废话不多说了,网盘已经爆炸了,把2006年-2020年的全部资料都发给爱学习的你吧, 希望可以改变你的命运,或者是 ...

  10. 题解:[COCI2011-2012#5] BLOKOVI

    题解:[COCI2011-2012#5] BLOKOVI Description PDF : https://hsin.hr/coci/archive/2011_2012/contest5_tasks ...