MyBatis的相关内容

MyBatis:
MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索。
MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。




MyBatis优点:
1、简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,
可以比较完全的掌握它的设计思路和实现。
2、灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。sql写在xml里,便于统一管理和优化。通过sql基本上可以实现我们不使用数据
访问框架可以实现的所有功能或许更多。
3、解除sql与程序代码的耦合:通过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,
提高了可维护性。
4、提供映射标签,支持对象与数据库的orm字段关系映射
5、提供对象关系映射标签,支持对象关系组建维护
6、提供xml标签,支持编写动态sql。


MyBatis缺点:
1、编写SQL语句时工作量很大,尤其是字段多、关联表多时,更是如此。
2、SQL语句依赖于数据库,导致数据库移植性差,不能更换数据库。
3、框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,
而且不太容易适应快速数据库修改。
4、不支持级联删除和级联更新操作
4、二级缓存机制不佳

MyBatis框架适用场合:
1、MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案。
2、对性能的要求很高,或者需求变化较多的项目,如互联网项目,MyBatis将是不错的选择。

Hello MyBatis   它的创建顺序:
1、下载添加jar包
mybatis-3.4.5.jar lib/*.jar可以添加也可以不添加
对应的数据库驱动  ojdbc6.jar或者mysql的驱动
2、创建数据库的表结构
create table t_users(
id bigint primary key auto_increment,
username varchar(20) not null,
password varchar(20) not null
)engine=innodb default charset utf8;
3、添加核心配置文件,位于src/根目录下,名称没有强制要求,一般建议可以使用mybatis-config.xml
核心配置文件中主要定义3方面的内容:
1、数据库连接的相关配置
2、MyBatis的运行时常量,例如是否使用二级缓存

3、注册映射元文件,映射元文件用于说明实体类和表之间的对应关系,同时定义对应的SQL语句

        4、定义表所对应的实体类和其对应的映射元文件

public class UserBean implements Serializable {
private static final long serialVersionUID = -4449222544558631368L;
private Long id;
private String username;
private String password;

映射元文件,名称没有规则,但是为了开发的方便,一般位置和实体类的位置一致,名称为"实体类名-mapper.xml"



5、编程调用

public class T1 {
public static void main(String[] args) throws IOException {
// 获取读取核心配置文件的输入流
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//创建SqlSession对象的工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
//创建SqlSession对象,SqlSession对象充当了实体管理器功能,提供了最基本的CRUD的方法
SqlSession session=factory.openSession();

UserBean user=new UserBean();
user.setUsername("yanjun");
user.setPassword("123456");

//调用映射元文件中所定义的 //增删改方法返回值为int,表示受影响行数
int len=session.insert("com.yan.entity.UserBean.insert",user);

//注意:一般持久层框架都默认事务回滚,如果需要修改生效,则需要手动提交事务
session.commit();

//由于session对象是Connection连接对象的浅封装,所以必须及时关闭  try/finally
session.close();
}

}


查删改的基本操作

按照id执行删除操作,请注意一般使用MyBatis之类的持久层框架时要求表中应该有主键

 
  delete from t_users where id=#{id}



int len=session.delete("com.yan.entity.UserBean.delete",3L);


按照id加载对应的值bean(一行数据对应一个值bean)

 
 
UserBean user=session.selectOne("com.yan.entity.UserBean.load",4L);
System.out.println(user);




修改操作,按照id修改非id属性

  update t_users set username=#{username},password=#{password} where id=#{id}



UserBean user=session.selectOne("com.yan.entity.UserBean.load",4L);
user.setUsername("zhangsan");
user.setPassword("lisi");
int len=session.update("com.yan.entity.UserBean.update",user);

System.out.println(len);


你可能感兴趣的:(Java)