美文网首页
初识 Mybatis

初识 Mybatis

作者: 小牛长成记 | 来源:发表于2018-11-25 16:49 被阅读0次

Mybatis本是aapache的一个开源项目ibatis 。
Mybatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行了封装,使开发者只关注于Sql本身,而不需要花费精力去注册驱动,创建链接,创建statement,手动设置参数,结果数据类型封装等操作繁杂的操作。

操作步骤

1.创建po类
2.创建全局配置文件sqlMapConfig

 <?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>
         <!-- 配置mybatis的环境信息 -->
<environments default="development">
    <environment id="development">
        <!-- 配置JDBC事务控制,由mybatis进行管理 -->
        <transactionManager type="JDBC"></transactionManager>
        <!-- 配置数据源,采用dbcp连接池 -->
        <dataSource type="POOLED">
            <property name="driver" value="com.mysql.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&amp;characterEncoding=utf8"/>
            <property name="username" value="root"/>
            <property name="password" value="123"/>
        </dataSource>
    </environment>
</environments>

<!-- 加载映射文件 -->
 <mappers>
     <mapper resource="映射文件名"></mapper>   
</mappers>
</configuration>

3.编写映射文件(映射文件的创建需要添加约束头)

<!DOCTYPE mapper    
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"    
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

4.在SqlMapConfig全局配置文件中加载映射文件
5、 编写测试程序,即编写Java代码,连接并操作数据库。
思路:
a) 读取配置文件;
b) 通过SqlSessionFactoryBuilder创建SqlSessionFactory会话工厂。
c) 通过SqlSessionFactory创建SqlSession。
d) 调用SqlSession的操作数据库方法。
e) 关闭SqlSession

添加用户

(1) 基本的添加

 <!-- mybatis的入参只能有一个,这回是个引用类型的 -->
   <!-- 插入的值的占位符号,#{},里面是插入对象(入参)的对应的属性名称,采用的是对象的OGNL表达式的写法-->
   <insert id="insertUser1" parameterType="com.aishang.domain.User">
      insert into user(username,password,name,email,phone,addr,state) 
      values(#{username},#{password},#{name},#{email},#{phone},#{addr},#{state})
   </insert>

(2) 添加用户后返回主键 -- 之主键自增

<insert id="insertUser2" parameterType="com.aishang.domain.User">
      <!-- selectKey:查询主键,在标签内需要输入查询主键的sql -->
      <!-- keyProperty:查询出来的主键值怎么返回?"User"类中"uid"列用来容纳查询出来的生成的主键的值,此配置指明在实体类中用来容纳查询出的主键的属性名  -->
      <!-- resultType:查询结果的类型 -->
      <!-- order:指定查询主键的sql和insert语句的执行顺序,相对于insert语句来说的,值:
           BEFORE: 如果是oracle数据库的话,不是主键自增机制,而是序列机制,
                     需要先生成一个序列,拿到序列后再执行插入,因此采用的是order="BEFORE"
                     如果是UUID,也需要先生成一个UUID,再执行插入,也采用order="BEFORE"                          
           AFTER:mysql中,采用自增主键策略 在insert的时候产生主键,所以在执行完insert之后,再来获取生成的主键,因而在这里配置,order="AFTER"
       -->
<!-- LAST_INSERT_ID():该函数是mysql函数,针对自增主键来获取主键的id,必须配合insert语句一起使用-->
      <selectKey keyProperty="uid" resultType="int" order="AFTER">
         select LAST_INSERT_ID()
      </selectKey>
            insert into user(username,password,name,email,phone,addr,state) 
            values(#{username},#{password},#{name},#{email},#{phone},#{addr},#{state})
   </insert>

(3) 添加用户后返回主键 -- 之UUID

<insert id="insertUser3" parameterType="com.aishang.domain.User">
      <!-- UUDI():该函数是mysql函数,生成一个32位随机不重复的数据-->
      <selectKey keyProperty="uid" resultType="java.lang.String" order="BEFORE">
         select UUDI()
      </selectKey>
      <!-- uid不是自增了,也需要插入进去,采用的值是上一步 select UUDI()的结果,已经封装到了User对象的uid属性了-->
     insert into user(uid,username,password,name,email,phone,addr,state) 
     values(#{uid},#{username},#{password},#{name},#{email},#{phone},#{addr},#{state})
</insert>   

(4) 添加用户后返回主键 -- 之Oracle序列

<insert id="insertUser4" parameterType="com.aishang.domain.User">
     <!-- sequence:是Oracle主键生成策略-->
     <selectKey keyProperty="uid" resultType="int" order="BEFORE">
         select seq.nextval() from dual
     </selectKey>
     <!-- uid不是自增了,也需要插入进去,采用的值是上一步 select UUDI()的结果,已经封装到了User对象的uid属性了-->
    insert into user(uid,username,password,name,email,phone,addr,state) 
    values(#{uid},#{username},#{password},#{name},#{email},#{phone},#{addr},#{state})
</insert>

测试方法


@Test
public void fun(){
    //拿到全局配置文件路径
    String resource = "sqlMapConfig.xml" ;
    InputStream inputStream = Resource.getResourceAsStream(resource);
    SqlSessionFactory sqlSessionFactory = new sqlSessionFactoryBuilder().build(inputStream);
    SqlSession sqlSession =  sqlSessionFactory.openSession();
    User user = sqlSession.selectOne("test.findUserById", 2);
        System.out.println(user);
        
        //关闭资源
        sqlSession.close();

}

相关文章

  • Mybatis入门

    目的:入门,熟悉mybatis是什么,怎么用。 1. 初识Mybatis 1.1 Mybatis介绍 MyBati...

  • 初识MyBatis

    MyBatis学习笔记(二) Mapper XML文件配置 SQL映射文件几个的元素 ☆ Select查询语句 1...

  • Mybatis 初识

    1: ORM概念 ORM(OBJECT-RELATIONSHIP MAPPING) 即对象关系映射,他只是一种...

  • 初识MyBatis

    MyBatis学习笔记(一) 1、什么是MyBatis2、安装3、第一个mybatis实例 前言 1、ORM:Ob...

  • 初识MyBatis

    本文目标 掌握MyBatis基础组件及其使用、MyBatis的使用方法 掌握基础组件的生命周期及其实现方法 掌握入...

  • 初识Mybatis

    MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的JDBC代码...

  • 初识Mybatis

    Mybatis是一个持久层的框架 Mybatis让程序员把主要精力放在sql上,通过mybatis的映射方式,自由...

  • 初识MyBatis

    引言 Java互联网应用可以通过mybatis框架访问数据库,使用MyBatis框架主要有一下三个优点: 不屏蔽S...

  • 初识 Mybatis

    Mybatis本是aapache的一个开源项目ibatis 。Mybatis是一个优秀的持久层框架,它对jdbc的...

  • Mybatis 初识

    Mybatis组件 SqlSessionFactoryBuilder: 工厂构造器 SqlSessionFacto...

网友评论

      本文标题:初识 Mybatis

      本文链接:https://www.haomeiwen.com/subject/yfvpqqtx.html