在这里我们使用 MyBatis 开发一个简单的 Java 项目(默认你已安装JDK和MySQL及会使用Maven的基本操作),可以与上一篇通过底层操作数据进行比较

1、新建表 students,插入数据

SQL Code

 CREATE TABLE students(
stud_id INT(11) NOT NULL AUTO_INCREMENT,
stud_name VARCHAR(50) NOT NULL,
stud_email VARCHAR(50) NOT NULL,
stud_dob DATE DEFAULT NULL,
PRIMARY KEY (stud_id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1; INSERT INTO students(stud_id,stud_name,stud_email,stud_dob)
VALUES (1,'Student1','student1@qq.com','1992-01-01');
INSERT INTO students(stud_id,stud_name,stud_email,stud_dob)
VALUES (2,'Student2','student2@qq.com','1993-12-31');

2、新建一个Maven项目,在pom.xml中引入Mybatis.jar

2.1 创建Maven项目,名为HzMyBatis

2.2 在pom.xml中引入相应的jar包

pom.xml code

 <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
</dependency>
<!-- 日志框架 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>

说明:mysql-connector-java-5.1.39 mysql数据库的驱动包、mybatis-3.4.1 Mybatis包、lombok-1.18.2 减少重复代码量(getter/setter/toString等需要注解标注)

3、新建 mybatis-config.xml 和映射器 StudentMapper.xml 配置文件

mybatis-config.xml:包括数据库连接信息,类型别名等信息

StudentMapper.xml:映射的SQL语句

这两个xml文件需要放到classpath路径下

mybatis-config.xml Code

 <?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>
<!-- 设置Bean别名 -->
<typeAliases>
<typeAlias alias="Student" type="com.hz.mybatis.bean.Student" />
</typeAliases> <!-- 设置当前环境 -->
<environments default="development">
<environment id="development">
<!-- 开启事务 JDBC使用数据库自己的事务(局部事务) -->
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://127.0.0.1:3306/hadoop" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments> <!-- 映射文件路径 -->
<mappers>
<mapper resource="com/hz/mybatis/mapper/StudentMapper.xml" />
</mappers>
</configuration>

StudentMapper.xml Code

 <?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="com.hz.mybatis.mapper.StudentMapper">
<resultMap type="Student" id="StudentResult">
<id property="studId" column="stud_id" />
<result property="name" column="stud_name" />
<result property="email" column="stud_email" />
<result property="dob" column="stud_dob" />
</resultMap> <select id="findAllStudents" resultMap="StudentResult">
SELECT * FROM STUDENTS
</select> <select id="findStudentById" parameterType="java.lang.Integer" resultType="Student">
SELECT STUD_ID AS STUDID, STUD_NAME AS NAME, STUD_EMAIL AS EMAIL, STUD_DOB AS DOB FROM STUDENTS WHERE STUD_ID = #{Id}
</select> <insert id="insertStudent" parameterType="Student">
INSERT INTO STUDENTS(STUD_ID, STUD_NAME,STUD_EMAIL,STUD_DOB)
VALUES(#{studId}, #{name}, #{email}, #{dob})
</insert>
</mapper>

3、新建 MyBatisSqlSessionFactory 单例模式类

MyBatisSqlSessionFactory.java Code

import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; /**
* 创建单例SqlSessionFactory
* @author DONG
*
*/
public class MyBatisSqlSessionFactory { private static SqlSessionFactory sqlSessionFactory; public static SqlSessionFactory getSqlSessionFactory(){
if (sqlSessionFactory == null) {
InputStream inputStream;
try {
inputStream = Resources.getResourceAsStream("mybatis-config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (Exception e) {
e.printStackTrace();
}
}
return sqlSessionFactory;
}
}

4、新建映射器 StudentMapper 接口和 StudentService 类

创建一个 StudentMapper 接口,其定义的方法名和在 Mapper XML 配置文件定义的 SQL 映射语 句名称相同

创建一个 StudentService.java 类,包含了一些业务操作的实现

1、首先, 创建 JavaBean Student.java

Student.java Code

 import java.util.Date;

 import lombok.Data;

 @Data
public class Student { private Integer studId;
private String name;
private String email;
private Date dob; }

2、创建映射器 Mapper 接口 StudentMapper.java 其方法签名和 StudentMapper.xml 中定义的 SQL 映射定义名
相同

StudentMapper.java Code

 import java.util.List;

 import com.hz.mybatis.bean.Student;

 public interface StudentMapper {
List<Student> findAllStudents();
Student findStudentById(Integer id);
void insertStudent(Student student);
}

3、现在创建 MyBatisStudentService.java 实现对表 students 的数据库操作

 import java.util.List;

 import org.apache.ibatis.session.SqlSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import com.hz.mybatis.bean.Student;
import com.hz.mybatis.mapper.StudentMapper;
import com.hz.mybatis.util.MyBatisSqlSessionFactory; /**
* 学生业务操作
* @author DONG
*
*/
public class MyBatisStudentService { private static Logger logger = LoggerFactory.getLogger(MyBatisStudentService.class); /**
* 查询所有学生信息
* @return
*/
public List<Student> findAllStudents(){
SqlSession sqlSession = MyBatisSqlSessionFactory.openSession();
logger.debug("获取sqlSession信息: ", sqlSession);
try {
StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
return studentMapper.findAllStudents();
} finally {
sqlSession.close();
}
} /**
* 通过学生ID查询学生信息
* @param studId
* @return
*/
public Student findStudentById(Integer studId){
logger.debug("通过学生ID查询学生信息: ", studId); SqlSession sqlSession = MyBatisSqlSessionFactory.openSession(); try {
StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
return studentMapper.findStudentById(studId);
} finally {
sqlSession.close();
}
} /**
* 插入学生信息
*/
public void insertStudent(Student student){
SqlSession sqlSession = MyBatisSqlSessionFactory.openSession(); try {
StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
studentMapper.insertStudent(student);
} finally {
sqlSession.close();
} }
}

5、新建一个 JUnit 测试类来测试 MyBatisStudentService

 import java.util.List;

 import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test; import com.hz.mybatis.bean.Student;
import com.hz.mybatis.service.MyBatisStudentService; /**
* 测试
* @author DONG
*
*/
public class TestStudentMapper { private static MyBatisStudentService studentService; @BeforeClass
public static void setup(){
studentService = new MyBatisStudentService();
} @AfterClass
public static void teardown(){
studentService = null;
} @Test
public void testFindAllStudents(){
List<Student> students = studentService.findAllStudents(); for (Student student : students) {
System.out.println(student);
}
}
}

MyBatis 安装和配置的更多相关文章

  1. Maven的下载,安装,配置,测试,初识以及Maven私服

    :Maven目录分析 bin:含有mvn运行的脚本 boot:含有plexus-classworlds类加载器框架 conf:含有settings.xml配置文件 lib:含有Maven运行时所需要的 ...

  2. Redis安装与配置Redis安装与配置

    今天在使用Redis的时候遇到了一些问题,这个问题的解决,发现很多人使用Redis的时候没有一点安全意识.所以又重温了一下Redis,觉得应该写一下Redis的安全和配置. Redis安装与配置Red ...

  3. JDK安装与配置

    JDK安装与配置 一.下载 JDK是ORACLE提供免费下载使用的,官网地址:https://www.oracle.com/index.html 一般选择Java SE版本即可,企业版的选择Java ...

  4. Node.js 教程 01 - 简介、安装及配置

    系列目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 Node.js 教程 0 ...

  5. 烂泥:redis3.2.3安装与配置

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 前一段时间写过一篇codis集群的文章,写那篇文章主要是因为当时的项目不支持redis自 ...

  6. mysql源码包手动安装、配置以及测试(亲测可行)

    笔记编者:小波/qq463431476博客首页:http://www.cnblogs.com/xiaobo-Linux/ 记下这篇mysql笔记,望日后有用! redhat6采用centos yum源 ...

  7. 环境搭建系列-系统安装之centos 6.5安装与配置

    按照国际惯例,系列目录先奉上: 系列一:系统安装之centos 6.5安装与配置 系列二:准备工作之Java环境安装 系列三:数据为先之MySQL读写集群搭建 系列四:谈分布式之RabbitMQ集群搭 ...

  8. ZooKeeper安装与配置

    一. 单机安装.配置: 1. 下载zookeeper二进制安装包下载地址:http://apache.dataguru.cn/zookeeper/zookeeper-3.4.3/zookeeper-3 ...

  9. mac 下JDK 与 tomcat 的安装与配置

    一.Mac下JDK的安装 1.先检测Mac是否已经安装过JDK,在终端中输入java 或者 javac 显示说明,表明已经安装过JDK,JDK版本查询终端键入java -version,终端会返回JD ...

随机推荐

  1. 顺序表应用5:有序顺序表归并(SDUT 3329)

    Problem Description 已知顺序表A与B是两个有序的顺序表,其中存放的数据元素皆为普通整型,将A与B表归并为C表,要求C表包含了A.B表里所有元素,并且C表仍然保持有序. Input ...

  2. 转:玩转HTML5移动页面(动效篇)

    作为一名前端,在拿到设计稿时你有两种选择: 1.快速输出静态页面 2.加上高级大气上档次狂拽炫酷屌炸天的动画让页面动起来 作为一个有志向的前端,当然是选2啦!可是需求时间又很短很短,怎么办呢? 这次就 ...

  3. BZOJ 4388 [JOI2012春季合宿]Invitation (线段树、二叉堆、最小生成树)

    题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=4388 题解 模拟Prim算法? 原题所述的过程就是Prim算法求最大生成树的过程.于是我 ...

  4. IDEA如何将写好的java类(UDF函数)打成jar包上传linux

    一.编写一个UDF函数,实现将字符串大写转小写 import org.apache.hadoop.hive.ql.exec.UDF; import org.apache.hadoop.io.Text; ...

  5. HR问“你目前有几个offer”,聪明人会怎么说?

    点击上方“程序员江湖”,选择“置顶或者星标” 你关注的就是我关心的!   一个朋友和我聊天,说起自己最近被虐的面试经历.他985毕业,工作3年,看中了一家月薪1.5万的工作,准备跳槽.虽然在北京不算高 ...

  6. linux下无root源码安装软件

    先进入源码文件夹下指定安装路径 ./configure --prefix=/public/home/ztu/usr/samtools 编译 make 安装 make install 写入环境变量 vi ...

  7. D建立app项目(mui)

    参考 http://dev.dcloud.net.cn/mui/getting-started/ 1.ios需要下载iTunes,确保手机能连上电脑 2.mui可参考手册 http://dev.dcl ...

  8. 转:VMware 15 安装 MAC OS 10.13 原版(详细图文教程)

    -----------------转载------------------------ 原文:https://blog.csdn.net/qq_40147863/article/details/847 ...

  9. This sample is for changing from “float64” to “int” for values did unmarshal using map[string]interface{}. When it did unmarshal using map[string]interface{}, a number with “int” was changed to “floa

    This sample is for changing from “float64” to “int” for values did unmarshal using map[string]interf ...

  10. System.Windows.Forms.Timer、System.Timers.Timer、System.Threading.Timer的差别和分别什么时候用

    System.Windows.Forms.Timer.System.Timers.Timer.System.Threading.Timer的 区别和用法http://space.itpub.net/1 ...