Java DB 访问(三)mybatis mapper interface接口
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 代码说明
MyDataSourceFactory
package hbb0b0.JavaBasic.mybatis03; import java.util.Properties; import javax.sql.DataSource; import org.apache.ibatis.datasource.DataSourceFactory; import org.apache.ibatis.datasource.pooled.PooledDataSource; public class MyDataSourceFactory implements DataSourceFactory { private Properties prop; public DataSource getDataSource() { PooledDataSource ds = new PooledDataSource(); ds.setDriver(prop.getProperty("driver")); ds.setUrl(prop.getProperty("url")); ds.setUsername(prop.getProperty("user")); ds.setPassword(prop.getProperty("password")); return ds; } public void setProperties(Properties prprts) { prop = prprts; } }
- 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 + "]"; } }
- mapper interface
package hbb0b0.JavaBasic.mybatis03; import org.apache.ibatis.annotations.Select; public interface AccountMapper { @Select("SELECT * FROM Account WHERE id = #{id}") Account getAccountById(int id); }
- session简单封装
package hbb0b0.JavaBasic.mybatis03; import java.util.Properties; import javax.sql.DataSource; import org.apache.ibatis.mapping.Environment; import org.apache.ibatis.session.Configuration; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.apache.ibatis.transaction.TransactionFactory; import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory; public class DbTool { private static SqlSessionFactory m_sessionFactory; private static void initSessionFactory() { Properties prop = new Properties(); prop.setProperty("driver", "com.mysql.jdbc.Driver"); prop.setProperty("url", "jdbc:mysql://localhost:3306/Study"); prop.setProperty("user", "root"); prop.setProperty("password", "sqlsa"); MyDataSourceFactory mdsf = new MyDataSourceFactory(); mdsf.setProperties(prop); DataSource ds = mdsf.getDataSource(); TransactionFactory trFact = new JdbcTransactionFactory(); Environment environment = new Environment("development", trFact, ds); Configuration config = new Configuration(environment); config.addMapper(AccountMapper.class); m_sessionFactory = new SqlSessionFactoryBuilder().build(config); } public static SqlSessionFactory GetSqlSessionFactory() { if(m_sessionFactory==null) { initSessionFactory(); } return m_sessionFactory; } }
- JUNit
package hbb0b0.JavaBasic.mybatis03; import static org.junit.Assert.assertNotNull; import java.io.IOException; import org.apache.ibatis.session.SqlSession; import org.junit.Assert; import org.junit.Test; import java.lang.System; /** * Unit test for simple App. */ public class AppTest { @Test public void getOne_Test() throws IOException { SqlSession session = DbTool.GetSqlSessionFactory().openSession(); try { AccountMapper mapper= session.getMapper(AccountMapper.class); assertNotNull(mapper); Account account = mapper.getAccountById(1); assertNotNull(account); Assert.assertEquals("hbb0b0",account.getName()); System.out.println(account.toString()); } finally { session.close(); } } }
测试结果:
Java DB 访问(三)mybatis mapper interface接口的更多相关文章
- Java DB 访问之 mybatis mapper xml 配置方式
1 项目说明 项目采用 maven 组织 ,jdbc 唯一的依赖就是 mysql-connector-java pom 依赖如下: mysql 数据连接 : mysql-connector-java ...
- 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 ...
- java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.SpecialProvider.<init>()
Caused by: org.apache.ibatis.builder.BuilderException: Error invoking SqlProvider method (tk.mybatis ...
- Cause: java. lang.InstantiationException: tk.mybatis.mapper.provider.base.BaseInsertProvider
相信现在Java Web开发都是用的mybatis吧,而用到mybatis很多人都不会错过通用mapper吧! (纯属瞎扯淡...qwq). 如我上一篇博客所写,目前公司新项目,使用了通用mapper ...
- 解决java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.base.BaseSelectProvider
今天在集成Mapper时 出现如下错误 java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.base.BaseSelectProvi ...
- Java DB 访问之(四) spring mvc 组合mybatis
说明 本项目采用 maven 结构,主要演示了 spring mvc + mybatis,controller 获取数据后以json 格式返回数据. 项目结构 包依赖 与说明 pom文件: <p ...
- JAVA 构造器, extends[继承], implements[实现], Interface[接口], reflect[反射], clone[克隆], final, static, abstrac
记录一下: 构造器[构造函数]: 在java中如果用户编写类的时候没有提供构造函数,那么编译器会自动提供一个默认构造函数.它会把所有的实例字段设置为默认值:所有的数字变量初始化为0;所有的布尔变量设置 ...
- Java知多少(39)interface接口
在抽象类中,可以包含一个或多个抽象方法:但在接口(interface)中,所有的方法必须都是抽象的,不能有方法体,它比抽象类更加“抽象”. 接口使用 interface 关键字来声明,可以看做是一种特 ...
- Java DB访问之 JDBC
项目说明 项目采用 maven 组织 ,jdbc 唯一的依赖就是 mysql-connector-java pom 依赖如下: <dependency> <groupId>my ...
随机推荐
- sql随机抽取数据
mysql: select * from tablename order by rand() limit 10 sqlserver: select top 10 * from tablen ...
- c# radiobutton
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...
- UVaLive 3490 Generator (KMP + DP + Gauss)
题意:随机字母组成一个串,有一个目标串,当这个由随机字母组成的串出现目标串就停止,求这个随机字母组成串的期望长度. 析:由于只要包含目标串就可以停止,所以可以先把这个串进行处理,也就是KMP,然后dp ...
- C#创建、设置和安装Windows服务
文章大部分内容转自:http://www.cnblogs.com/greatandforever/archive/2008/10/14/1310504.html:和:http://www.cnblog ...
- 编译时:virtual memory exhausted: Cannot allocate memory,常见于VPS
原文链接:http://blog.csdn.net/taiyang1987912/article/details/41695895 一.问题 当安装虚拟机时系统时没有设置swap大小或设置内存太小,编 ...
- Kafka C++客户端库librdkafka笔记
目录 目录 1 1. 前言 2 2. 缩略语 2 3. 配置和主题 3 3.1. 配置和主题结构 3 3.1.1. Conf 3 3.1.2. ConfImpl 3 3.1.3. Topic 3 3. ...
- TinyMCE Editor
TinyMCE Editor(https://www.tinymce.com/features/) is an online text editor, it is used to write post ...
- javascript 模块化编程
The module pattern is a common JavaScript coding pattern. It’s generally well understood, but there ...
- Hdu1016 Prime Ring Problem(DFS) 2016-05-06 14:27 329人阅读 评论(0) 收藏
Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- 微软新一代Surface,该怎么看?
近日,微软在美国纽约发布了其全新一代产品——Surface 2和Surface Pro 2.如果留意微软官方商城的话,可以看到该产品现已全面开放预购.那么,这样一款产品到底怎么样?让我们来一个横向的对 ...