注意事项:
如果mapper.xml文件不在rescources资源目录下,则需要在maven配置资源过滤,不然扫不到xml文件
配置文件写完后需要在核心配置文件mapper中进行注册
sqlSession使用后需要关闭,且增删改操作需要自己手动提交事务,sqlSession不会自动提交
引入的外部属性配置文件中还可以继续添加属性,如果属性值重名,则默认优先使用外部的
核心配置文件中mapper映射器注册时,如果使用类和包扫描注册时,要求mapper文件名必须与接口文件名一致且必须在同一个包下
关于mybatis中的增删改操作,返回值默认类型为int受影响的行数,只需将接口中返回值类型改成int即可。
1.配置maven环境
导入mybatis,数据库连接驱动,junit单元测试坐标
org.mybatis mybatis3.5.7 mysql mysql-connector-java8.0.25 junit junit4.10 test src/main/java ***.xml false src/main/resources ***.xml false
2.在resources下创建mybatis-config.xml核心配置文件
3.获取sqlSession对象
MybatisUtils工具类
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
String resources = "mybatis-config.xml";
try {
//获取sqlSessionFactory对象
InputStream inputStream = Resources.getResourceAsStream(resources);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//获取sqlSession对象
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}
4.编写对应的xml映射文件
select * from user ;
5.编写单元测试
方式一:通过mapper调用接口方法
public class MybatisTest {
private static SqlSession sqlSession;
//查询所有用户信息
@Test
public void test01(){
try{
//获取sqlSession对象
sqlSession = MybatisUtils.getSqlSession();
//获取mapper
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//调用方法
List list = mapper.selectUser("张三");
for (User user : list) {
System.out.println(user);
}
}finally {
//关闭sqlSession
sqlSession.close();
}
}
//查询指定id信息
@Test
public void test02(){
try{
//获取sqlSession对象
sqlSession = MybatisUtils.getSqlSession();
//获取mapper
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//调用方法
User user = mapper.selectUserById(2);
System.out.println(user);
}finally {
//关闭sqlSession
sqlSession.close();
}
}
//修改指定id的用户信息
@Test
public void test03(){
try{
//获取sqlSession对象
sqlSession = MybatisUtils.getSqlSession();
//获取mapper
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//调用方法
//当传入多个参数时可以使用map集合来传入,map中的键可以指定,只需和mapper中取的参数对应即可
Map map = new HashMap();
map.put("username","zhangsan");
map.put("money",20000);
map.put("id",1);
mapper.updateUser(map);
//手动提交事务
sqlSession.commit();
}catch (Exception e){
//异常回滚
sqlSession.rollback();
e.printStackTrace();
}finally {
//关闭sqlSession
if(sqlSession!=null){
sqlSession.close();
}
}
}
//添加商品
@Test
public void test04(){
try{
//获取sqlSession对象
sqlSession = MybatisUtils.getSqlSession();
//获取mapper
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//调用方法
mapper.insertUser(new User("赵六", "555", 2000));
sqlSession.commit();
}catch (Exception e){
//异常回滚
sqlSession.rollback();
e.printStackTrace();
}finally {
//关闭sqlSession
if(sqlSession!=null){
sqlSession.close();
}
}
}
//删除指定id商品
@Test
public void test05(){
try{
//获取sqlSession对象
sqlSession = MybatisUtils.getSqlSession();
//获取mapper
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//调用方法
mapper.deleteUser(4);
sqlSession.commit();
}catch (Exception e){
//异常回滚
sqlSession.rollback();
e.printStackTrace();
}finally {
//关闭sqlSession
if(sqlSession!=null){
sqlSession.close();
}
}
}
}
方式二:通过sqlSession直接调用(不推荐使用)
//添加商品:方式二
@Test
public void test06(){
try{
//获取sqlSession对象
sqlSession = MybatisUtils.getSqlSession();
//获取mapper
int insert = sqlSession.insert("com.mybatis.dao.UserMapper.insertUser",new User("赵六", "555", 2000));
//调用方法
if(insert>0){
System.out.println("添加成功");
}
sqlSession.commit();
}catch (Exception e){
//异常回滚
sqlSession.rollback();
e.printStackTrace();
}finally {
//关闭sqlSession
if(sqlSession!=null){
sqlSession.close();
}
}
}



