本系列 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单条信息查询的功能。