简述Mybatis增删改查实例代码

编写一个简单的mybatis进行插入数据的实例

1 数据库建表 其中建表dob=Date of Birth 的意思

create table students
(stud_id number primary key,
name varchar2(20),
email varchar2(20),
dob date
);

Oracle数据库中出现表已创建,则表示创建成功,如果出现名称已被使用,则可在建表之前进行删除操作:drop table students;或者进行级联删除drop table students cascade constraints;然后再重新创建

2 新建一个项目

2.1 创建好相应的package及class,其中Student是我们要进行插入的对象,由于数据类型和数据库中的值进行了对应,因此我们能够进行将一整个对象进行插入,因此我们使用pojo类进行封装对象

package com.mybatis.pojo;
import java.util.Date;
public class Student {
private Integer studId;
private String name;
private String email;
private Date dob;
public Student() {}//注意无参的构造器
public Student(Integer studId, String name, String email, Date dob) {
this.studId = studId;
this.name = name;
this.email = email;
this.dob = dob;
}
public Integer getStudId() {
return studId;
}
public void setStudId(Integer studId) {
this.studId = studId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Date getDob() {
return dob;
}
public void setDob(Date dob) {
this.dob = dob;
}
@Override
public String toString() {
return "Student [studId=" + studId + ", name=" + name + ", email="
+ email + ", dob=" + dob + "]";
}
}

3 项目中引入mybatis的核心包以及可选的依赖包

文件下载:mybatis包下载

最新版下载:https://github.com/mybatis/mybatis-3/releases

必须的包 mybatis-3.3.0.jar ojdbc14.jar

可选的包 junit-4.7.jar log4j-1.2.17.jar

其中mybatis-3.3.0.jar 用于实现mybatis提供的功能,ojdbc14.jar用于连接数据库,junit-4.7.jar用于实现功能测试,log4j-1.2.17.jar用于进行日志记录

如下图所示:在项目目录下建立一个新的文件夹jar,将需要导入的包进行复制粘贴到jar目录下边

注意:在本地存放这些jar包时不要使用中文

然后再右键选中jar目录下的四个文件,点击添加“buildPath->add Path”,就能够看到如下界面:表示添加路径成功

4 项目中引入mybatis配置文件dtd约束文件

同样的,在项目下新建dtd目录,将约束文件复制到目录下即可,如下图所示:dtd文件结构,dtd文件下载:

http://download.csdn.net/download/suwu150/9660699

dtd文件的作用是对配置文件xml进行约束,这样的话程序员就能按照规范书写xml文件,mybatis就能够正确的读取并解析,以上dtd是配置本地的,当然我们也能够使用官网的连接进行约束

5 mybatis中的配置文件和映射文件分别引入到项目中

1) src下面的mybatis-config.xml:

首先我们对本地dtd约束进行关联,如下图进入到Preferences下面,在搜索框中输入xml,选中xml catalog配置名,然后点击右边的add按钮

出现如下图所示界面,其中Location位置和key位置为空,下图是配置过的,key内容为-//mybatis.org//DTD Config 3.0//EN,Location内容为自己的,可以通过Workspace进行选择,也就是我们前面复制到项目中的dtd文件(第4步操作中的):

点击OK,现在我们能够进行xml配置文件的书写,添加约束的作用就是对程序员的书写进行规范,以保证mybatis能够正常解析

如下图所示:选中src右键创建新文件mybatis-config.xml

注意:xml文件开头必须置顶,前面不能有空格

<?xml version="1.0" encoding="UTF-8"?>
<!-- 进行dtd约束,其中-//mybatis.org//DTD Config 3.0//EN为公共约束,
http://mybatis.org/dtd/mybatis-3-config.dtd为获取网络中提供的dtd约束 -->
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<!-- 给pojo类起别名 -->
<typeAlias type="com.mybatis.pojo.Student" alias="Student" />
</typeAliases>
<!-- 配置数据库环境其中development为默认的数据库名称事务管理器transactionManager类型为JDBC类型,数据源dataSource使用连接池的方式 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<!-- 配置数据库信息这里使用oracle数据库 -->
<property name="driver" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl" />
<property name="username" value="briup" />
<property name="password" value="briup" />
</dataSource>
</environment>
</environments>
<!-- 配置xml文件映射路径,在这里可以进行sql的操作 -->
<mappers>
<mapper resource="com/mybatis/mappers/StudentMapper.xml" />
</mappers>
</configuration>

2)com.mybatis.mappers包下面的StudentMapper.xml:

首先,我们实现接口com.mybatis.mappers;包下面新建一个接口StudentMapper.Java,用来对应xml文件中的sql语句(映射),从而方便我们调用

package com.mybatis.mappers;
import java.util.List;
import com.mybatis.pojo.Student;
public interface StudentMapper {
List<Student> findAllStudents();
Student findStudentById(Integer id);
void insertStudent(Student student);
}

使用同样的方法,对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">
<!-- com.mybatis.mappers.StudentMapper是我们定义接口的全限定名字 这样就可以使用接口调用映射的SQL语句了 这个名字一定要和接口对应上 -->
<mapper namespace="com.mybatis.mappers.StudentMapper">
<resultMap type="Student" id="StudentResult">
<id property="studId" column="stud_id" />
<result property="name" column="name" />
<result property="email" column="email" />
<result property="dob" column="dob" />
</resultMap>
<select id="findAllStudents" resultMap="StudentResult">
SELECT * FROM STUDENTS
</select>
<!-- 列名和属性名字不一致可以给查询的列起一个别名 -->
<select id="findStudentById" parameterType="int" resultType="Student">
SELECT STUD_ID AS STUDID,NAME,EMAIL,DOB
FROM STUDENTS
WHERE
STUD_ID=#{id}
</select>
<insert id="insertStudent" parameterType="Student">
INSERT INTO
STUDENTS(STUD_ID,NAME,EMAIL,DOB)
VALUES(#{studId},#{name},#{email},#{dob})
</insert>
</mapper>

*******************************************************
注意:xml文件中写的sql语句,最后面不要写分号,否则会报错误,ORA-00911: 无效字符

*******************************************************

6 配置log4j.properties文件中的日志输出:

位置src下面,文件名log4j.properties

内容:

log4j.rootLogger=DEBUG, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%-5p] %c - %m%n
#show sql
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

7 创建一个测试类StudentMapperTest.java

package com.mybatis.test;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
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.Test;
import com.mybatis.mappers.StudentMapper;
import com.mybatis.pojo.Student;
public class StudentMapperTest {
@Test
public void test_insertStudent()
{
SqlSession session=null;
try {
// 获取配置文件
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
// 生成工厂对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 使用工厂对象生成sqlsession
session = sqlSessionFactory.openSession();
// 使用sqlsession获得映射接口的实现类对象,接口的引用指向实现类的对象
StudentMapper studentMapper = session.getMapper(StudentMapper.class);
Student student = new Student(1, "suwu150", "1730@qq.com",new Date());
studentMapper.insertStudent(student);
} catch (IOException e) {
session.rollback();
e.printStackTrace();
}
}
}

8 运行成功后会在控制台中看到log4j日志输出的这个程序运行的相关信息,如下:

在数据库中查询能够看到如下信息

9 对mybatis的一些基本封装

每次读取配置文件,产生一个工厂对象SqlSessionFactory,然后再生成出SqlSession对象,这个过程虽然并不复杂,但是也都是一些重复的代码流程,所以我们可以对其进行一个简单的封装:

package com.mybatis.utils;
import java.io.IOException;
import java.io.InputStream;
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 MyBatisSqlSessionFactory {
private static SqlSessionFactory sqlSessionFactory;
public static SqlSessionFactory getSqlSessionFactory(){
if(sqlSessionFactory == null){
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream("mybatis-config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e.getCause());
}
}
return sqlSessionFactory;
}
public static SqlSession openSession() {
return openSession(false); //默认手动提交,故我们在调用的时候需要进行提交
}
public static SqlSession openSession(boolean autoCommit) {
return getSqlSessionFactory().openSession(autoCommit);
}
} 

之后每次使用的时候只需要调用该类中的静态方法openSession即可

上面的代码可简写为: //注意事务是自动提交还是手动提交

MyBatisSqlSessionFactory.openSession().getMapper(StudentMapper.class).insertStudent(s);

10 在上面的测试中,我们仅仅完成了增加的功能,下面我们进行实现删除修改和查询的功能:

在映射文件中进行如下配置:

<?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">
<!-- com.mybatis.mappers.StudentMapper是我们定义接口的全限定名字 这样就可以使用接口调用映射的SQL语句了 这个名字一定要和接口对应上 -->
<mapper namespace="com.mybatis.mappers.StudentMapper">
<resultMap type="Student" id="StudentResult">
<id property="studId" column="stud_id" />
<result property="name" column="name" />
<result property="email" column="email" />
<result property="dob" column="dob" />
</resultMap>
<select id="findAllStudents" resultMap="StudentResult">
SELECT * FROM STUDENTS
</select>
<!-- 列名和属性名字不一致可以给查询的列起一个别名 -->
<select id="findStudentById" parameterType="int" resultType="Student">
SELECT STUD_ID AS STUDID,NAME,EMAIL,DOB
FROM STUDENTS
WHERE
STUD_ID=#{id}
</select>
<insert id="insertStudent" parameterType="Student">
INSERT INTO
STUDENTS(STUD_ID,NAME,EMAIL,DOB)
VALUES(#{studId},#{name},#{email},#{dob})
</insert>
<delete id="deleteStudentById" parameterType="int">
delete from students
where STUD_ID=#{id}
</delete>
<update id="updateStudentById" parameterType="Student">
update students
set name=#{name},email=#{email}
where stud_id=#{studId}
</update>
</mapper>

在接口类中进行如下配置:

package com.mybatis.mappers;
import java.util.List;
import com.mybatis.pojo.Student;
public interface StudentMapper {
List<Student> findAllStudents();
Student findStudentById(Integer id);
void insertStudent(Student student);
void deleteStudentById(Integer id);
void updateStudentById(Student student);
}

在测试文件中编写如下代码:

package com.mybatis.test;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
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.Test;
import com.mybatis.mappers.StudentMapper;
import com.mybatis.pojo.Student;
import com.mybatis.utils.MyBatisSqlSessionFactory;
public class StudentMapperTest {
@Test
public void test_insertStudent()
{
SqlSession session=null;
try {
// 获取配置文件
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
// 生成工厂对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 使用工厂对象生成sqlsession
session = sqlSessionFactory.openSession();
// 使用sqlsession获得映射接口的实现类对象,接口的引用指向实现类的对象
StudentMapper studentMapper = session.getMapper(StudentMapper.class);
Student student = new Student(2, "suwu150", "1730@qq.com",new Date());
studentMapper.insertStudent(student);
session.commit();
System.out.println("执行完毕");
} catch (IOException e) {
session.rollback();
e.printStackTrace();
}
}
@Test
public void test_deleteStudentById()
{
SqlSession session=null;
session = MyBatisSqlSessionFactory.openSession();//使用封装之后的类
// 使用sqlsession获得映射接口的实现类对象,接口的引用指向实现类的对象
StudentMapper studentMapper = session.getMapper(StudentMapper.class);
studentMapper.deleteStudentById(2);
session.commit();
System.out.println("执行完毕");
}
@Test
public void test_updateStudentById()
{
SqlSession session=null;
session = MyBatisSqlSessionFactory.openSession();//使用封装之后的类
// 使用sqlsession获得映射接口的实现类对象,接口的引用指向实现类的对象
StudentMapper studentMapper = session.getMapper(StudentMapper.class);
Student student = new Student();
student.setStudId(1);
student.setName("sususu");
student.setEmail("123443@136.com");
studentMapper.updateStudentById(student);
session.commit();
System.out.println("执行完毕");
}
@Test
public void test_findStudentById()
{
SqlSession session=null;
session = MyBatisSqlSessionFactory.openSession();//使用封装之后的类
// 使用sqlsession获得映射接口的实现类对象,接口的引用指向实现类的对象
StudentMapper studentMapper = session.getMapper(StudentMapper.class);
Student student = studentMapper.findStudentById(1);
System.out.println(student);
System.out.println("执行完毕");
}
@Test
public void test_findAllStudents()
{
SqlSession session=null;
session = MyBatisSqlSessionFactory.openSession();//使用封装之后的类
// 使用sqlsession获得映射接口的实现类对象,接口的引用指向实现类的对象
StudentMapper studentMapper = session.getMapper(StudentMapper.class);
List<Student> list = studentMapper.findAllStudents();
System.out.println(list);
System.out.println("执行完毕");
}
}

这样我们就完成了对Student对象的增删改查

以上所述是小编给大家介绍的Mybatis增删改查实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • mybatis实现增删改查_动力节点Java学院整理

    所需要用到的其他工具或技术: 项目管理工具 : Maven 测试运行工具 : Junit 数据库 : Derby Maven Dependencies: <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.7</version> </dependen

  • mybatis教程之增删改查_动力节点Java学院整理

    select 一个select 元素非常简单.例如: <!-- 查询学生,根据id --> <select id="getStudent" parameterType="String" resultMap="studentResultMap"> SELECT ST.STUDENT_ID, ST.STUDENT_NAME, ST.STUDENT_SEX, ST.STUDENT_BIRTHDAY, ST.CLASS_ID FR

  • 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> <!-- 拿到数据库

  • MyBatis存储过程、MyBatis分页、MyBatis一对多增删改查操作

    一.用到的实体类如下: Student.java package com.company.entity; import java.io.Serializable; import java.util.Date; public class Student implements Serializable{ private static final long serialVersionUID = 1L; private int id; private String name; private Date

  • 简述Mybatis增删改查实例代码

    编写一个简单的mybatis进行插入数据的实例 1 数据库建表 其中建表dob=Date of Birth 的意思 create table students (stud_id number primary key, name varchar2(20), email varchar2(20), dob date ); Oracle数据库中出现表已创建,则表示创建成功,如果出现名称已被使用,则可在建表之前进行删除操作:drop table students;或者进行级联删除drop table s

  • Spring boot + mybatis + Vue.js + ElementUI 实现数据的增删改查实例代码(二)

    在上篇文章给大家介绍了Spring boot + mybatis + Vue.js + ElementUI 实现数据的增删改查实例代码(一),接下来我们添加分页相关的依赖,时间紧张,直接上代码了,贴上我的pom文件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=

  • Spring boot + mybatis + Vue.js + ElementUI 实现数据的增删改查实例代码(一)

    环境搭建 spring boot的简介 以往我们开发时用到spring总是避免不了繁琐的配置,例如我们要配置一个数据库连接,可能需要以下几步: 1.编写jdbc.properties配置文件: 2.创建spring的配置文件,加入spring配置文件前缀.配置数据库连接信息以及sqlsessionFactory等等: 3.还要在web.xml文件中加入spring的监听. springboot的出现大大简化了项目的搭建过程(spring配置以及maven配置),让我们专注于应用功能的开发,而不是

  • python列表的增删改查实例代码

    names=["zhao00","qian01","sun02","li03","li03","li03","zhou04"] #print(names[]) 打印错误 print(names) 增 names.append("wu05") #增加到最后 names.insert(1,"zheng06") #增加到指定位置 改

  • Oracle + mybatis实现对数据的简单增删改查实例代码

    什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架. MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索.MyBatis 可以使用简单的XML 或注解用于配置和原始映射,将接口和 Java 的 POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录. 本文将详细介绍利用Oracle + mybatis实现对数据的简单增删改查的相关内容,下面话不多说了,来一起看看详细的介绍

  • JS操作对象数组实现增删改查实例代码

    1.介绍 最近帮朋友弄一个简单的针对json数组的增删改成页面,正好涉及到了js去操作对象数组实现增删改查功能.我估计很多朋友应该也会遇到这类操作,所以记录一下以便分享. 2.数据准备 这里我就以学生对象数组为例了,其实这个数组和json数组操作起来基本一致的,转换一下即可.例如可以使用JSON.parse将一串JSON字符串转换为js对象数组. 测试数据: // 学生对象数组 var students = [ {id:1, name: "张三", age: 14}, {id:2, n

  • Mybatis增删改查mapper文件写法详解

      1. 插入 <mapper namespace="需要实现接口的全类名"> <insert id="需要实现的接口里的方法名" parameterType="方法参数类型,如果是对象要写全类名"> INSERT sql命令(命令里通过#{}获取对象属性) <!--注意属性名区分大小写 --> </insert> <mapper> EG: <mapper namespace=&q

  • IntelliJ Idea SpringBoot 数据库增删改查实例详解

    SpringBoot 是 SpringMVC 的升级,对于编码.配置.部署和监控,更加简单 微服务 微服务是一个新兴的软件架构,就是把一个大型的单个应用程序和服务拆分为数十个的支持微服务.一个微服务的策略可以让工作变得更为简便,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议. Spring 为 微服务提供了一整套的组件-SpringClound , SpirngBoot 就是该基础. 第一个SpringBoot程序 这里使用的开发软件是IntelliJ Idea,和Eclipse

  • python链接oracle数据库以及数据库的增删改查实例

    初次使用python链接oracle,所以想记录下我遇到的问题,便于向我这样初次尝试的朋友能够快速的配置好环境进入开发环节. 1.首先,python链接oracle数据库需要配置好环境. 我的相关环境如下: 1)python:Python 3.6.3 (v3.6.3:2c5fed8, Oct 3 2017, 17:26:49) [MSC v.1900 32 bit (Intel)] on win32 2)oracle:11.2.0.1.0 64bit.这个是server版本号,在链接oracle

  • Java中SSM框架实现增删改查功能代码详解

    记录一下自己第一次整合smm框架的步骤. 参考博客和网站有:我没有三颗心脏 How2J学习网站 1.数据库使用的是mySql,首先创建数据库ssm1,并创建表student create database ssm1; use ssm1; CREATE TABLE student( id int(11) NOT NULL AUTO_INCREMENT, student_id int(11) NOT NULL UNIQUE, name varchar(255) NOT NULL, age int(1

随机推荐