初识Mybatis框架,实现增删改查等操作

此第一次接触Mybatis框架确实是有点不适应,特别是刚从Hibernate框架转转型过来,那么为什么要使用Mybatis框架,Mybatis框架和Hibernate框架又有什么异同呢?

这个问题在我的另一篇blogs中有专门的讲解,今天我主要是带着大家来探讨一下如何简单的使用Mybatis这个框架

可能有的朋友知道,Mybatis中是通过配置文件来实现这个的,这里面有很多的东西,我们就一点一点的讲吧

我们想要配置成功,首要的就是jar包,先从官网下载相应的jar包作为程序的支撑

有了jar包之后我么就来看看我们程序的主要的搭建

具体类的内容如下

Student Class

package entity;
/*
 * 学生类
 * */
public class Student {
    //学生编号
    private Integer sid;
    //学生名称
    private String sname;
    //学生性别
    private String sex;

    public Student() {
    }
    public Student(String sname, String sex) {
        this.sname = sname;
        this.sex = sex;
    }
    public Integer getSid() {
        return sid;
    }
    public void setSid(Integer sid) {
        this.sid = sid;
    }
    public String getSname() {
        return sname;
    }
    public void setSname(String sname) {
        this.sname = sname;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }

}

 

Grade Class

package entity;
/*
 * 班级类
 * */
public class Grade {
    //班级编号
    private Integer gid;
    //班级名称
    private String gname;
    //班级描述
    private String gdesc;

    public Grade() {
    }
    public Grade(Integer gid, String gname, String gdesc) {
        this.gid = gid;
        this.gname = gname;
        this.gdesc = gdesc;
    }
    public Integer getGid() {
        return gid;
    }
    public void setGid(Integer gid) {
        this.gid = gid;
    }
    public String getGname() {
        return gname;
    }
    public void setGname(String gname) {
        this.gname = gname;
    }
    public String getGdesc() {
        return gdesc;
    }
    public void setGdesc(String gdesc) {
        this.gdesc = gdesc;
    }

}

接下来我么就要配置我们的主要配置文件了,主要是指定我们要连接的数据库和具体连接操作

Configuration.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!--

       Copyright 2009-2012 the original author or authors.

       Licensed under the Apache License, Version 2.0 (the "License");
       you may not use this file except in compliance with the License.
       You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

       Unless required by applicable law or agreed to in writing, software
       distributed under the License is distributed on an "AS IS" BASIS,
       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
       See the License for the specific language governing permissions and
       limitations under the License.

-->
<!DOCTYPE configuration
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
<!--
  <settings>
    <setting name="useGeneratedKeys" value="false"/>
    <setting name="useColumnLabel" value="true"/>
  </settings>

  <typeAliases>
    <typeAlias alias="UserAlias" type="org.apache.ibatis.submitted.complex_property.User"/>
  </typeAliases> -->
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC">
        <property name="" value=""/>
      </transactionManager>
      <dataSource type="UNPOOLED">
        <property name="driver" value="oracle.jdbc.OracleDriver"/>
        <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
        <property name="username" value="practice"/>
        <property name="password" value="123"/>
      </dataSource>
    </environment>
  </environments>

   <mappers>
    <mapper resource="config/Student.xml"/>
  </mappers> 

</configuration>

 

其实最主要的是如下图所示

 

到这里为止,所有的准备工作基本上就已经是完成了

接下来,使用Mybatis框架来实现我们的具体操作‘

1.查询所有学生信息

因为Mybatis是属于一种半自动化的框架技术所以呢sql是我们手动书写的,这也是Mybatis的一大特点

我们可以写出具体的实体配置文件

Student.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--

       Copyright 2009-2012 the original author or authors.

       Licensed under the Apache License, Version 2.0 (the "License");
       you may not use this file except in compliance with the License.
       You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

       Unless required by applicable law or agreed to in writing, software
       distributed under the License is distributed on an "AS IS" BASIS,
       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
       See the License for the specific language governing permissions and
       limitations under the License.

-->

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

<mapper namespace="Student">

  <resultMap type="entity.Student" id="StudentResult">
    <id column="sid" jdbcType="INTEGER" property="sid"/>
    <result column="sname" jdbcType="VARCHAR" property="sname"/>
    <result column="sex" jdbcType="VARCHAR" property="sex"/>
  </resultMap>

    <select id="selectAllStu"  resultMap="StudentResult">
        select * from Student
    </select>

</mapper>

 

既然我们写了sql也指定了相应的实体类,那么我们到现在为止还并没有用到它,所以我们还需要在主配置文件中添加实体配置文件的引用

 

经过以上的步骤, 我们查询全部学生的配置文件基本上就已经完成了,现在我们来进行一道测试

/*
     * 1.1 查询所有的学生信息
     * */
    @Test
    public void OneTest() throws Exception{
        //通过配置文件获取到数据库连接信息
        Reader reader = Resources.getResourceAsReader("config/Configuration.xml");
        //通过配置信息构建一个SessionFactory工厂
        SqlSessionFactory sqlsessionfactory=new SqlSessionFactoryBuilder().build(reader);
        //通过SessionFaction打开一个回话通道
        SqlSession session = sqlsessionfactory.openSession();
        //调用配置文件中的sql语句
        List<Student> list = session.selectList("Student.selectAllStu");
        //遍历查询出来的结果
        for (Student stu : list) {
            System.out.println(stu.getSname());
        }

        session.close();
    }

执行之后的语句如下

这样我们使用Mybatis查询所有学生信息就完成了

 

2.带条件查询动态Sql拼接

/*
     *1.2 带条件查询信息(动态Sql拼接)
     * */
    @Test
    public void selectAllStuByWhere() throws Exception{
        //通过配置文件获取到数据库连接信息
        Reader reader = Resources.getResourceAsReader("config/Configuration.xml");
        //通过配置信息构建一个SessionFactory工厂
        SqlSessionFactory sqlsessionfactory=new SqlSessionFactoryBuilder().build(reader);
        //通过SessionFaction打开一个回话通道
        SqlSession session = sqlsessionfactory.openSession();
        //准备一个学生对象作为参数
        Student student=new Student();
        student.setSname("3");
        //调用配置文件中的sql语句
        List<Student> list = session.selectList("Student.selectAllStuByWhere",student);
        //遍历查询出来的结果
        for (Student stu : list) {
            System.out.println(stu.getSname());
        }

        session.close();
    }

 

 

小配置配置文件信息

<?xml version="1.0" encoding="UTF-8"?>
<!--

       Copyright 2009-2012 the original author or authors.

       Licensed under the Apache License, Version 2.0 (the "License");
       you may not use this file except in compliance with the License.
       You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

       Unless required by applicable law or agreed to in writing, software
       distributed under the License is distributed on an "AS IS" BASIS,
       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
       See the License for the specific language governing permissions and
       limitations under the License.

-->

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

<mapper namespace="Student">

  <resultMap type="entity.Student" id="StudentResult">
    <id column="sid" jdbcType="INTEGER" property="sid"/>
    <result column="sname" jdbcType="VARCHAR" property="sname"/>
    <result column="sex" jdbcType="VARCHAR" property="sex"/>
  </resultMap>

    <!-- 简单查询所有信息 -->
     <select id="selectAllStu"  resultMap="StudentResult">
        select sid,sname,sex,gid from Student
    </select> 

    <!--动态拼接Sql  -->
     <select id="selectAllStuByWhere" parameterType="entity.Student"  resultMap="StudentResult">
        select sid,sname,sex,gid from Student where 1=1
        <if test="sname!=null and !&quot;&quot;.equals(sname.trim())">
            and sname like '%'|| #{sname}|| '%' <!-- 模糊查询 -->
            <!-- and sname = #{sname} -->
        </if>

     </select>
</mapper>

执行之后的结果就是

 

3.新增学生信息

/*
     * 1.3 新增学生信息
     *
     * */
    @Test
    public void InsertStuInfo() throws Exception{
        //通过配置文件获取配置信息
        Reader reader = Resources.getResourceAsReader("config/Configuration.xml");
        //构建一个SessionFactory,传入配置文件
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader);
        //获取session
        SqlSession session = factory.openSession();
        //准备参数对象
        Student stu=new Student();
        stu.setSname("巴黎的雨季");
        stu.setSex("男");
        //调用添加方法
        int count = session.insert("Student.InsertStuInfo", stu);
        if(count>0){
            System.out.println("添加成功");
        }else{
            System.out.println("添加失败");
        }
        //提交
        session.commit();
        //关闭
        session.close();
    }

 

在小配置中增加一个节点

<!-- 新增学生信息 -->
     <insert id="InsertStuInfo" parameterType="entity.Student" >
         insert into Student values(SEQ_NUM.Nextval,#{sname},#{sex},1)
     </insert>

执行之后结果为

后续的删除和修改代码基本上和新增是一致的,只是调用的sql语句不同,所以后续我就不做详细的解释了,只将代码摆出来,详细大家都能够看得明白!!

 

4.删除学生信息根据id

/*
     * 1.4根据SID删除学生信息
     * */
    @Test
    public void DeleteStuBySid()throws Exception{
        //通过配置文件获取配置信息
        Reader reader = Resources.getResourceAsReader("config/Configuration.xml");
        //构建一个SessionFactory,传入配置文件
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader);
        //获取session
        SqlSession session = factory.openSession();
        //准备参数
        int sid=2;
        //调用删除方法
        int count = session.delete("Student.DeleteStuBySid", sid);
        if(count>0){
            System.out.println("删除成功");
        }else{
            System.out.println("删除失败");
        }
        //提交
        session.commit();
        //关闭
        session.close();
    }

 

需要在配置文件中新增的是

 <!-- 删除学生信息 -->
     <insert id="DeleteStuBySid" parameterType="int">
         delete from Student where sid=#{sid}
     <!--或者是     delete from Student where sid=#{_parameter} -->
     </insert>

 

5.根据SID修改学生信息

/*
     * 1.5根据SID修改学生信息
     *
     * */
    @Test
    public void UpdateStuBySid()throws Exception{
        //通过配置文件获取配置信息
        Reader reader = Resources.getResourceAsReader("config/Configuration.xml");
        //构建一个SessionFactory,传入配置文件
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader);
        //获取session
        SqlSession session = factory.openSession();
        //准备参数对象
        Student stu=new Student();
        stu.setSid(1);
        stu.setSname("绿茵");
        stu.setSex("女");
        //调用删除方法
        int count = session.update("Student.UpdateStuBySid", stu);
        if(count>0){
            System.out.println("修改成功");
        }else{
            System.out.println("修改失败");
        }
        //提交
        session.commit();
        //关闭
        session.close();
    }

 

需要在配置文件中添加的是

 <!-- 根据SID修改学生信息 -->
     <update id="UpdateStuBySid" parameterType="entity.Student" >
         update Student set sname=#{sname},sex=#{sex} where sid=#{sid}
     </update>

 

 

以上我们就简单的完成了对Mybatis的增、删、改、查的基本操作了,关于Mybatis的一些高级内容的讲解我会继续在后中为大家持续讲解

 

http://www.cnblogs.com/liujiayun/p/5807425.html

 

时间: 2024-09-18 04:36:22

初识Mybatis框架,实现增删改查等操作的相关文章

Yii 2.0框架数据增删改查的操作

新增操作: $model = newUser(); $model->username = 'username'; $model->age      = '20'; $model->insert(); 查询操作: User::find()->all();    此方法返回所有数据: User::findOne($id);   此方法返回 主键 id=1  的一条数据: User::find()->where(['name' => 'username'])->one(

求一份Struts2+Spring+mybatis整合的增删改查及分页和多条件查询的源代码

问题描述 求一份Struts2+Spring+mybatis整合的增删改查及分页和多条件查询的源代码 小白求一份Struts2+Spring+mybatis整合的增删改查及分页和多条件查询的源代码,用jQuery实现jsp页面 解决方案 SpringMVC+Spring+mybatis是否需要呢?笔者之前写了一些相关的文章,也有源代码,你可以参考下:http://blog.csdn.net/evankaka/article/details/49452201http://blog.csdn.net

CodeIgniter框架基本增删改查操作示例

本文实例讲述了CodeIgniter框架基本增删改查操作.分享给大家供大家参考,具体如下: 对于codeigniter的增删改,在此我用自己的一个例子来说明一下: 创建数据库: CREATE TABLE IF NOT EXISTS `users` ( `id` int(10) NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL, `password` varchar(50) NOT NULL, `email` varchar(100)

Yii2.0高级框架数据库增删改查的一些操作_php实例

yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2使用中的一些基本的增删改查操作. User::find()->all();    //返回所有用户数据: User::findOne($id);   //返回 主键 id=1  的一条数据: User::find()->where(['name' => 'ttt'])->one();   //返回 ['name' => 'ttt'] 的一条数据: User::find(

spring入门((12) spring与hibernate整合完成增删改查的操作

本文是在上一篇博文的基础之上,通过继承HibernateDaoSupport调用hibernateTemplate类,只要将UserDaoImpl.java 改为继承HibernateDaoSupport类,还有spring-dao.xml文件加入对HibernateDaoSupport的配置bean即可,具体实现源码如 下: UserDaoImpl.java package www.csdn.spring.hibernate.dao.copy; import java.util.List; i

[Android] SQLite数据库之增删改查基础操作

    在编程中经常会遇到数据库的操作,而Android系统内置了SQLite,它是一款轻型数据库,遵守事务ACID的关系型数据库管理系统,它占用的资源非常低,能够支持Windows/Linux/Unix等主流操作系统,同时能够跟很多程序语言如C#.PHP.Java等相结合.下面先回顾SQL的基本语句,再讲述Android的基本操作. 一. adb shell回顾SQL语句     首先,我感觉自己整个大学印象最深的几门课就包括<数据库>,所以想先回顾SQL增删改查的基本语句.而在Androi

详解Nodejs基于mongoose模块的增删改查的操作_node.js

MongoDB MongoDB是基于Javascript语言的数据库,存储格式是JSON,而Node也是基于JavaScript的环境(库),所以node和mongoDB的搭配能减少因为数据转换带来的时间空间开销. Mongoose 是MongoDB的一个对象模型工具,它将数据库中的数据转换为JavaScript对象以供你在应用中使用,封装了MongoDB对文档的的一些增删改查等常用方法,让NodeJS操作Mongodb数据库变得更加灵活简单. 安装模块mongoose npm install

mybatis多表增删改查-mybatis多表insert问题

问题描述 mybatis多表insert问题 现有三张表,student,teacher,st_table(中间表): 表student: ID TEACHER_NAME 表teacher: ID NAME 表ST_TABLE: ID STUDENT_ID TEACHER_ID 想实现在往student表新增一条数据时,把这条数据的ID和该student的TEACHER_NAME对应的TEACHER表的ID存到中间表ST_TABLE中 刚开始用mybatis,希望各位大神多指教 解决方案 你的意

mybatis-简单的增删改查操作

mybatis是apache下一个开源项目,原称为ibatis,后改名为mybatis. 是一个基于Java的持久层框架.(类似与hibetnate). MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录. **重