1. 大体分为以下四步:
- pom.xml
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
- 配置文件 mybatis-config.xml
连接数据库 url, driver, username, password
<mapper resource="包名/XXMapper.xml" />
- 映射文件 XXMapper.xml
<mapper namespace="包名.XXMapper"> // 防止命名冲突
<insert id="insert" parameterType="实体类型"> 插入sql, #{实体属性值} </insert>
<update id="update" parameterType="实体类型"> 更新sql, #{实体属性值} </update>
<delete id="delete" parameterType="基本类型"> 删除sql, #{任意字符串} </delete>
<select id="查询单个" parameterType="查询条件类型" resultType="实体类型"> 查询sql </select>
<select id="查询多个" parameterType="查询条件类型" resultType="实体类型"> 查询sql </select>
</mapper>
- java 代码
SqlSessionFactory factory = new SqlSessionFactoryBuilder(配置文件的输入流);
SqlSession sqlSession = factory.openSession();
sqlSession.insert("namespace.id", 参数对象);
sqlSession.update("namespace.id", 参数对象);
sqlSession.delete("namespace.id", 参数对象);
实体类型 obj = sqlSession.selectOne("namespace.id", 参数对象); // 查询单个结果
List<实体类型> obj = sqlSession.selectList("namespace.id", 参数对象); // 查询单个结果
sqlSession.commit(); // 提交事务
sqlSession.close(); // 关闭资源
实例:
1>目录:
2>配置文件 mybatis-config.xml
3>映射文件
<?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">
<!-- namespace="mapper的包名.mapper的文件名" 主要是防止sql名字冲突 -->
<mapper namespace="com.westos.mapper.UserMapper">
<!-- id="SQL语句的唯一标识"
parameterType="sql语句需要的参数类型"
-->
<!-- User(username,password) #{写的是参数对象的属性名}- -->
<insert id="insert" parameterType="com.westos.entity.User">
insert into user (username, password) values (#{username},#{password})
</insert>
<!-- #{写的是参数对象的属性名}-->
<update id="update" parameterType="com.westos.entity.User">
update user set password = #{password} where username = #{username}
</update>
<!-- java.lang.String 可以简化为 string 基本类型和字符串 #{任意字符名称}-->
<delete id="delete" parameterType="string">
delete from user where username=#{abc}
</delete>
<!-- 查询单条记录,根据用户名查询
resultType="结果类型"
-->
<select id="selectOne" parameterType="string" resultType="com.westos.entity.User">
select username, password from user where username=#{abc}
</select>
<!-- 在这里仍然是集合中元素的类型 -->
<select id="selectAll" resultType="com.westos.entity.User">
select username, password from user
</select>
</mapper>
4>java代码
public class TestUser {
static SqlSessionFactory factory;
static {
try {
// 通过java代码调用mybatis
// SqlSession 用来真正执行增删改查, SqlSessionFactory 是用来创建sqlSession
// 1) 读取配置文件的输入流
FileInputStream is = new FileInputStream("src/main/resources/mybatis-config.xml");
// 2) 创建sqlSession工厂类
factory = new SqlSessionFactoryBuilder().build(is);
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void test1() throws Exception {
// 3) 创建sqlSession, openSession是创建一个新的SqlSession
SqlSession sqlSession = factory.openSession();
// 4) 找到sql语句并执行
User user = new User();
user.setUsername("李四");
user.setPassword("123");
sqlSession.insert("com.westos.mapper.UserMapper.insert", user);
// 5) 提交事务
sqlSession.commit(); // 当然可以在 catch sqlSession.rollback():
// 6) 关闭sqlSession
sqlSession.close();
}
@Test
public void test2(){
SqlSession sqlSession = factory.openSession();
User user = new User();
user.setUsername("李四");
user.setPassword("456");
sqlSession.update("com.westos.mapper.UserMapper.update", user);
sqlSession.commit();
sqlSession.close();
}
@Test
public void test3() {
SqlSession sqlSession = factory.openSession();
sqlSession.delete("com.westos.mapper.UserMapper.delete", "张三");
sqlSession.commit();
sqlSession.close();
}
@Test
public void test4() {
SqlSession sqlSession = factory.openSession();
User user = sqlSession.selectOne("com.westos.mapper.UserMapper.selectOne", "张三");
System.out.println(user);
sqlSession.close();
}
@Test
public void test5() {
SqlSession sqlSession = factory.openSession();
List<User> list = sqlSession.selectList("com.westos.mapper.UserMapper.selectAll");
for (User user : list) {
System.out.println(user);
}
sqlSession.close();
}
}