从一个简单的示例,我们开始进入Mybatis的世界!
来源:互联网 发布:截取在线视频片段软件 编辑:程序博客网 时间:2024/06/11 08:49
在这篇文章中,我们通过一个简单的Java示例来说明如何使用Mybatis,不必追究细枝末节的东西,只是看看如何去使用而已。
首选,我假定大家用过maven,因为我这里建立的是Maven项目,因为觉得用Maven引用jar包太方便了(发明这个东西的人太有才了)。
接下来我们需要在pom文件中添加我们需要的jar包,包含以下几个方面:
(1)mysql的驱动;
(2)mybaits的jar包;
(3)单元测试框架类;
(4)日志框架类;
具体pom文件内容如下所示:
<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.majing.learning</groupId><artifactId>mybatis</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>mybatis</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!-- 添加mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.1</version></dependency><!-- 添加mysql驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.40</version></dependency><!-- 添加junit --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.9</version><scope>test</scope></dependency><!-- 添加log4j --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.16</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.0</version><configuration><source>1.7</source><target>1.7</target><encoding>UTF-8</encoding></configuration></plugin></plugins></build></project>
引入pom文件后,经过install我们就能看到我们得到了我们想要的各种jar包了。
一切准备就绪,接下来我们开始来真正的写业务部分了。对于mybatis来说,有一个很重要的配置文件,那就是configuration.xml,这个文件是我们使用mybatis的核心,后面也将围绕着这个配置文件来说明mybatis的各种功能。
我们先来看下这个配置文件configuration.xml:
<?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><settings><setting name="logImpl" value="LOG4J" /></settings><!-- 和spring整合后 environments配置将废除 --><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://localhost:3306/mybatis?characterEncoding=utf-8" /><property name="username" value="root" /><property name="password" value="root" /></dataSource></environment></environments><mappers><mapper resource="com\majing\learning\mybatis\dao\UserDaoMapper.xml" /></mappers></configuration>
我们先不管配置文件中的细节配置,从配置上我们可以直观的看出我们对日志、数据库连接地址和驱动都做了相关的配置。和日志相关的还需要有一个配置文件,用于控制日志往什么地方刷,这个配置文件就是log4j.properties,具体配置格式如下:
log4j.rootLogger=DEBUG,mybatis,stdout log4j.appender.mybatis=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.mybatis.layout=org.apache.log4j.PatternLayoutlog4j.appender.mybatis.DatePattern='.'yyyy-MM-dd-HHlog4j.appender.mybatis.layout.ConversionPattern=%m%nlog4j.appender.mybatis.file=D:/data/logs/mybatis/mybatis.loglog4j.appender.mybatis.encoding=UTF-8log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p [%c] %m%n
至此,该有的配置文件我们都已经准备好了。
接下来开始写业务代码。这篇文章是一个示例,所以我们就按照最简单的来。我们模拟从数据库里读取一个用户。
我们先来看下数据库中的数据:
我们根据这个数据库表结构,来创建一个相应的POJO实体类User,如下所示:
package com.majing.learning.mybatis.entity;public class User {private int id;private String name;private String password;private int age;private int deleteFlag;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 String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public int getDeleteFlag() {return deleteFlag;}public void setDeleteFlag(int deleteFlag) {this.deleteFlag = deleteFlag;}@Overridepublic String toString() {return "User [id=" + id + ", name=" + name + ", password=" + password + ", age=" + age + ", deleteFlag=" + deleteFlag + "]";}}
接着,我们创建一个接口类,这个接口类定义我们对数据库表的操作行为,如下所示,我们定义一个查询方法:
package com.majing.learning.mybatis.dao;import com.majing.learning.mybatis.entity.User;public interface UserDao {public User findUserById (int userId);}
有了这些够了吗?NO!
我们还缺少一个很重要的东西,想想就知道,其实我们并没有告诉mybatis该怎么去查询,也就是这个方法对应什么样的执行语句,我们还需要mapper文件!!!
我们在UserDao接口所在文件目录创建一个UserDaoMapper.xml的配置文件,配置如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"><mapper namespace="com.majing.learning.mybatis.dao.UserDao"><select id="findUserById" resultType="com.majing.learning.mybatis.entity.User">select * from user where id = #{id}</select></mapper>
配置文件中通过id指定了方法和sql语句的对应关系,并且将返回结果指定为User实体。
至此,一个简单的示例所需要的东西都出来了,我们写个简单的测试类来看下怎么查询。
package com.majing.learning.mybatis;import java.io.IOException;import junit.framework.Assert;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.junit.Test;import com.majing.learning.mybatis.dao.UserDao;import com.majing.learning.mybatis.entity.User;public class UserDaoTest {@Testpublic void findUserById(){SqlSession sqlSession = getSessionFactory().openSession(); UserDao userMapper = sqlSession.getMapper(UserDao.class); User user = userMapper.findUserById(1); System.out.println(user);Assert.assertNotNull("没找到数据", user);}// Mybatis 通过SqlSessionFactory获取SqlSession, 然后才能通过SqlSession与数据库进行交互private static SqlSessionFactory getSessionFactory() {SqlSessionFactory sessionFactory = null;String resource = "configuration.xml";try {sessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader(resource));} catch (IOException e) {e.printStackTrace();}return sessionFactory;}}
从测试用例代码中,我们看到我们查询一个用户其实只用到了三条语句,也就是下面:
SqlSession sqlSession = getSessionFactory().openSession(); UserDao userMapper = sqlSession.getMapper(UserDao.class); User user = userMapper.findUserById(1);
是不是比之前繁琐的Java代码好多了,反正我这么觉得。至此,一个入门的简单说明到此为止,后面我们陆续学习Mybatis的一些常用功能。接下来一篇文章会简单说明下mybatis如何实现增删改查基本功能。
如果想了解我最新的博文,请关注我的博客,谢谢。
如果您觉得博主不容易,并且愿意打赏我,可扫描下方二维码,对您的打赏我表示感谢。
- 从一个简单的示例,我们开始进入Mybatis的世界!
- 开始进入.net的世界
- 今天开始进入程序员的世界
- 从 Java 开始进入 Kotlin的世界: From Java to Kotlin: JKotlinor
- 复杂的世界,我们简单地活着
- 从现在开始我进入了linux的世界,在这里说一声“Hello World!”,让自己的心情放飞!
- 我们的爱情从现在开始
- 一个简单的开始
- 一个简单的开始
- Narnia 一个简单的世界
- 进入erlang的世界
- 进入Erlang的世界
- 进入Erlang的世界
- 进入Java的世界
- 进入Django的世界
- 进入linux的世界
- 进入php的世界
- 进入数据库的世界
- ReactJs Router 路由地址跳转方式带参数
- 打印乘法口诀
- Pajek的.net文件的数据输入格式及给节点和边着色
- MongoDB学习记录1
- 大量日志数据复杂事件处理技术(Complex Event Processing 简称CEP)
- 从一个简单的示例,我们开始进入Mybatis的世界!
- centos7 oracle exp导出数据dmp
- 从输入url到页面展示到底发生了什么
- 定时备份数据库
- 【STL】vector的模拟实现
- GitHub for windows使用教程(三) 团队协作流程
- 比特币攻击案例重现江湖
- java 微信支付功能
- tensorflow tensorboard相关的资料