1.mybatis实现的java代码和sql的分离。当我们转移数据库的时候,只需要更改自己的配置的sql即可,其不影响我们的上层的运作,这也是mybatis一个xml实现一个接口的好处。
首先 准备一个实体类和一张数据库表。
2.配置jar,pom文件即得到jar
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>
<!-- junit.jar -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
</dependency>
3.配置文件mybatis-config.xml 放在resource下
<?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>
<!-- 指明User的具体位置
指定需要mybatis管理的实体类
-->
<typeAliases>
<typeAlias alias="User" type="peng.architect.dream.entity.User"/>
</typeAliases>
<!-- 数据库基本配置 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@192.168.1.100:1521:orcl" />
<property name="username" value="scott" />
<property name="password" value="tiger" />
</dataSource>
</environment>
</environments>
<!-- 映射文件 -->
<mappers>
<mapper resource="mapper/User.xml"/>
</mappers>
</configuration>
4.定义接口和实现
package peng.architect.dream.dao;
import peng.architect.dream.entity.User;
import java.util.List;
public interface UserDao {
User findUserById(int id);
List<User> findUsers();
int add(User user);
int upd(User user);
int del(int id);
}
mapper 放在resource 下 mapper/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="peng.architect.dream.dao.UserDao"><!-- 包名,命名空间 -->
<!-- 为每一个查询语句,都要起一个id -->
<select id="findUsers" resultType="User">
select * from t_user
</select>
</mapper>
5.单元测试
package dao;
/**
* Created by peng on 2017/10/4.
*/
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.After;
import org.junit.Before;
import peng.architect.dream.dao.UserDao;
import peng.architect.dream.entity.User;
import java.io.IOException;
import java.util.List;
/**
* @author peng
* @create 2017-10-04 17:44
**/
public class Test {
private SqlSessionFactory sqlSessionFactory;
private SqlSession sqlSession;
@Before
public void begin(){
try {
sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("mybatis-config.xml"));
sqlSession=sqlSessionFactory.openSession();
} catch (IOException e) {
e.printStackTrace();
}
}
@org.junit.Test
public void testDao(){
UserDao userDao=sqlSession.getMapper(UserDao.class);
List<User> list=userDao.findUsers();
for (User u : list) {
System.out.println(u.getName()+"---"+u.getLoacalBirth());
}
sqlSession.commit();//增删改必须提交事务
}
@After
public void end(){
sqlSession.close();
}
}
6.项目架构
7.项目在我百度云上
http://pan.baidu.com/s/1jIorVP8
uplu