Mybatis教程之一

本系列 Mybatis 教程目标:

能通过mybatis,对数据库中User表进行以下操作:

1. 根据用户id查询一个用户信息

2. 根据用户名称模糊查询用户信息列表

3. 添加用户

4. 更新用户

5. 删除用户


1.前期准备    

        使用mybatis,前期需要导入一些mybatis核心包、依赖包、数据驱动包,它们之间除了用于测试的junit包以外,其他每一个包都是缺一不可的,而且各个包的版本也需要对应好。此处为了方便,我整理好了本教程所用到的核心包、依赖包、数据驱动包,并上传到我的资源,只需要下载解压导入即可。

        下载链接:点击打开链接(https://download.csdn.net/download/zjt980452483/10412751)

压缩包解压后会看以下到12个jar文件

    在eclipse中创建工程时,新建文件夹lib,将上述文件的导入到lib目录下(直接拖拽文件放入即可),然后选中所有包,右键点击add to build path即可在项目中导入完成,如图所示:

2.搭建工程

2.1 创建java工程:

本教程使用的eclipse工具,jdk使用1.8版本

2.2 导入相关jar包,步骤上面已经介绍

2.3 添加 log4j.properties 文件,实现日志功能工具

classpath下创建log4j.properties文件,文件内容写上如下信息:

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

如图所示:

2.4 创建核心配置文件

在项目文件下,创建source folder文件夹,用于存放核心配置文件

然后在该文件夹下创建文件SqlMapConfig.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>
	<!-- 和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="123456" />
			</dataSource>
		</environment>
	</environments>
	
</configuration>

 如图所示:

      

 文件内容前4行为数据源的配置信息,可在mybatis官方文档中查到。数据库连接池的配置的信息,根据自己的数据库信息进行修改即可。

2.5 创建User.java对象文件

在src文件目录下新建名为 pojo 的package,然后在里面创建User.java文件

package cn.pojo;

import java.io.Serializable;
import java.util.Date;

public class User {
	private int id;
	private String idString;
	private String username;// 用户姓名
	private String sex;// 性别
	private Date birthday;// 生日
	private String address;// 地址

	public int getId() {
		return id;
	}
	public String getIdString() {
		return idString;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", username=" + username + ", sex=" + sex
				+ ", birthday=" + birthday + ", address=" + address + "]";
	}
}

如图所示:


3.实现根据用户id查询一个用户信息

3.1 创建映射文件 xml

 1)在config文件目录下新建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作用为:确定命名空间,做sql隔离

<mapper namespace="test">
	<select id="findUserById" parameterType="java.lang.Integer" resultType="cn.pojo.User">
		select * from user where id=#{id}	
	</select>
</mapper>

参数含义解释:

id:    sql语句的唯一标识
paramenterType:    指定传入参数类型
resultType:    返回结果集类型
#{}:    占位符,起到占位作用,如果传入是基本类型,那么#{}中的变量名称可以随意写

此处因为查询结果是一个User对象,所以 resultType 为User.java的全路径的地址cn.pojo.User ;而传入参数User对象中id的值,paramenterType写User.id的参数类型int,如下图所示


UserTest.xml文件文件详情:


3.2 创建测试方法

在工程项目目录下,创建cn.test包,然后在包内创建UserTest.java文件


在测试文件UserTest中写入以下信息:

package mybatis0514;

import java.util.Date;
import java.util.List;
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;
import org.junit.Test;

import cn.pojo.User;

public class UserTest {
	
	@Test
	public void testFindUserById() throws Exception {
		String resource = "SqlMapConfig.xml";
		//通过流将核心配置文件读取进来	
		InputStream inputStream = Resources.getResourceAsStream(resource);
		//通过核心配置文件输入流来创建会话工厂		
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
		//通过工厂创建会话
		SqlSession openSession = factory.openSession();
		//第一个参数:所调用的sql语句=namespace+“.”+sql的ID ;第二个参数:传入参数的值
		User user= openSession.selectOne("test.findUserById",1);
		System.out.println(user);
		openSession.close();	
	}
}

@Test :标记此段为测试代码,用于junit的测试。可以在没主函数的情况下进行测试

当前 UserTest.java 文件完整视图:


3.3 在核心配置文件中,引入映射文件 User.xml

打开之前新建好的SqlMapConfig.xml,通过 mapper 标签引入映射文件User.xml

<mappers>
	<mapper resource="User.xml"/>
</mappers>

当前 SqlMapConfig.xml 文件完整视图:


3.4 运行


                上面完成了mybatis单条信息查询的功能。


猜你喜欢

转载自blog.csdn.net/zjt980452483/article/details/80307638