一、加载数据库时可以编写外部文件通过导入的方式获取
(1)外部资源
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?userSSL=true&useUncode=true&characterEncoding=UTF-8
username=root
password=123456
//读取外部资源
<properties resource="db.properties"/>
<dataSource type="POOLED">
<property name="driver" value= "${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
二、可以准备多套环境,使用那套时仅需将默认环境环境设置对应环境的ID即可
三、设置类的别名
(1)方法一(修改类名):
<typeAliases>
<typeAlias type="com.lisi.pojo.User" alias="User"></typeAlias>
</typeAliases>
(2)方法二(指定包名):
1、Mybatis会在对应的包名下搜索需要的JavaBean,例如扫描实体类的包,它的默认名就为该类名的首字母缩写。
<typeAliases>
<package name="com.lisi.pojo"/>
</typeAliases>
2、(加注解):
在想修改的类里加注解引号中的就为该类的别名
@Alias("hello")
两种方法的对比:
(1)在实体类比较少的时候使用方法一,反之使用第二种。
(2)对一种的别名可以随意设置,第二种不可以,如果非要该则需要在对应类里面加注解
四、Mapper文件的注册绑定
方法一:
<mapper resource="com/lisi/dao/UserMapper.xml"></mapper>
方法二:
<mapper class="com.lisi.dao.UserMapper">
方法三:
<package name="com.lisi.dao"/>
方法二和方法三的注意事项:
(1)接口和Mapper配置文件必须同名
(2)接口和Mapper配置文件必须在一个包下
五、当属性名和字段名不一致的如何解决
(1)方法一:别名
<select id="getUserList" resultType="com.lisi.pojo.User">
select id , name , pwd as password from mybatis.user;
</select>
(2)方法二:resultMap
<resultMap id="UserMap" type="com.lisi.pojo.User">
<result column="id" property="id"/>
<result column="name" property="name"/>
<result column="pwd" property="passward"/>
</resultMap>
<select id="getUserList" resultMap="UserMap">
select id , name , pwd as password from mybatis.user;
</select>
五、分页的实现
(1)Limit实现分页
(2)RowBounds分页
(3)PageHelper插件
六、注解实现CRUD
(1)当有多个参数时所有的参数前面加上 @Param,且@Param中的名称与select中的参数名保持一致。
@Select("select * from user where id = ${id}")
User getUserById( @Param("id") int id);
设置事务自动提交:
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession(true);
}
七、Lombok插件使用
(1)在idea中安装Lombok插件
(2)在项目中导入lombok的jar包
(3)在实体类上加注解
@Date (无参构造、get、set、tostring、hashcode、equals方法)
@AllArgsConstructor (有参构造)@NoArgsConstructor(无参构造)
优缺点:
(1)简化代码,让开发更加的便捷,大大的节省了开发时间,提高了效率
(2)代码的可读性变差。
八、编写工具类利用UUID.randomUUID().toString()方法生成主键Id
UUID.randomUUID().toString()是javaJDK提供的一个自动生成主键的方法;
UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的,是由一个十六位的数字组成,表现出来的 形式。
工具类;
package com.lisi.utils;
import org.junit.Test;
import java.util.UUID;
@SuppressWarnings("all")
public class IDutils {
public static String getId(){
return UUID.randomUUID().toString().replaceAll("-"," ");
}
@Test
public void test(){
System.out.println(getId());
System.out.println(getId());
System.out.println(getId());
}
}
测试结果;
九、数据库中字段与Java中属性之间的转换(即数据库中**_*** 与Java的驼峰命名法转换)
Mybatis配置文件:
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
如果在数据库中,有一个字段为a_id,那么在javaBean中的属性也必须这样写,写成a_id,这种代码编写方式肯定不符合代码规范。
若开启则: 数据库返回的"order_address"命名字段映射为class的"orderAddress"字段。