1.说明

在本节的学习中,笔者将会带领读者使用maven来创建项目,当然你也可以使用Gradle,这些都是架包的管理,关于这些工具是如何使用,笔者在这里就不给出了,读者可以自己去网上查找。同时笔者版本管理是用Git,读者也可以研究如何使用。所以笔者的源码都放在了GitHub上了,后续笔者会告诉你下载的地址。

2.创建STUDENTS表

下面是创建表的SQL语句:

CREATE TABLE STUDENTS
(
stud_id int(11) NOT NULL AUTO_INCREMENT,
name varchar(50) NOT NULL,
email varchar(50) NOT NULL,
dob date DEFAULT NULL,
PRIMARY KEY (stud_id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
/*Sample Data for the students table */
insert into students(stud_id,name,email,dob)
values (1,'Student1','student1@gmail.com','1983-06-25');
insert into students(stud_id,name,email,dob)
values (2,'Student2','student2@gmail.com','1983-06-25');

3.创建Java的工程

下面我们一起创建Java工程和配置MyBatis的依赖架包。

1)        创建一个Java和工程,名字叫mybatis.com

2)        只要你电脑安装了maven之后,你就可以New|Maven|Maven Project

3)        点击Next时,记得勾选Create a simple project(skip archetype selection).

4)        New Maven project,填写信息

5)        将生成的pom.xml的文件,添加junit-4.11.jar、mysql-connectoer-java-5.1.22.jar等的依赖架包。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.owen.mybatis</groupId><artifactId>mybatis-parent</artifactId><version>0.0.1</version><name>mybatis-parent</name><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><java.version>1.6</java.version><junit.version>4.11</junit.version><slf4j.version>1.7.5</slf4j.version><log4j.version>1.2.17</log4j.version><mybatis.version>3.2.2</mybatis.version><mysql.version>5.1.21</mysql.version><maven.compiler.plugin>2.3.2</maven.compiler.plugin></properties><build><finalName>${project.artifactId}</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>${maven.compiler.plugin}</version><configuration><source>${java.version}</source><target>${java.version}</target><encoding>${project.build.sourceEncoding}</encoding></configuration></plugin></plugins></build><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version><scope>test</scope></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>${mybatis.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>${slf4j.version}</version><scope>runtime</scope></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.version}</version><scope>runtime</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version><scope>runtime</scope></dependency></dependencies></project>

6)        创建 log4j.properties的文件和放到src/main/resources的目录下

log4j.rootLogger=INFO, stdoutlog4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%-5p] %c - %m%nlog4j.logger.com.owen.mybatis=DEBUG

4. 创建mybatis-config.xml和Student  Mapper.xml的配置文件

让我们创建MyBatis的主要的配置文件mybatis-config.xml,这个包含了数据库的连接,加载的对象别名等。当然,我们的数据库加载的信息将会配置到另外一份的文件中。还有StudentMapper.xml的文件,包含了SQL的声明。

1)        创建一个文件appliation.properties的文件,里面包含了数据库连接和信息。

################### DataSource Configuration ##########################jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=root

2)        创建一个mybatis-config.xml的文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><properties resource="application.properties"/><typeAliases><package name="com.owen.mybatis.domain"/></typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${jdbc.driverClassName}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></dataSource></environment></environments><mappers><mapper resource="com/owen/mybatis/mappers/StudentMapper.xml"/></mappers></configuration>

3)        创建StudentMapper.xml的文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.owen.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=#{studId}</select><insert id="insertStudent" parameterType="Student">INSERT INTO STUDENTS(STUD_ID,NAME,EMAIL,DOB) VALUES(#{studId},#{name},#{email},#{dob})</insert><update id="updateStudent" parameterType="Student">UPDATE STUDENTS SET NAME=#{name}, EMAIL=#{email}, DOB=#{dob} WHERE STUD_ID=#{studId}</update></mapper>

5. 创建单例类:MyBatisSqlSessionFactory

package com.owen.mybatis.util;import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;import org.apache.ibatis.datasource.DataSourceFactory;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;/*** 与数据库连接的JDBC层* @author OwenWilliam 2016-6-18* @since* @version v1.0.0**/
public class MyBatisSqlSessionFactory
{private static SqlSessionFactory sqlSessionFactory;private static final Properties PROPERTIES = new Properties();static{try {//获取数据库连接信息InputStream is = DataSourceFactory.class.getResourceAsStream("/application.properties");PROPERTIES.load(is);} catch (IOException e) {e.printStackTrace();}}/*** 使用单例模式操作* @return*/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){throw new RuntimeException(e.getCause());}finally {if(inputStream != null){try {inputStream.close();} catch (IOException e) {}}}}return sqlSessionFactory;}public static SqlSession getSqlSession() {return getSqlSessionFactory().openSession();}/*** 数据库连接,这个只是测试中应用* @return*/public static Connection getConnection() {String driver = PROPERTIES.getProperty("jdbc.driverClassName");String url = PROPERTIES.getProperty("jdbc.url");String username = PROPERTIES.getProperty("jdbc.username");String password = PROPERTIES.getProperty("jdbc.password");Connection connection = null;try {Class.forName(driver);connection = DriverManager.getConnection(url, username, password);} catch (Exception e) {throw new RuntimeException(e);} return connection;}
}

6.创建StudentMapper接口和StudentService类

我们将创建一个StudentMapper的接口,接口中定义的就是要与映射文件StudentMapper,xml中配置的id要保持一样,同时我们创建个StudentService的类,来继承StudentMapper的接口。

1)        StudentMapper的接口类。

package com.owen.mybatis.mappers;import java.util.List;import com.owen.mybatis.domain.Student;
/*** 服务层操作 Strudent 接口* 与StudentMapper.xml中SQL的id要对应上* 查找所:StudentResult* 查找个体:Student* 参数也要对应xml中的id* @author OwenWilliam 2016-6-18* @since* @version v1.0.0**/
public interface StudentMapper
{/*** 查找所有有Student* @return*/List<Student> findAllStudents();/*** 通过ID号查找Student* @param id* @return*/Student findStudentById(Integer id);/*** 插入新的Student* @param student*/void insertStudent(Student student);/*** 更新Student* @param student*/void updateStudent(Student student);
}

2)        创建StudentService的类要继承StudentMapper的接口。

package com.owen.mybatis.services;import java.util.List;import org.apache.ibatis.session.SqlSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import com.owen.mybatis.domain.Student;
import com.owen.mybatis.mappers.StudentMapper;
import com.owen.mybatis.util.MyBatisSqlSessionFactory;/*** Student的业务 层操作,具体操作* @author OwenWilliam 2016-6-18* @since* @version v1.0.0**/
public class StudentService
{
private Logger logger = LoggerFactory.getLogger(getClass());/*** 查找所有的Student* @return*/public List<Student> findAllStudents(){SqlSession sqlSession = MyBatisSqlSessionFactory.getSqlSession();try {//获得Student的映射StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);return studentMapper.findAllStudents();} finally {sqlSession.close();}}/*** 通过ID号查找Student* @param studId* @return*/public Student findStudentById(Integer studId){logger.debug("Select Student By ID :{}", studId);SqlSession sqlSession = MyBatisSqlSessionFactory.getSqlSession();try {StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);return studentMapper.findStudentById(studId);} finally {sqlSession.close();}}/*** 创建Student* @param student*/public void createStudent(Student student){SqlSession sqlSession = MyBatisSqlSessionFactory.getSqlSession();try {StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);studentMapper.insertStudent(student);sqlSession.commit();} finally {sqlSession.close();}}/*** 更新Student* @param student*/public void updateStudent(Student student){SqlSession sqlSession = MyBatisSqlSessionFactory.getSqlSession();try {StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);studentMapper.updateStudent(student);sqlSession.commit();} finally {sqlSession.close();}}
}

7. 创建JUnit测试类

下面我们创建一个StudentServiceTest.java的测试类,用来测试StudentService的方法。

package com.owen.mybatis.services;import java.util.Date;
import java.util.List;import org.junit.AfterClass;import static org.junit.Assert.*;import org.junit.BeforeClass;
import org.junit.Test;import com.owen.mybatis.domain.Student;/*** 测试类* @author OwenWilliam 2016-6-18* @since* @version v1.0.0**/
public class StudentServiceTest
{private static StudentService studentService;@BeforeClasspublic static void setup(){studentService = new StudentService();TestDataPopulator.initDatabase();}@AfterClasspublic static void teardown(){studentService = null;}@Testpublic void testFindAllStudents() {List<Student> students = studentService.findAllStudents();assertNotNull(students);for (Student student : students){assertNotNull(student);//System.out.println(student);}}@Testpublic void testFindStudentById() {Student student = studentService.findStudentById(1);assertNotNull(student);}@Testpublic void testCreateUStudent() {Student student = new Student();int id = 4;student.setStudId(id);student.setName("student_"+id);student.setEmail("student_"+id+"gmail.com");student.setDob(new Date());studentService.createStudent(student);Student newStudent = studentService.findStudentById(id);assertNotNull(newStudent);assertEquals("student_"+id, newStudent.getName());assertEquals("student_"+id+"gmail.com", newStudent.getEmail());}@Test   public void testUpdateStudent() {int id = 2;Student student =studentService.findStudentById(id);student.setStudId(id);student.setName("student_"+id);student.setEmail("student_"+id+"gmail.com");Date now = new Date();student.setDob(now);studentService.updateStudent(student);Student updatedStudent = studentService.findStudentById(id);assertNotNull(updatedStudent);assertEquals("student_"+id, updatedStudent.getName());assertEquals("student_"+id+"gmail.com", updatedStudent.getEmail());}
}

开启MyBatis(二)创建工程相关推荐

  1. Orleans学习总结(二)--创建工程

    通过第一篇Orleans学习总结(一)--入门认识我们大致知道知道是干嘛的了,下面我们来动手造一个传说中的神秘的高并发集群Orleans程序. 一.创建四个C#工程 1.IGrain工程,用来定义各种 ...

  2. Qt-ros插件:创建工程,编译实现操控小乌龟(二)

    声明:本插件依赖于更新的qt5.9,不需安装qt,安装插件自行安装qt.详情见点击打开链接 1.创建工程 最后点击完成即可. 2,建好后右键点击src,打开Terminal,执行指令建包catkin_ ...

  3. 【开发环境】Ubuntu 中使用 VSCode 开发 C/C++ ③ ( 创建工程目录 | 添加 C++ 源代码 | 代码自动提示 )

    文章目录 一.创建工程目录 二.添加 C++ 源代码 三.代码自动提示 可以参考官方提供的文档 : https://code.visualstudio.com/docs/cpp/config-linu ...

  4. 【开发环境】StarUML 工具 ( 下载软件 | StarUML 安装 | StarUML 创建工程 )

    文章目录 一.StarUML 下载 二.StarUML 安装 三.StarUML 创建工程 一.StarUML 下载 推荐下载这个 UML 下载 版本的 StarUML ; 版本很老 , 但是足够使用 ...

  5. 【SeeMusic】创建 SeeMusic 工程并编辑相关内容 ( 创建工程 | 导入 MIDI 文件 | 导入音频 | 导入视频 )

    SeeMusic 系列文章目录 [SeeMusic]下载安装并注册 SeeMusic 软件 [SeeMusic]创建 SeeMusic 工程并编辑相关内容 ( 创建工程 | 导入 MIDI 文件 | ...

  6. 第1章 Qt概述和下载安装及创建工程

    目录 1.1 什么是Qt 1.2 Qt的下载及安装 1.3 开发界面及创建工程介绍 1.1 什么是Qt 学习一项技能,首先要了解一下这项技能能做什么,那Qt到底是什么,能用它做什么呢? Qt是什么?简 ...

  7. vivado 如何创建工程模式_基于Vivado的FPGA高性能开发研修班2019年8月30日上海举行...

    一.课程介绍: 从7系列FPGA开始,Xilinx提出了Vivado Design Suite设计软件,提供全新构建的SoC 增强型.以 IP 和系统为中心的下一代开发环境,以解决系统级集成和实现的生 ...

  8. mybatis(二)xml配置文件详细说明

    目录 文章目录 mybatis(二)xml配置方式详细说明 2.1.使用properties配置属性 2.1.1.引入外部properties文件或在properties标签内定义属性 2.1.1.1 ...

  9. iar使用:创建工程

    目录 一 创建工作区 二 创建新工程 三 向工程中添加文件 四 设置工程options 五 编译源文件 六 调整优化等级 七 链接 一 创建工作区 1 在创建工程之前,必须先创建一个工作区用来存放工程 ...

  10. 流场可视化工程dlb-dynamicdr部署日志:阶段二:工程本地编译

    流场可视化工程dlb-dynamicdr部署日志:阶段二: 工程本地编译 2022-02-25 阶段一 阶段二:勘误 阶段三:为之前的库编译生成静态链接库 .a文件 Par_METIS重新生成 MET ...

最新文章

  1. vivo手机计算机错误怎么弄,手机计算器出错,原因竟是人性化设计
  2. 人类史上最伟大的 PPT,马斯克的 39 页火星计划PPT
  3. 在持续交付中加入自动化验收测试支持
  4. PHP 5.6 Apache配置
  5. MySQL 事务隔离
  6. 优秀程序员的45个习惯
  7. 微软 VSCode IDE 源码分析揭秘
  8. java的封装性的优点_18、Java的三大特性之封装
  9. 对hash签名失败_vue项目中微信jssdk在ios签名失败
  10. shell:判断某个变量是否包含字符串/变量的方法
  11. 数据库审计产品购买者指南
  12. extend the gridview control
  13. 互联网时代: 从Uber的供需匹配看开发需求
  14. 设计模式那点事读书笔记(3)----建造者模式
  15. Python机器学习:值得反复练习的8个项目
  16. 比较神秘的网址!也许有用!收藏一下!
  17. 国足亚洲杯首败的背后:与韩国队只差一个孙兴民?
  18. 计算机代表的数字,计算机中数的表示
  19. Enovia 用户操作手册
  20. Netconf配置及其RPC和Notification下发流程解析

热门文章

  1. bzoj1051 [HAOI2006]受欢迎的牛
  2. 垃圾收集(GC)中如何确定哪些内存是垃圾
  3. Animator 的总结
  4. Spark sql读取数据库和ES数据进行处理代码
  5. C#与Javascript变量、函数之间的相互调用
  6. 面试官是如何看程序员的简历
  7. 游戏开发之测试篇2(C++)
  8. 使用pythonping检查设备的连通性并记录可达设备(eNSP模拟器)
  9. IS-IS详解(六)——IS-IS LSP机制详解
  10. 加权二叉树的实现与单元测试(python)