曾无好事来相访,赖尔高文一起予。这篇文章主要讲述Java DB 访问之 mybatis mapper xml 配置方式相关的知识,希望能为你提供帮助。
1 项目说明
项目采用 maven 组织 ,依赖 mysql-connector-java,org.mybatis,junit pom 依赖如下:【Java DB 访问之 mybatis mapper xml 配置方式】
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 (\'1\', \'hbb0b0\', \'40000\'); INSERT INTO `account` VALUES (\'2\', \'kael\', \'1000\');
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="https://www.songbingjia.com/android/com.mysql.jdbc.Driver"/> < property name="url" value="https://www.songbingjia.com/android/jdbc:mysql://localhost:3306/study" /> < property name="username" value="https://www.songbingjia.com/android/root"/> < property name="password" value="https://www.songbingjia.com/android/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; }@Overridepublic String toString() {return "Account [id=" + id + ", name=" + name + ", money=" + money+ "]"; }}
- xml mapper
< ?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="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 { @Testpublic void getOne_Test() throws IOException {SqlSession session = DBTool.getSession(); try { Account account = session.selectOne("hbb0b0.JavaBasic.AccountMapper.getOne"); assertNotNull(account); } finally {session.close(); }} @Testpublic 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(); }} @Testpublic 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(); }} @Afterpublic 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(); }} }
测试结果:
文章图片
推荐阅读
- Android开发中使用数据库时出现java.lang.IllegalStateException: Cannot perform this operation because the connect
- C#中AppDomain.CurrentDomain.BaseDirectory与Application.StartupPath的区别
- 视频教程一步步将AppBox升级到Pro版
- Linux mount命令
- Linux Shred命令
- Linux du命令
- Linux init命令
- Linux env命令
- Linux shutdown命令