MyBatis解析(一)------概念与配置
1.什么是mybatis
MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。它消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。
MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Java对象)映射成数据库中的记录。
2.mybatis的配置
2.1基于xml配置Mybatis
2.1.1创建MySQL数据库:mybatisDemo和表:user
2.1.2建立一个Java工程,并导入相应的jar包,具体目录如下
2.1.3在 MyBatisTest 工程中添加数据库配置文件 mybatis-configuration.xml
2.1.4定义表所对应的实体类
2.1.5定义操作 user 表的sql映射文件userMapper.xml
2.1.6向 mybatis-configuration.xml 配置文件中注册 userMapper.xml 文件
2.1.7创建测试类
package com.ys.test;
import java.io.InputStream;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;
import com.ys.po.User;
public class CRUDTest {
//定义 SqlSession
SqlSession session =null;
@Before
public void init(){
//定义mybatis全局配置文件
String resource = "mybatis-configuration.xml";
//加载 mybatis 全局配置文件
InputStream inputStream = CRUDTest.class.getClassLoader()
.getResourceAsStream(resource);
//构建sqlSession的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//根据 sqlSessionFactory 产生 session
session = sessionFactory.openSession();
}
//根据id查询user表数据
@Test
public void testSelectUserById(){
//这个字符串由 userMapper.xml 文件中 两个部分构成
String statement = "com.ys.po.userMapper.selectUserById";
User user = session.selectOne(statement, 1);
System.out.println(user);
session.close();
}
//查询所有user表所有数据
@Test
public void testSelectUserAll(){
String statement = "com.ys.po.userMapper.selectUserAll";
List
for(User user : listUser){
System.out.println(user);
}
session.close();
}
//模糊查询:根据 user 表的username字段
@Test
public void testSelectLikeUserName(){
String statement = "com.ys.po.userMapper.selectLikeUserName";
List
for(User user : listUser){
System.out.println(user);
}
session.close();
}
//向 user 表中插入一条数据
@Test
public void testInsertUser(){
String statement = "com.ys.po.userMapper.insertUser";
User user = new User();
user.setUsername("Bob");
user.setSex("女");
session.insert(statement, user);
//提交插入的数据
session.commit();
session.close();
}
//根据 id 更新 user 表的数据
@Test
public void testUpdateUserById(){
String statement = "com.ys.po.userMapper.updateUserById";
//如果设置的 id不存在,那么数据库没有数据更改
User user = new User();
user.setId(4);
user.setUsername("jim");
session.update(statement, user);
session.commit();
session.close();
}
//根据 id 删除 user 表的数据
@Test
public void testDeleteUserById(){
String statement = "com.ys.po.userMapper.deleteUserById";
session.delete(statement,4);
session.commit();
session.close();
}
}
2.2基于注解配置myBatis
前四点同上
2.2.5定义操作 user 表的注解接口 UserMapper.java(非注解配置的是xml文件)
package com.ys.annocation;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import com.ys.po.User;
public interface UserMapper {
//根据 id 查询 user 表数据
@Select("select * from user where id = #{id}")
public User selectUserById(int id) throws Exception;
//向 user 表插入一条数据
@Insert("insert into user(username,sex,birthday,address) value(#{username},#{sex},#{birthday},#{address})")
public void insertUser(User user) throws Exception;
//根据 id 修改 user 表数据
@Update("update user set username=#{username},sex=#{sex} where id=#{id}")
public void updateUserById(User user) throws Exception;
//根据 id 删除 user 表数据
@Delete("delete from user where id=#{id}")
public void deleteUserById(int id) throws Exception;
}
2.2.6向 mybatis-configuration.xml 配置文件中注册 UserMapper.java 文件
2.2.7测试