一:mybatis概念
1:简介
MyBatis本是apache的一个开源项目iBatis,2010年改名为 MyBatis,
MyBatis 是一个基于Java的持久层框架。(操作数据库)
2:优点
1:半自动化的ORM实现(实体类和SQL语句之间建立映射关系)
2:SQL代码从程序代码中彻底分离,可重用
3:与JDBC相比,减少了50%以上的代码量
4:小巧灵活、简单易学,是最简单的持久化框架
5:提供XML标签,支持编写动态SQL
6:提供映射标签,支持对象与数据库的ORM字段映射
3:MyBatis缺点
1:SQL语句编写工作量大,对开发人员有一定sql技术要求
2:数据库移植性差(不同数据库,sql语句语法有所不同)
*******************************************mybatis环境搭建开始******************************************
1:导入mybatis的jar包
mybatis-3.2.2.jar
mysql-connector-java-5.1.25-bin.jar
2:创建mybatis的核心配置文件(mybatis-config.xml)
3: 实体类
4:数据访问的接口(dao)
public List
5:接口与sql语句的映射 UserMapper.xml
命名空间必须是响应接口的全路径
id必须和接口中的方法名一致
resultType返回值类型(返回集合的话,指定集合元素的类型)
*******************************************************************写好的粘贴可用*************************************************************************
6:mybatis的工具类
获得SqlSession
①:读取配置文件,创建session工厂
②:在session工厂里,获得session会话
关闭session
判断session实例是否创建,不为null,就关闭session
/**
* mybatis的工具类
* 获得session
*/
public class MybatisUtil {
public static SqlSessionFactory sf; //session工厂
//获得session工厂
static {
try {
Reader is= Resources.getResourceAsReader("mybatis-config.xml");
sf= new SqlSessionFactoryBuilder().build(is);
} catch (Exception e) {
e.printStackTrace();
}
}
//获得session
public static SqlSession getSession(){
return sf.openSession();
}
//关闭session
public static void closeSession(SqlSession session){
if(session !=null){
session.close();
}
}
}
7: 数据操作
//获得session
session=MybatisUtil.getSession();
//获得接口实例
List
//关闭session
*******************************************mybatis环境搭建结束******************************************
*******************************************增删改开始***************************************************
/**
* 查询所有数据
* @return
*/
public List
******************
**************************************************
/**
* 根据编号查询对象
* @param 用户表的主键
* @return 一个对象user
*/
public User findById(Integer userId);
******************
**************************************************
/**
* 增加用户信息
* @param 一个对象数据
* @return 数据库的影响行数
*/
public Integer add(User user);
******************
INSERT INTO users VALUES(NULL,#{userName},#{password},#{realName})
**************************************************
/**
* 根据编号删除对象
* @param 用户表的主键
* @return 数据库的影响行数
*/
public Integer delete(Integer id);
******************
delete from users where id=#{id}
**************************************************
/**
* 修改用户信息
* @param 一个对象数据
* @return 数据库的影响行数
*/
public Integer update(User user);
******************
update users set userName=#{userName} ,password=#{password},realName=#{realName}
where id=#{id}
**************************************************
/**
* 连表查询用户信息
* 在从表的实体类中添加级联查询主表中的属性
* SELECT u.*,rolename 在用户表中添加角色表的属性-角色名称
*/
public List
******************
**************************************************
模糊查询
//根据角色名称,模糊查询角色列表
public List
*******************************************增删改查结束***************************************************