1 项目说明

项目采用 maven 组织 ,依赖 mysql-connector-java,org.mybatis,junit pom 依赖如下:

mysql 数据连接 :

mysql-connector-java

mybatis

mybatis

junit

junit 单元测试,本项目采用junit 跑单元测试,4.12 版本采用 @Test注解 测试方法,3.X 版本采用继承来实现测试方法

<dependencies>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.30</version>
</dependency>
</dependencies>

2 项目结构

3 DB 脚本

DROP TABLE IF EXISTS `account`;

CREATE TABLE `account` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(45) DEFAULT NULL,

`money` decimal(10,0) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=103 DEFAULT CHARSET=utf8;

-- ----------------------------

-- Records of account

-- ----------------------------

INSERT INTO `account` VALUES ('', 'hbb0b0', '');

INSERT INTO `account` VALUES ('', 'kael', '');

4 配置与代码说明

  • DB 连接信息与mybatis 配置
<?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>

<typeAliases>

<typeAlias alias="Account" type="hbb0b0.JavaBasic.model.Account"/>

</typeAliases>

<environments default="development">

<environment id="development">

<transactionManager type="JDBC"/>

<dataSource type="POOLED">

<property name="driver" value="com.mysql.jdbc.Driver"/>

<property name="url" value="jdbc:mysql://localhost:3306/study" />

<property name="username" value="root"/>

<property name="password" value="sqlsa"/>

</dataSource>

</environment>

</environments>

<mappers>

<mapper resource="hbb0b0/JavaBasic/mapper/AccountMapper.xml"/>

</mappers>

</configuration>
  • model
package hbb0b0.JavaBasic.model;

import java.io.Serializable;

public class Account implements Serializable{

private int id;

private String name;

private double money;

public Account() {

super();

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public double getMoney() {

return money;

}

public void setMoney(double money) {

this.money = money;

}

@Override

public String toString() {

return "Account [id=" + id + ", name=" + name + ", money=" + money

+ "]";

}

}
  • xml mapper
<?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="hbb0b0.JavaBasic.AccountMapper">

<select id="getOne" resultType="hbb0b0.JavaBasic.model.Account">

select * from account limit 1,1

</select>

<select id="getList" resultType="hbb0b0.JavaBasic.model.Account">

select * from account

</select>

<insert id="insertAccount" parameterType="hbb0b0.JavaBasic.model.Account">

insert into account (name,money)

values (#{name},#{money})

</insert>

<delete id="deleteAccount" parameterType="java.lang.String">

delete from account where name like '${name}%'

</delete>

</mapper>
  • session简单封装
package hbb0b0.JavaBasic.dbTool;

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 DBTool {

public static SqlSession getSession() throws IOException

{

String resource = "Configuration.xml";

InputStream inputStream = Resources.getResourceAsStream(resource);

SqlSessionFactory sqlSessionFactory =

new SqlSessionFactoryBuilder().build(inputStream);

SqlSession session = sqlSessionFactory.openSession();

return session;

}

}
  • JUNit
package hbb0b0.JavaBasic.mybatis;

import java.io.IOException;

import java.util.Date;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import hbb0b0.JavaBasic.dbTool.DBTool;

import hbb0b0.JavaBasic.model.Account;

import org.junit.*;

import static org.junit.Assert.*;

/**

* Unit test for simple App.

*/

public class AppTest {

@Test

public void getOne_Test() throws IOException {

SqlSession session = DBTool.getSession();

try {

Account account = session.selectOne("hbb0b0.JavaBasic.AccountMapper.getOne");

assertNotNull(account);

} finally {

session.close();

}

}

@Test

public void getList_Test() throws IOException {

SqlSession session = DBTool.getSession();

try {

List<Account> accountList = session

.selectList("hbb0b0.JavaBasic.AccountMapper.getList");

assertNotNull(accountList);

Assert.assertTrue(accountList.size() == 102);

} finally {

session.close();

}

}

@Test

public void insert_Test() throws IOException {

SqlSession session = DBTool.getSession();

try {

Account account = new Account();

account.setName("mybatisInsert-" + new Date().toString());

account.setMoney(10000);

int result = session.insert(

"hbb0b0.JavaBasic.AccountMapper.insertAccount", account);

session.commit();

Assert.assertTrue(result > 0);

} finally {

session.close();

}

}

@After

public void SetUp() throws IOException {

SqlSession session = DBTool.getSession();

try {

Account account = new Account();

account.setName("mybatisInsert");

int result = session.delete(

"hbb0b0.JavaBasic.AccountMapper.deleteAccount",account);

session.commit();

//Assert.assertTrue(result > 0);

} finally {

session.close();

}

}

}

测试结果:

Java DB 访问之 mybatis mapper xml 配置方式的更多相关文章

  1. SpringBoot系列-整合Mybatis(XML配置方式)

    目录 一.什么是 MyBatis? 二.整合方式 三.实战 四.测试 本文介绍下SpringBoot整合Mybatis(XML配置方式)的过程. 一.什么是 MyBatis? MyBatis 是一款优 ...

  2. SpringBoot 整合 Mybatis + Mysql——XML配置方式

    一.介绍 SpringBoot有两种方法与数据库建立连接,一种是集成Mybatis,另一种用JdbcTemplate,本文主要讨论集成Mybatis方式. SpringBoot整合Mybatis也有两 ...

  3. Spring Boot 2.x基础教程:使用MyBatis的XML配置方式

    上一篇我们介绍了如何在Spring Boot中整合我们国人最常用的MyBatis来实现对关系型数据库的访问.但是上一篇中使用了注解方式来实现,而对于很多MyBatis老用户还是习惯于XML的开发方式, ...

  4. Mybatis mapper.xml 配置

    <!-- xml的标准格式 --><?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE ...

  5. mybatis Mapper.xml和Mapper.java

    mybatis Mapper.xml和Mapper.java 通过Mapper.xml和Mapper.java来实现mybatis.环境和入门的一样的.关键:Mapper.xml + Mapper.j ...

  6. mybatis mapper xml文件配置resultmap时,id行和result行有什么区别?

    mybatis mapper xml文件配置resultmap时,id行和result行有什么区别? <resultMap id = "CashInvoiceMap" typ ...

  7. JAVA - Intellij IDEA 中去掉mybatis Mapper.xml背景色

    JAVA - Intellij IDEA 中去掉mybatis Mapper.xml背景色 1:现在公司中使用mybatis的频率非常高,一般都会用MBG来生成基础的代码文件.在intellij中查看 ...

  8. springboot访问出错,mapperScan导包错误java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.base.BaseSelectProvider.<init>() at java.lang.Class.getConstructor0(Class.java:3082) ~[na:1.8.0_172] at java.

    2019-08-06 12:42:03.153 ERROR 10080 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Se ...

  9. Spring Boot 数据访问集成 MyBatis 与事物配置

    对于软件系统而言,持久化数据到数据库是至关重要的一部分.在 Java 领域,有很多的实现了数据持久化层的工具和框架(ORM).ORM 框架的本质是简化编程中操作数据库的繁琐性,比如可以根据对象生成 S ...

随机推荐

  1. C# 接口使用方法

    之前一直不理解接口这一概念,今天无意中翻书,网上查资料悟道其中的道理,现在工作没有用到interface这一块,怕以后会遇到忘记实现的方法便记录下来,哪里写的不对希望读者指出,话不多说,接下来看我对接 ...

  2. 查看Flink的Job Graph时的问题

    Flink运行Job时,可以通过Job Graph看到执行计划,但是如果用IE,会被坑: 换成谷歌Chrome,就OK了: 这个Job Grap,好像是SVG的,可能是IE不支持SVG,需要安装插件才 ...

  3. 原生JS的Ajax

    转自:https://www.cnblogs.com/yufann/p/JS-Ajax.html 1.创建一个Ajax对象 非IE6浏览器:var obj = new XMLHttpReuqest() ...

  4. Android Studio 快速开发

    概述 现如今开发越来越追求效率和节奏,节省出时间做更多的事情,除了开发技术上的封装等,开发工具的使用技巧也是很重要的,今天就根据自己的经验来给大家介绍一下Android Studio快速开发之道. P ...

  5. jmeter+ant+jenkins的自动化接口测试

    一.Jenkins安装配置 1.安装配置JDK1.7+环境变量: 2.下载jenkins.war,放入D:\jenkins目录下,目录位置随意: Jenkins启动方法: cmd进入Jenkins目录 ...

  6. JAVA Socket编程(一)之UDP通信

    常见的通讯协议有udp和tcp. --将数据及源.目的封装在数据包中,不需要建立连接: --每个数据包的大小限制在64k以内: --因无连接,是不可靠协议: --不需要建立连接,所以传输速度快,但是容 ...

  7. 视觉SLAM中相机详解

    视觉SLAM中,通常是指使用相机来解决定位和建图问题. SLAM中使用的相机往往更加简单,不携带昂贵的镜头,以一定的速率拍摄周围的环境,形成一个连续的视频流. 相机分类: 单目相机:只是用一个摄像头进 ...

  8. Create 命令详解

    mkdir:创建一个目录 /mkdir a b c :创建同级目录 /mkdir -p aa/bb/cc: 递归创建目录touch:修改文件时间戳,或者新建一个不存在的文件 /-a 更改存取时间 /m ...

  9. K:java中正则表达式的使用说明及其举例

    从Java1.4起,java核心API就引入了java.util.regex程序包来处理正则表达式,并使用该包下的相关类进行字符串的匹配.搜索.提取.分析结构化内容等工作.需要注意的是,正则表达式本身 ...

  10. Java 并发编程:volatile的使用及其原理

    Java并发编程系列: Java 并发编程:核心理论 Java并发编程:Synchronized及其实现原理 Java并发编程:Synchronized底层优化(轻量级锁.偏向锁) Java 并发编程 ...