美文网首页
如何使用mybatis

如何使用mybatis

作者: 豪门百里 | 来源:发表于2016-07-06 11:09 被阅读41次

如果你的数据表有100列(例如你的考研报名信息= =),这时如果你还用sql语言中的insert来插入一行数据,那就太不方便了,而且也很不美观。但如果能够创建一个类,列名都写在类里,每次插入都只需要把变量名定义一下,就爽快多了。而且还有两个额外的好处。1.可以做到填充内容默认为空值,这样不填值的项可以直接无视,不用赋值为null,而且这样做有个好处,就是null值是不能被where索引的,但是空值就可以!2.可以方便地让你填的值在填之前进行一系列的计算。

1.在src文件夹下创建一个配置文件conf.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=""/>
                <property name="url" value="" />
                <property name="username" value=""/>
                <property name="password" value=""/>
            </dataSource>
        </environment>
    </environments>

</configuration>

2.在src文件夹下再创建一个包,一般以.mapper结尾,这个包用来存放映射文件。我们在这个包下建立一个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,namespace的值必须为包名+sql映射文件名(去除后缀)-->
<mapper namespace="com.atkaixian.mapper.mapper">
    <!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getFromAge,id属性值必须是唯一的,不能够重复
    使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型。这里返回mapper对应的实体类 -->
    
    <!-- 
        根据age查询得到一个meizhi对象
     -->
    <select id="getFromAge" parameterType="int" resultType="com.atkaixian.db2.Meizhi">
        select * from meizhi where age = #{age}
    </select>
    
</mapper>

3.然后我们还要在刚才创建的conf.xml文件里注册这个映射文件。配置文件是工程一开始就读取的,自然什么东西都要写在里面。

    <mappers>
        <!-- 注册mapper.xml文件 -->
        <mapper resource="com/atkaixian/mapper/mapper.xml"/>
    </mappers>

4.然后就可以写测试代码了。该代码实现从meizhi这个表中得到第一行数据,并打印其中的名字。

// mybatis的配置文件
String resource = "Configuration.xml";
// 使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
InputStream is = Apnons2Salslp.class.getClassLoader().getResourceAsStream(resource);
// 构建sqlSession的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
// 创建能执行映射文件中sql的sqlSession
SqlSession session = sessionFactory.openSession();
        
String selectAge = "com.atkaixian.db2.mapper.getFromAge";   // 映射sql的标识字符串
// 执行查询返回一个唯一meizhi对象的sql
Meizhi meizhi = session.selectOne(selectAge,23);
System.out.println(meizhi.name);

5.这样我们成功实现了,通过session.selectOne方法,从ID为getFromAge的标签中执行代码,并返回唯一一行的操作。但是,这个方法能力比较有限,例如只能查询,不能添加删除。要想添加删除,我们必须先学会另外一种方法:使用接口。在src中再创建一个包,以interface结尾,里面创建一个interface.java文件。这里要提一下,用接口实现mapper标签的方法很神奇,可以这么认为:session方法实现的并不是纯正的标签方法,而是编译过的,但使用接口则是正儿八经的原自定义方法!

package com.atkaixian.inter;
import com.atkaixian.db2.Meizhi;

public interface Interface {
    // 函数名与id一致,这个不同多说,返回类型是对象
    public Meizhi getFromAge(int age);
    public void addMeizhi(Meizhi meizhi);   
}

6.写好接口之后,刚才的mapper命名空间就需要改一下,原本指向自己需要改为指向接口!然后就可以写测试代码了

Interface mapper = session.getMapper(Interface.class);
Meizhi meizhi2 = mapper.getFromAge(25);
System.out.println(meizhi2.name);

7.接下来学习添加操作就简单了。接口文件刚才就已经写好了,返回类型为空,函数参数为Meizhi。mapper写法如下,这里要注意的是,在刚才的方法中{age}中的age不需要跟列名一致,甚至不写都可以,但是这个方法要求严格,必须完全一样:

<insert id="addMeizhi" parameterType="com.atkaixian.db2.Meizhi" useGeneratedKeys="true" keyProperty="id"> 
    insert into meizhi values(#{age},#{height},#{weight},#{name},#{hometown})
</insert>

8.添加操作!

Interface mapper = session.getMapper(Interface.class);
mapper.addMeizhi(meizhi);  
// 请注意一定需要提交。  
session.commit(); 

基本操作大概就这么些,最后推荐2篇文章,我就是靠这两个文档学会了mybatis,非常感谢!
http://www.cnblogs.com/xdp-gacl/p/4261895.html#!comments
http://blog.csdn.net/kutejava/article/details/9164353#t1

相关文章

  • mybatis整体认识

    本片博文从传统jdbc方式引出mybatis,进而讲解mybatis如何使用。 1.jdbc使用方式 (此处仅列出...

  • Mybatis源码研读(一)—— XML解析

    走进Mybatis 上文中简单的介绍过了Mybatis的使用。本篇文章将介绍Mybatis如何解析XML 组件: ...

  • SpringBoot使用Mybatis-Generator

    本文介绍如何将Maven和Mybatis-Generator配合使用。 简介 Mybatis-Generator是...

  • Mybatis经典面试题总结

    陌上花开,可缓缓归矣 一、Mybatis 是如何进行分页的? Mybatis 使用 RowBounds 对象进行分...

  • Mybatis-PageHelper的简单使用

    https://github.com/pagehelper/Mybatis-PageHelper如何使用Mybat...

  • 如何使用MyBatis

    介绍 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几...

  • 如何使用mybatis

    如果你的数据表有100列(例如你的考研报名信息= =),这时如果你还用sql语言中的insert来插入一行数据,那...

  • 第10讲_MyBatis_注解基本用法

    MyBatis注解提出,可以说是非常好简化了MyBatis配置文件的使用。下面我们简单地来告诉大家如何使用MyBa...

  • JPA和MyBatis如何进行技术选型

    背景 在我们平时的项目中,大家都知道可以使用JPA或者Mybatis作为ORM 层。对JPA和Mybatis如何进...

  • 文档

    如何使用 数据库:mysql 后端框架:spring + springMVC + MyBatis 前端框架: vu...

网友评论

      本文标题:如何使用mybatis

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