MyBatis是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。
MYBATIS 的着力点,则在于POJO 与SQL之间的映射关系。然后通过映射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定POJO。 相对Hibernate“O/R”而言,MYBATIS 是一种“Sql Mapping”的ORM实现。
Mybatis是流行的持久层开发框架,它相对比hibernate(也是持久层开发框架)比较简单
我面试过很多刚从培训机构出来的小伙,基本上都是培训个两三个月就出来找工作的,基本也就培训 struts 2+Spring+hibernate的吧,Mybatis如果你说你会的,会加分,所以如果你看到这篇文章,请好好的阅读一下
Mybatis可以分成三层:
(1)API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。
(2)数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。
(3)基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。
好了,就说到这里,下面就直接拿出来做一个,增删改查的小demo
package com.zkb.entity;
public class User {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
select * from userinfo where id = #{id}
select * from userinfo where username like #{username}
insert into userinfo values(null,#{username},#{password})
update userinfo set username=#{username},password=#{password} where id=#{id}
delete from userinfo where id=#{id}
package com.zkb.dao;
import java.util.List;
import com.zkb.entity.User;
public interface UserDao {
public User selectUserByID(int id);
public List
selectUsers(String username);
public void addUser(User user);
public void updateUser(User user);
public void delUser(User user);
}package com.zkb.test;
import java.io.Reader;
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.zkb.dao.UserDao;
import com.zkb.entity.User;
public class Test {
private static SqlSessionFactory sqlSessionFactory;
private static Reader reader;
static{
try{
reader = Resources.getResourceAsReader("Configuration.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] args) {
SqlSession session = sqlSessionFactory.openSession();
try {
UserDao userOperation=session.getMapper(UserDao.class);
//查询
List
users = userOperation.selectUsers("%a%");
for (User user : users) {
System.out.println(user.getUsername()+"\t"+user.getPassword());
}
//添加,这里id要设置为自动增长列
// User userAdd=new User();
// userAdd.setUsername("45646");
// userAdd.setPassword("123");
// userOperation.addUser(userAdd);
// session.commit();
//修改
// User userUp=userOperation.selectUserByID(5);
// userUp.setUsername("abcd");
// userUp.setPassword("efg");
// userOperation.updateUser(userUp);
// session.commit();
//删除
User userDel=userOperation.selectUserByID(5);
userOperation.delUser(userDel);
session.commit();
} finally {
session.close();
}
}
}
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `userinfo`
-- ----------------------------
DROP TABLE IF EXISTS `userinfo`;
CREATE TABLE `userinfo` (
`id` int(8) NOT NULL auto_increment,
`username` varchar(20) NOT NULL,
`password` varchar(20) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
-- ----------------------------
-- Records of userinfo
-- ----------------------------
INSERT INTO `userinfo` VALUES ('1', 'admin', 'admin');
INSERT INTO `userinfo` VALUES ('2', 'user', 'user');
INSERT INTO `userinfo` VALUES ('3', 'pass', 'pass');