在系统地学习mybatis之前,可以先写一个简单的例子,使用Idea,结合maven。首先新建一个项目,
配置pom.xml如下:核心包为mybatis和mysql驱动包,junit是为了后面的测试。日志就不用说了。
<?xml version="1.0" encoding="UTF-8"?> <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>cn.edu.cqu</groupId> <artifactId>
qxcv</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <!--
mybatis核心包 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</
artifactId> <version>3.3.0</version> </dependency> <!-- mysql驱动包 --> <dependency
> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <
version>5.1.29</version> </dependency> <!-- junit测试包 --> <dependency> <groupId>
junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>
test</scope> </dependency> <!-- 日志文件管理包 --> <dependency> <groupId>log4j</groupId
> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <
dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <
version>1.7.12</version> </dependency> <dependency> <groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId> <version>1.7.12</version> </dependency>
</dependencies> </project>
接着在resources底下写一个配置文件config.properties,附整个项目的框架图:


jdbc.driver = com.mysql.jdbc.Driver jdbc.url = jdbc:mysql://localhost:3306
/mybatis?characterEncoding=UTF-8 jdbc.username = root jdbc.password = root
需要注意的是,要提前建好这个数据库,我们也顺便建好表,并添加一条数据进去。



那么这个时候,我们需要写一个实体类User,注意路径
cn.edu.cqu.domains
package cn.edu.cqu.domains; public class User {
//注意这里的属性名要与数据库中字段相同,否则获取不到值,同样不区分大小写 private long id; private String name;
private int age; public long getId() { return id; } public void setId(long id) {
this.id = id; } public String getName() { return name; } public void setName
(String name) {this.name = name; } public int getAge() { return age; } public
void setAge(int age) { this.age = age; } }
接下来,写mybatis的核心配置文件mybatis-config.xml,同样在resources路径下面。
<?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> <!-- 加载属性文件 --> <
properties resource="config.properties"> <!--properties中还可以配置一些属性名和属性值 --> <!--
<property name="jdbc.driver" value=""/> --> </properties> <!-- 全局配置参数,需要时再设置 -->
<!-- <settings> </settings> --> <typeAliases> <!-- 别名定义 --> <!-- 针对单个别名定义
type:类型的路径 alias:别名,类名不能写错 别名可以随便起,但最好规范--> <typeAlias type=
"cn.edu.cqu.domains.User" alias="user" /> <!-- 批量别名定义
指定包名,mybatis自动扫描包中的po类,自动定义别名,别名就是类名(首字母大写或小写都可以) --> <package name=
"cn.edu.cqu.domains" /> </typeAliases> <!-- 和spring整合后 environments配置将废除 --> <
environments default="development"> <environment id="development"> <!--
使用jdbc事务管理,事务控制由mybatis --> <transactionManager type="JDBC" /> <!--
数据库连接池,由mybatis管理 --> <dataSource type="POOLED"> <property name="driver" value=
"${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name=
"username" value="${jdbc.username}" /> <property name="password" value=
"${jdbc.password}" /> </dataSource> </environment> </environments> <!-- 加载映射文件
--> <mappers> <!--通过resource方法一次加载一个映射文件 --> <!--注意这里的路径和xml文件 --> <mapper
resource="mappers/user.xml" /> <!-- 批量加载mapper
指定mapper接口的包名,mybatis自动扫描包下边所有mapper接口进行加载 --> <!--
遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录 --> <!--
中上边规范的前提是:使用的是mapper代理方法 <package name="...." />--> </mappers> </configuration>
接着写一个xml映射文件,对应类User,路径为resources\mappers\user.xml,其实在上面的配置文件中也有写到。
<?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="test"> <!--
在映射文件中配置很多sql语句 --> <!-- 将sql语句封装到mappedStatement对象中,所以将id称为statement的id -->
<!-- parameterType:指定输入参数的类型,这里指定int型 #{}表示一个占位符号 --> <!--
#{id}:其中的id表示接收输入的参数,参数名称就是id,如果输入 --> <!-- 参数是简单类型,#{}中的参数名可以任意,可以value或其它名称
--> <!-- resultType:指定sql输出结果的所映射的java对象类型,select指定resultType表示将单条记录映射成的java对象。
--> <!-- 表名要对,但是不区分大小写,resultType要写类名,同样不区分大小写 --> <select id="findUserById"
parameterType="int" resultType="user"> SELECT * FROM user WHERE id = #{value} </
select> </mapper>
最后我们可以简单地写一个测试文件,注意路径:
import cn.edu.cqu.domains.User; 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 java.io.IOException; import java.io.InputStream;
public class UserTest { public SqlSessionFactory getSqlSessionFactory() throws
IOException { // mybatis配置文件,这个地方的root地址为:resources,路径要对。 String resource =
"mybatis-config.xml"; // 得到配置文件流 InputStream inputStream = Resources
.getResourceAsStream(resource); // 创建会话工厂,传入mybatis的配置文件信息 SqlSessionFactory
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); return
sqlSessionFactory; } // 根据id查询用户信息,得到一条记录结果 @Test public void
findUserByIdTest() throws IOException { // 通过工厂得到SqlSession SqlSession
sqlSession = this.getSqlSessionFactory().openSession(); // 通过SqlSession操作数据库 //
第一个参数:映射文件中statement的id,等于=namespace+"."+statement的id //
第二个参数:指定和映射文件中所匹配的parameterType类型的参数 // sqlSession.selectOne结果
是与映射文件中所匹配的resultType类型的对象 // selectOne查询出一条记录(这种很麻烦的!!!往后看看) //这里的参数test
.findUserById,test为命名空间,要与user.xml中的对应起来, //同理,findUserById也要在user.xml
中存在,不然都会报错 User user = sqlSession.selectOne("test.findUserById", 1); System.out
.println(user.getId()); System.out.println(user.getName()); System.out.println
(user.getAge()); // 释放资源 sqlSession.close(); } }
最后运行效果如下,找到了id为1的User:



本文参考到的博客如下:
https://blog.csdn.net/lucia_fanchen/article/details/49386327
<https://blog.csdn.net/lucia_fanchen/article/details/49386327>
https://blog.csdn.net/javawebrookie/article/details/52654526
<https://blog.csdn.net/javawebrookie/article/details/52654526>

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信