mybatis优化

572 阅读1分钟

概念: myBatis是一个持久层的ORM框架,即是一个半成品的软件,解决了软件开发中的通用性问题,简化了开发步骤,提高了开发效率。

ORM:object relational mapping 对象关系映射,将程序中的对象与表记录的数据一一对应。

作用:

1.支持自定义的sql,存储过程以及高级映射

2.对原生的JDBC操作进行了封装,几乎消除了冗余的jdbc代码

3.支持xml配置sql和注解配置sql,并自动完成ORM操作,将结果返回。

JDBC有什么缺点?:

1.存在大量的冗余代码

2.手动获取,关闭connection

3.需要封装ResultSet

4.效率不高,没有缓存

优化

a.将数据库连接参数配置db.properties中

  --<properties resource="db.properties"></properties>
  --<property name="driver" value="${driver}"/>
  

b.连接池替换成druid --定义连接池工厂,继承UnpooledDataSourceFactory

--提供构造方法,在该方法中,给父类的dataSource赋值

--在mybatis的主配置文件中,通过type指向自定义的dataSourceFactory

c.配置实体类别名

方式一:基于xml配置

  <typeAliases>
    //给单个实体类定义别名 type:类型  alias:别名
	<!--<typeAlias type="com.qf.entity.Sale" alias="sale"></typeAlias>-->
    //通过扫包的方式批量给包下的实体类定义别名,默认是类名小写或者大写
	<package name="com.qf.entity"/>
</typeAliases>

方式二:基于注解配置

  @Alias("sale1")
  public class Sale {} 

d.实体类属性名与字段不一致

方式一:定义别名

方式二:将resultType定义成map

   <select id="findById2" resultType="map/int/double/javaBean">
    select * from sale where id=#{id}
   </select>
   

方式三:自定义resultMap,指定字段名与属性名的对应关系

  <select id="findById3" resultMap="saleMap">
    select * from sale where id=#{id}
  </select>
  <resultMap id="saleMap" type="sale1">
    <id column="id" property="id"></id>
    <result column="prodName" property="name"></result>
    <!--<result column="qty" property="qty"></result>-->
   </resultMap>