Mybatis的步骤: 
1、创建实体类; 
2、创建mybatis-config.xml 
3、创建MybatisUtil工具类。(调用SqlSessionFactory会话工厂,包装成私有的方法,通过类名.属性名调用静态方法) 
4、测试 
//1、创建SqlSessionFactory对象,也是单例模式的 
//2、创建SqlSession对象 
//3、调用session的方法  如果是增删改,那么则需要使用session.commit()提交事务。 
//4、打印测试 
//5、关闭资源

3、事务

数据库中的增删改都对应一个事务,一致性,原子性。

1、增删改需要事务的提交,查询不需要。

2、指定返回结果的类型,如果是集合,那就是泛型。如果是增删改,不需要配置。

resultType:限定返回类型或者泛型约束。

parameterType:限定参数的类型

4、日志

做了什么事情,然后记录下来。

5、SqlSessionFactory

sql会话工厂

一个SQL会话工厂可以创造很多的sql会话,我们可以使用SQL会话操作数据库。

单例模式:(饿汉模式,懒汉模式)

在程序执行期间,只有一个实例。

多例模式、原型模式

在程序执行期间,有多个实例。

static{

}

静态代码块,辅助类完成对静态的属性初始化赋值。

static修饰的变量和方法,以及静态代码块,会随着类一块加载,只加载一次。

静态方法,可以直接使用类名调用。

格式:类名.方法名();

饿汉模式:类加载时就完成了初始化,所以类加载比较慢,但获取对象速度快。

懒汉模式:类加载时不初始化。

饿汉模式的特点是加载类时比较慢,但运行时获取对象的速度比较快,线程安全。饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变。懒汉模式的特点是加载类时比较快,但是在运行时获取对象的速度比较慢,线程不安全, 懒汉式如果在创建实例对象时不加上synchronized则会导致对象的访问不是线程安全的。所以在此推荐大家使用饿汉模式。

6、单元测试

对程序的功能模块进行测试,针对是无参的

1、可以导入eclisp的junit.

2、可以导入junit的jar包

1、创建sqlSessionFactory对象,也是单例模式的

2、创建SqlSession对象,执行数据库的操作的对象,必须依赖工厂。

3、通过session对象调用对应的方法来自执行sql语句。

7、模糊查询 使用concat()拼接字符串

select * from t_user where name like CONCAT('%','深','%')

1、选择map集合 

2、使用包装类来包装数据 1、因为查询语句定义在xml文件中针对敏感字符,容易识别不到,建议使用<![CDATA[查询语句]]>字节段,防止特殊符号被解析 

8、当实体类的属性名和列名不一致时 

1、在sql语句中使用as给列起别名,别名和属性名一致 

2、配置resultMap,type还是返回的类型,id唯一标志 

#<result>配置非主键列,column中表中的列名,property找实体类的属性名 <id>配置主键列  
 
<resultMap type="com.zhiyou100.entity.User" id="rm1"> 
<result column="sal" property="salary" /> 
</resultMap> 
 
<select id="select1" resultMap="rm1"> 
select * from t_user 
</select>

9、

增删改都需要数据的提交!

AFTER是表示在插入之前

查询新增的id语句为select LAST_INSERT_ID

10、在数据库中的一对一,或者一对多的关系上是

设置model时:

其中的一对多设置集合

多对一设置对象

一对多的时候,可以使用resultMap

搭建集合collection关系时,类型选择的是泛型,所以选择ifTyoe属性

11、为什么要用缓存?

如果缓存中有数据就不用从数据库中获取,大大提高系统性能。

注意:

1、增删改,事务提交,也会清除二级缓存

2、一般下执行完commit操作都需要刷新缓存,flushCache=true表示刷新缓存,这样可以避免数据库脏读。