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文件
select count(1) from user 就可以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
select count(1) from user
select * from user
select * from user where uName like concat('%',#{uName},'%')
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);
}
}
}
注意查询之外的增删改都要提交事务和回滚 不然控制台看到是有效果 但是数据库是没改变的