本文转载:
本人文笔不行,根据上面博客内容引导,自己整理了一些东西
首先给大家推荐几个网页:
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
一、理解什么是MyBatis?
MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。 MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索。MyBatis 可以使用简单的XML 或注解用于配置和原始映射,将接口和 Java 的 POJO( Plain Old Java Objects,普通的Java 对象)映射成数据库中的记录.
1)MyBATIS 目前提供了三种语言实现的版本,包括:Java、.NET以及Ruby。(我主要学习java,就讲java的使用)
2)它提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。
3)mybatis与hibernate的对比?
mybatis提供一种“半自动化”的ORM实现。
这里的“半自动化”,是相对Hibernate等提供了全面的数据库封装机制的“全自动化”ORM实现而言,“全自动”ORM实现了POJO和数据库表之间的映射,以及 SQL 的自动生成和执行。
而mybatis的着力点,则在于POJO与SQL之间的映射关系。
二、简单例子(快速入门)
1)首先建立项目java web
2)配置mybatis所需的jar包,pom.xml
mysql
mysql-connector-java
5.1.35
org.mybatis
mybatis
3.2.8
org.slf4j
slf4j-api
1.7.7
ch.qos.logback
logback-core
1.1.3
ch.qos.logback
logback-access
1.1.3
ch.qos.logback
logback-classic
1.1.3
3)创建数据库数据(mybatis),创建表(t_user)
CREATE TABLE `t_user` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(20) default NULL,
`password` varchar(20) default NULL,
`account` double(10,2) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8
4)mysql驱动配置文件mysql.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/mybatis
jdbc.username=admin
jdbc.password=123456
5)添加mybatis配置文件mybatis.cfg.xml
6)创建对应的实体对象
7)创建方法接口UserMapper.java和定义操作t_user表的sql映射文件UserMapper.xml
提供简单的增删改查数据信息。
packagecom.wenyin.mybatis.mapper;importjava.util.List;importcom.wenyin.mybatis.beans.UserBean;public interfaceUserMapper {/*** 新增用戶
*@paramuser
*@return*@throwsException*/
public int insertUser(UserBean user) throwsException;/*** 修改用戶
*@paramuser
*@paramid
*@return*@throwsException*/
public int updateUser (UserBean user,int id) throwsException;/*** 刪除用戶
*@paramid
*@return*@throwsException*/
public int deleteUser(int id) throwsException;/*** 根据id查询用户信息
*@paramid
*@return*@throwsException*/
public UserBean selectUserById(int id) throwsException;/*** 查询所有的用户信息
*@return*@throwsException*/
public List selectAllUser() throwsException;
}
UserMapper.xml
insert into t_user (username,password,account) values (#{username},#{password},#{account})
update t_user set username=#{username},password=#{password},account=#{account} where id=#{id}
delete from t_user where id=#{id}
select * from t_user where id=#{id}
select * from t_user
这时需要为mybatis.cfg.xml里注册UserMapper.xml文件。
参照第5)步骤
8)需要建立一个工具类文件
packagecom.wenyin.mybatis.tools;importjava.io.Reader;importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;public classDBTools {public staticSqlSessionFactory sessionFactory;static{try{//使用MyBatis提供的Resources类加载mybatis的配置文件
Reader reader = Resources.getResourceAsReader("mybatis.cfg.xml");//构建sqlSession的工厂
sessionFactory = newSqlSessionFactoryBuilder().build(reader);
}catch(Exception e) {
e.printStackTrace();
}
}//创建能执行映射文件中sql的sqlSession
public staticSqlSession getSession(){returnsessionFactory.openSession();
}
}
9)写个测试UserService.java
packagecom.wenyin.mybatis.service;importjava.util.List;importorg.apache.ibatis.session.SqlSession;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importcom.wenyin.mybatis.beans.UserBean;importcom.wenyin.mybatis.mapper.UserMapper;importcom.wenyin.mybatis.tools.DBTools;public classUserService {private static Logger logger = LoggerFactory.getLogger(UserService.class);public static voidmain(String[] args) {
insertUser();//deleteUser(1);//selectUserById(2);//selectAllUser();
}/*** 新增用户*/
private static booleaninsertUser(){
SqlSession session=DBTools.getSession();
UserMapper mapper= session.getMapper(UserMapper.class);
UserBean user= new UserBean("test01", "123456", 7000.0);try{int index=mapper.insertUser(user);boolean bool=index>0?true:false;
logger.error("新增用户user对象:{},操作状态:{}",newObject[]{user,bool});
session.commit();returnbool;
}catch(Exception e) {
e.printStackTrace();
session.rollback();return false;
}finally{
session.close();
}
}/*** 删除用户
*@paramid 用户ID*/
private static boolean deleteUser(intid){
SqlSession session=DBTools.getSession();
UserMapper mapper=session.getMapper(UserMapper.class);try{int index=mapper.deleteUser(id);boolean bool=index>0?true:false;
logger.debug("根据用户id:{},操作状态{}",newObject[]{id,bool});
session.commit();returnbool;
}catch(Exception e) {
e.printStackTrace();
session.rollback();return false;
}finally{
session.close();
}
}/*** 根据id查询用户
*@paramid*/
private static void selectUserById(intid){
SqlSession session=DBTools.getSession();
UserMapper mapper=session.getMapper(UserMapper.class);try{
UserBean user=mapper.selectUserById(id);
logger.debug("根据用户Id:{},查询用户信息:{}",newObject[]{id,user});
session.commit();
}catch(Exception e) {
e.printStackTrace();
session.rollback();
}finally{
session.close();
}
}/*** 查询所有的用户*/
private static voidselectAllUser(){
SqlSession session=DBTools.getSession();
UserMapper mapper=session.getMapper(UserMapper.class);try{
List user=mapper.selectAllUser();
logger.debug("获取所用的用户:{}",user);
session.commit();
}catch(Exception e) {
e.printStackTrace();
session.rollback();
}finally{
session.close();
}
}
}
新增运行结果:
如果返回Map
select username,id from
t_user where
id=#{id}
返回List>
SELECT * FROM t_user