demo的工程结构如下图所示,本工程需要的jar包有junit,mysql-connector-java,以及mybatis-3.2.7.jar
1.创建实体类User
package com.xilin.jiong.mybatis.entity;
public class User
{
private Integer userId;
private String userName;
private Integer userAge;
public Integer getUserId()
{
return userId;
}
public void setUserId(Integer userId)
{
this.userId = userId;
}
public String getUserName()
{
return userName;
}
public void setUserName(String userName)
{
this.userName = userName;
}
public Integer getUserAge()
{
return userAge;
}
public void setUserAge(Integer userAge)
{
this.userAge = userAge;
}
@Override
public String toString()
{
return "User [userId=" + userId + ", userName=" + userName + ", userAge=" + userAge + "]";
}
}
2.创建dao接口、可以说是Mapper接口:UserMapper
package com.xilin.jiong.mybatis.dao;
import com.xilin.jiong.mybatis.entity.User;
public interface UserMapper
{
User findByUserId(Integer userId);
void addUser(User user);
}
3.创建数据库
CREATE TABLE `user` (
`userId` int(11) NOT NULL AUTO_INCREMENT,
`userName` varchar(255) DEFAULT NULL,
`userAge` int(11) DEFAULT NULL,
PRIMARY KEY (`userId`)
)
4.创建数据源(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>
<!-- <settings>
changes from the defaults for testing
<setting name="cacheEnabled" value="false" />
<setting name="useGeneratedKeys" value="true" />
<setting name="defaultExecutorType" value="REUSE" />
</settings> -->
<!-- 引用JDBC属性的配置文件 -->
<properties resource="configer/SqlMap.properties" />
<typeAliases>
<typeAlias alias="User" type="com.xilin.jiong.mybatis.entity.User"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="jdbc"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="configer/userMapper.xml" />
</mappers>
</configuration>
创建SqlMap.properties文件
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/myibatis
username=root
password=root
5.创建dao的实现,不同于hibernarte的此处的实现为一个xml文件,也就是userMapper.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="com.xilin.jiong.mybatis.dao.UserMapper">
<!-- 这里namespace必须是UserMapper接口的路径,不然要运行的时候要报错 “is not known to the MapperRegistry” -->
<!-- 这里的id必须和UserMapper接口中的接口方法名相同,不然运行的时候也要报错 -->
<insert id="addUser" parameterType="User">
insert into user(userName,userAge) values(#{userName},#{userAge})
<!-- 这里sql结尾不能加分号,否则报“ORA-00911”的错误 -->
</insert>
<select id="findByUserId" resultType="User" parameterType="java.lang.Integer">
select * from user where userId = #{userId}
</select>
</mapper><strong>
</strong>
6.获取SqlSession的工具类MyibatisUtil
package com.xilin.jiong.mybatis.util;
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;
public class MyibatisUtil {
private static final String CONFIG_PATH = "configer/SqlMapConfig.xml";
/*
* 获取数据库访问链接
*/
public static SqlSession getSqlSession() {
SqlSession session = null;
try {
InputStream stream = Resources.getResourceAsStream(CONFIG_PATH);
// 可以根据配置的相应环境读取相应的数据库环境
// SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(
// stream, "development");
SqlSessionFactory factory = new SqlSessionFactoryBuilder()
.build(stream);
session = factory.openSession();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return session;
}
/*
* 获取数据库访问链接
*/
public static void closeSession(SqlSession session) {
session.close();
}
public static void main(String[] args) {
System.err.println(MyibatisUtil.getSqlSession());
}
}
7.测试类
package com.xilin.jiong.mybatis.test;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import com.xilin.jiong.mybatis.dao.UserMapper;
import com.xilin.jiong.mybatis.entity.User;
import com.xilin.jiong.mybatis.util.MyibatisUtil;
public class MybatisTest
{
@Test
public void addUserTest()
{
User user = new User();
user.setUserAge(15);
user.setUserName("zhangguorong2");
SqlSession session = MyibatisUtil.getSqlSession();
UserMapper userMapper = session.getMapper(UserMapper.class);
userMapper.addUser(user);
session.commit();
session.close();
}
@Test
public void findUserByUserId()
{
SqlSession session = MyibatisUtil.getSqlSession();
UserMapper userMapper = session.getMapper(UserMapper.class);
User user = userMapper.findByUserId(3);
System.err.println(user);
session.close();
}
}