MyBatis入门 增删改要提交事务异常回滚 不然数据库是不改变的 查的话就不用

2018年1月11日 20:49:21


上课



第一步骤 建立库 表
CREATE DATABASE USER;
USE USER;
CREATE TABLE USER(
uId INT(10) AUTO_INCREMENT NOT NULL PRIMARY KEY,
uName VARCHAR(20),
uPwd VARCHAR(20)
);
DESC USER;
SELECT * FROM USER;
第二步骤 新建项目
第三步骤 粘入四个包到lib里添加依赖
mysql-connector-java-5.1.0-bin.jar
mybatis-3.2.2-sources.jar
mybatis-3.2.2.jar
log4j-1.2.16.jar
还有
database.properties
log4j.properties
mybatis-config.xml
放到src下


创建包com.bdqn.dao
UserMapper.xml放dao包里面


创建com.bdqn.entity包
User.java放包里面


UserMapper.xml放com.bdqn.dao包里面


先配置
mybatis-3-config.xml





































然后配置UserMapper.xml文件









就可以main方法里测试了
InputStream ips=null;
SqlSession session=null;
// try {


// ips=Resources.getResourceAsStream("mybatis-config.xml");


// SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(ips);

 

//false表示不自动提交 程序员手动commit提交和异常回滚
// SqlSession session=sqlSessionFactory.openSession(false);

//因为还没取类型别名 所以全包名.接口名.方法名
// int count=session.selectOne("com.bdqn.dao.UserMapper.count");


// //如果是增删改的话 还要提交事务 在异常里 回滚 查询就不用
// //session.commit();


// System.out.println(count);
//
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// //增删改的话要回滚 查询不用
// }finally{
// try {
// if(ips!=null){
// ips.close();
// }
// if(session!=null){
// session.close();
// }
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// }












































优化一下
创建com.bdqn.utils包
创建类
package com.bdqn.utils;


import java.io.IOException;
import java.io.InputStream;


import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;


public class SqlSessionUtils {
private static SqlSessionFactory sqlSessionFactory;

static{
try {
InputStream ips=Resources.getResourceAsStream("mybatis-config.xml");
sqlSessionFactory=new SqlSessionFactoryBuilder().build(ips);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public static SqlSession getSqlSession(){
//false 不提交事务 要手动提交。commit();
SqlSession sqlSession=sqlSessionFactory.openSession(false);
return sqlSession;
}

public static void closeSession(SqlSession sqlSession){
if(sqlSession!=null){sqlSession.close();}
}
}






然后
com.bdqn.dao包创建接口
package com.bdqn.dao;


import java.util.List;


import com.bdqn.entity.User;


public interface UserDao {
//全查询
List selectAllUser();

//根据uId删除
int deleteUser(int uId);

//修改
int updateUser(User user);

//模糊查询
List selectByUname(String uName);

//增加
int addUser(User user);
}






改掉UserMapper.xml








delete from user where uId=#{uId}


update user set uName=#{uName},uPwd=#{uPwd} where uId=#{uId}


insert into user values(null,#{uName},#{uPwd})












最后测试
package com.bdqn.Test;


import java.io.IOException;
import java.io.InputStream;
import java.util.List;


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 com.bdqn.dao.UserDao;
import com.bdqn.entity.User;
import com.bdqn.utils.SqlSessionUtils;


public class Test {
public static void main(String[] args) {
InputStream ips=null;
SqlSession session=null;
// try {
// ips=Resources.getResourceAsStream("mybatis-config.xml");
// SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(ips);
// SqlSession session=sqlSessionFactory.openSession();
// int count=session.selectOne("com.bdqn.dao.UserMapper.count");
// System.out.println(count);
//
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }finally{
// try {
// if(ips!=null){
// ips.close();
// }
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// }

//查询
// session=SqlSessionUtils.getSqlSession();
// List list=session.getMapper(UserDao.class).selectAllUser();
// for (User user : list) {
// System.out.println(user.toString());
// }
// 注意查询之外的增删改都要提交事务和回滚 不然控制台看到是有效果 但是数据库是没改变的
//删除
// try {
// session=SqlSessionUtils.getSqlSession();
// int count=session.getMapper(UserDao.class).deleteUser(3);
// //事务回滚
// session.commit();
// System.out.println(count);
// } catch (Exception e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// //执行事务回滚
// session.rollback();
// }finally{
// SqlSessionUtils.closeSession(session);
// }

//修改
// try {
// session=SqlSessionUtils.getSqlSession();
// User user=new User(4, "lizihao", "888");
// int count=session.getMapper(UserDao.class).updateUser(user);
// session.commit();
// System.out.println(count);
// } catch (Exception e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// session.rollback();
// }finally{
// SqlSessionUtils.closeSession(session);
// }

//模糊查询
// try {
// session=SqlSessionUtils.getSqlSession();
// List list=session.getMapper(UserDao.class).selectByUname("li");
// for (User user : list) {
// System.out.println(user.toString());
// }
// } catch (Exception e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }finally{
// SqlSessionUtils.closeSession(session);
// }

//增加
try {
session=SqlSessionUtils.getSqlSession();
User user=new User();
user.setuName("pihua");
user.setuPwd("9999");
int count=session.getMapper(UserDao.class).addUser(user);
session.commit();
System.out.println(count);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
session.rollback();
}finally{
SqlSessionUtils.closeSession(session);
}
}
}


注意查询之外的增删改都要提交事务和回滚 不然控制台看到是有效果 但是数据库是没改变的

你可能感兴趣的:(MyBatis入门 增删改要提交事务异常回滚 不然数据库是不改变的 查的话就不用)