码迷,mamicode.com
首页 > 其他好文 > 详细

Mybatis学习笔记

时间:2017-08-18 19:51:09      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:static   price   运行   方法   自动   _id   prepare   eclipse   turn   

一:什么是mybatis?

1.  Mybatis是一个持久层的框架,是apache下的顶级项目,mybatis托管到goolecode,再后来托管到github下

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

3.  Mybatis可以将preparedStatement中的输入参数进行输入映射,将查询结果集灵活映射为Java对象()

二:mybatis框架

SqlMapConfig.xml(mybatis的全局配置文件,),配置数据源,事务等mybatis运行环境,配置映射文件(配置sql语句)。Mapper.xml(映射文件)

2.SqlSessionFactory(会话工广),作用,创建SqlSession,根据配置文件创建工厂

3SqlSession(会话),是一个面向用户(程序员)的接口,作用:操作数据库(发出sql增,删,改,查)

4.Executor(执行器),是一个接口(基本执行器,缓存执行器),作用:sqlSession内部通过执行器操作数据库

5.Mapped Statement(底层封装对象)作用:对操作数据库存储封装,包括SQL语句,输入参数(输入参数类型:Java简单类型,hashmap,pojo自定义),输出结果类型(输出参数类型:Java简单类型,hashmap,pojo自定义)

三入门程序

环境

1.Java环境:jdk1.7.0_72

Eclipse:indigo

Mysql:5.1

2.Mybatis运行环境(jar包)从https://github.com/mybatis/mybatis-3/releases下载3.2.7版本

Lib下

Mybatis-3.2.7.jar:核心包

加入mysql的驱动包

Mybatis-3.2.7.pdf操作指南

3.log4j.properties

四:语法记录

1.  映射文件的命名方式:User.xml(原始ibatis命名),mapper代理开发映射文件名称叫xxxMapper.xml,比如:UserMapper.xml,ItemsMapper.xml

2.  在映射文件中配置sql语句

3.  User.xml配置文件中,namespace命名空间。作用是sql语句进行分类化管理,理解sql隔离。注意:使用mapper代理方法开发,namespace有特殊的重要作用

4.  在映射文件中可以配置很多sql语句

5.  通过select执行数据库查询,id:标识映射文件的sql语句的名称,称为statement的id,将sql语句封装到mappedStatemen对象中

6.  #{}表示一个占位符#{id}:其中的id表示接入输入的参数,参数名称是id,类型可以是简单类型,pojo(自定义类型),hashmap。如果输入参数是简单类型,#{}中的参数名可以是value或是其他。#{}接收pojo对象值,通过OGNL读取对象中的属性值。

7.  ${}表示一个拼接符号,会引用sql注入,所以不建议使用${}。${}接收的输入参数,类型可以是简单类型,pojo,hashmap,如果是简单类型,${}中只能写value。

8.  resultType:指定sql输出结果所映射的Java对象类型,select指定resultType表示将单条记录映射到Java对象

9.  创建SqlSession的过程

(1)       mybatis配置文件

(2)       得到配置文件流

(3)       创建会话工厂,传入mybatis的配置文件信息

(4)       通过工厂得到SqlSession

(5)       通过SqlSession操作数据库

package com.xxq.utils;

import java.io.Reader;

import org.apache.ibatis.io.Resources;

import org.apache.ibatis.session.SqlSession;

import org.apache.ibatis.session.SqlSessionFactory;

import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MyBatisSessionFactory

{  

public static final SqlSessionFactory  SQL_SESSION_FACTORY;

 static {   //调用log4j   org.apache.ibatis.logging.LogFactory.useLog4JLogging();  

 String config="mybatis-config.xml";   

Reader reader=null;  

 try{    reader=Resources.getResourceAsReader(config);  

 }catch(Exception e){    e.printStackTrace();   }

  SQL_SESSION_FACTORY=new SqlSessionFactoryBuilder().build(reader);  }

 //返回Session对象  public static SqlSession getSession(){   

return SQL_SESSION_FACTORY.openSession();

 }

}

五:自增主键的返回                          

  <insert id="insert" parameterType="com.supermi.entity.Shop" >

<!—将插入数据的主键返回,返回到Shop对象中

         SELECT LAST_INSERT_ID():得到刚刚insert进去记录的主键的值,只适用于自增主键(此时插入记录时,主键可以不写)

         KeyProperty:将查询主键设置到parameterType指定对象(Shop)的那个属性(例如sId)

         Order:SELECT LAST_INSERT_ID()执行顺序,相对于insert语句来说,它的执行顺序

         resultType:指定 SELECT LAST_INSERT_ID()的结果类型

-->

<selectKey KeyProperty="id" order=”AFTER” resultType=”java.lang.Integer”>

         SELECT LAST_INSERT_ID()

</selectKey>

    insert into shop (s_name, s_price,s_amount, img_url, st_id,  s_info) values (#{sName,jdbcType=VARCHAR}, #{sPrice,jdbcType=DOUBLE},#{sAmount,jdbcType=INTEGER},#{imgUrl,jdbcType=VARCHAR},#{stId,jdbcType=INTEGER},#{sInfo,jdbcType=VARCHAR})

  </insert>

六:非自增主键的返回   

  <insert id="insert" parameterType="com.supermi.entity.Shop" >

<!—

       将插入数据的主键返回,返回到Shop对象中

执行过程:首先通过uuid()得到主键,将主键设置到Shop对象的id属性中,其次在insert执行时,从user对象中取出id属性值(前提条件是id字段必须出现在sql语句中

-->

<selectKey KeyProperty="id" order=”BEFORE” resultType=”java.lang.String”>(返回值类型必须是String类型,Shop.java中也要改为String类型)

         SELECT uuid()

</selectKey>

 

    insert into shop (s_id,s_name, s_price,s_amount, img_url, st_id,  s_info) values (#{sId,jdbcType=VARCHAR},#{sName,jdbcType=VARCHAR}, #{sPrice,jdbcType=DOUBLE},#{sAmount,jdbcType=INTEGER},#{imgUrl,jdbcType=VARCHAR},#{stId,jdbcType=INTEGER},#{sInfo,jdbcType=VARCHAR})

  </insert>

Mybatis学习笔记

标签:static   price   运行   方法   自动   _id   prepare   eclipse   turn   

原文地址:http://www.cnblogs.com/xuxueqing/p/7391151.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!