1.所需依赖
<dependency>
<!--测试jar-->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12 </version>
<scope>test</scope>
</dependency>
<!--mybatisjar-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<!--mysql jar-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
2.编写持久层接口
package cn.msg.mapper;
import cn.msg.bean.User;
import java.util.List;
public interface IUser {
//查询所有
List<User> findAll();
//保存
void save(User user);
//更新
void update(User user);
//删除
void delete(int id);
}
3.配置主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>
<!--该文件用于配置 访问数据库的操作
default属性用来设置默认数据库连接池
该文件中可以含有多个连接池配置和事务配置(environment)
-->
<environments default="pooled">
<!--配置连接池和事务-->
<environment id="pooled">
<!--配置事务-->
<transactionManager type="JDBC"></transactionManager>
<!--配置连接池-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///mybatis01?characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!--引用配置文件
class属性用于配置注解类
resource用于mapper xml文件
-->
<mappers>
<!--xml配置
<mapper resource="mappers/UserMapper.xml" ></mapper>
-->
<!--注解文件配置-->
<mapper class="cn.msg.mapper.IUserMapper"></mapper>
</mappers>
</configuration>
4.配置mapper 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">
<!--该文件主要用于为接口配置sql语句和相应的返回值类型-->
<!--
<mapper>标签
namespaces属性:命名空间 用来指定接口,然后使用<select> <update>
<insert> <delete>等标签为接口中的方法配置sql语句 返回值 参数
-->
<mapper namespace="cn.msg.mapper.IUserMapper">
<!--
<select>标签
用来为父标签<mapper>所指定接口中的方法绑定sql 返回值 参数
id属性:指定要绑定的方法此方法名必须与<mapper>标签所指定接口中的方法名相同
resultType属性:指定返回值类型 比如返回值是List<User>直接指定USer即可
parameterType属性:指定方法所需参数类型
-->
<select id="findAll" resultType="cn.msg.bean.User" >
select * from user
</select>
<update id="save" parameterType="cn.msg.bean.User">
<!--注意:#{name} 中的name是"cn.msg.bean.User"的属性要互相对应-->
insert into user values (null ,#{name},#{money})
</update>
</mapper>
5.测试
package cn.msg.test;
import cn.msg.bean.User;
import cn.msg.mapper.IUser;
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 org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class Demo {
private SqlSession session;
@Before
public void befor(){
try {
//读取配置文件
InputStream is = Resources.getResourceAsStream("mybatis.xml");
//创建工厂
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(is);
//使用工厂生产SqlSession对象
session = factory.openSession();
} catch (IOException e) {
e.printStackTrace();
}
}
@After
public void after(){
session.commit();
session.close();
}
/**
* 获取所有
*/
@Test
public void testFindAll(){
//通过SqlSession获取接口的代理对象
IUser user = session.getMapper(IUser.class);
List<User> list = user.findAll();
System.out.println(list);
}
}