MyBatis学习笔记(二)

其他运用方式扩展

注解方式的映射器

此种方法接口类不需要配置对应的xml文件,可直接在方法上直接添加注解,需要在MyBatis的主配置文件上配置相应的接口信息,主配置信息mybatis-config.xml修改如下:


	
		
		
		
	

接口类中增加注解

import org.apache.ibatis.annotations.Insert;

import com.mybatis.entity.User;

public interface IUserMapping {
	@Insert("insert into t_user values(null,#{username},#{password})")
	public int add(User user);
	
}

参数设置相关

typeAliases标签的使用

	
		
		
		
		
	
抽取工具类,简化代码

MyBatis学习笔记(二)_第1张图片
如上过程中的代码在每一次进行一次增删改查时都需要进行此操作,下一步这些代码抽取,创建一个工具类

public class SqlSessionFactoryUtils {
	// 私有化构造方法,这个构造方法只能被这个类的内部所使用
	private SqlSessionFactoryUtils() {
	};

	// 私有静态对象
	private static SqlSessionFactory factory;

	// 创建工厂对象的方法,内部使用
	private static SqlSessionFactory createSqlSessionFactory() throws IOException {
		// 同步锁,防止多线程创建多个factory对象
		synchronized (SqlSessionFactoryUtils.class) {
			if (factory == null) {
				SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
				factory = builder.build(Resources.getResourceAsStream("mybatis-config.xml"));
			}
			return factory;
		}
	}

	// 创建SqlSession的方法,公有的,供外部使用
	public static SqlSession openSqlSession() throws IOException {
		if (factory == null) {
			createSqlSessionFactory();
		}
		return factory.openSession();

	}
}
使用扩展
  • 数据库中的id为主键自增时,无需重新再次查询,添加主键回填,后续可能会使用到
  • 当user属性和对象名不一致时,添加数据库字段名as类的属性名,模糊查询时使用concat进行连接
  • 当参数为多个时,可以使用对象、map、接口注解的方式
  • 动态表格技术,创建一个实体类,定义一个属性columns,在映射器的xml中用${columns}代替一部分字段,var.setColumns(“id,username,password as paw”);
  • sql片段,截取一部分sql语句中经常用到的,用一个标签代替,减少代码量

	
		insert into t_user values(null,#{username},#{paw})
	
	
	
	
	
	
	
	
	
	
	//接口类中添加注解(这是接口中的)
	public User getUserByNamePaw(@Param("username") String name,@Param("password") int pas);
	
	
	
	
		id,username,password as paw
	
	
	

你可能感兴趣的:(MyBatis学习笔记(二))