在Eclipse中创建好java项目及配置好路径后,通过一个用户管理案例在mybatis框架中实现增删改查功能。
一.数据库准备
首先我们需准备好数据库所需的表,我们新建一个名为eshop的数据库,在其中创造一张名为user_info的表,在此表中创建一些字段如·id,userName。适当在此表中添加一些数据。
二.创建工程目录结构
在src文件夹下创建三个包
com.mybatis.pojo(存放实体类)
com.mybatis.mapper(该包下创建一个UserInfoMapper.xml文件,SQL映射文件)
com.mybatis.test(测试主程序)。
在src同级创造一个mybatis-config.xml文件(数据库连接池配置文件)。
三.实现用户查询
这里希望通过输入用户id查询到eshop数据库user_info表中存储的用户信息。
(1)创建实体类
首先在com.mybatis.pojo包中创建一个实体类UserInfo.java(对应user_info表),注意UserInfo类中的属性要与user_info表中的字段相同。并创建属性的getter setter方法。
package com.mybatis.pojo
public class UserInfo {
private int id;
private String userName;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Override
public String toString() {
return "UserInfo [id=" + id + ", userName=" + userName + "]";
}
}
(2)创建SQL映射的XML文件
在com.mybatis.mapper包下创建SQL的映射XML文件UserInfoMapper.xml,内容如下:
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mybatis.mapper.UserInfoMapper">
<!-- 查询用户 -->
<select id="findUserInfoById" resultType="com.mybatis.pojo.UserInfo">
select * from user_info where id=#{id}
</select>
</mapper>
mapper文件需遵循mybatis-3-dtd文件规范,可在官方文件中查找。
其中以作为根节点
namespace:命名空间,做sql隔离
id:sql语句唯一标识
parameterType:指定传入参数类型(pojo类中对应的类型,不是数据库中的类型)
resultType:返回结果集类型,如返回UserInfo类型需填写其路径。
#{}:占位符,如果传入的类型是基本类型(string,long,double,int,boolean,float等),那么#{}中变量名称可以任意
(3)创建Mybatis的核心配置文件
之前创建的mybatis-config.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>
<!-- 给包中的类注册别名 -->
<typeAliases>
<package name="com.mybatis.pojo"></package>
</typeAliases>
<!-- 配置环境 -->
<environments default="mysql">
<!--配置一个id为mysql的环境-->
<environment id="mysql">
<!--使用JDBC事务-->
<transactionManager type="JDBC"></transactionManager>
<!--数据库连接池-->
<dataSource type="POOLED">
<!--数据库驱动信息-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!--数据库连接地址-->
<property name="url" value="jdbc:mysql://localhost:3306/eshop"/>
<!--数据库用户名-->
<property name="username" value="root"/>
<!--数据库密码-->
<property name="password" value="19991014"/>
</dataSource>
</environment>
</environments>
<!-- 引用映射文件 -->
<mappers>
<mapper resource="com/mybatis/mapper/UserInfoMapper.xml"/>
</mappers>
</configuration>
此文件需遵循mybatis-3-config.dtd文件规范。
(4)创建测试类
在com.mybatis.test包中创建MybatisTest测试类,代码如下:
package com.mybatis.test;
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;
import com.mybatis.pojo.*;
public class MybatisTest {
public void find() throws IOException{
//读取mybatis配置文件,并且得到配置文件流
InputStream stream= Resources.getResourceAsStream("mybatis-config.xml");
//根据配置文件流,创建会话工厂
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(stream);
//通过会话工厂得到SqlSession
SqlSession session=factory.openSession();
//查询id为1的用户信息
UserInfo u=session.selectOne("com.mybatis.mapper.UserInfoMapper.findUserInfoById",1);
//打印查询结果
System.out.println(u.toString());
}
public static void main(String[] args) throws IOException {
// TODO 自动生成的方法存根
MybatisTest m=new MybatisTest();
m.find();
}
}
调用SqlSession对象的selectOne方法的第一个参数是映射文件UserInfoMapper.xml中定义的元素的id。