mybattis的操作


主配置文件mybatis-config,放到rescource


	
	
	
	
		
	
	
	
		
		
		
	
	
	
	
		
		
			
			
			
			
				
				
				
				
			
		
	
	
	
	
		
		
		
		
		
	

在rescources放db.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql:///mybatis
username=root
password=admin

在rescources放log4j.properties

# Global logging configurationlog4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
#扫描dao包就可以log4j.logger.org.fkjava.mybatis.mapper=TRACE
# Console output...log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

log4j2.xml


	
		
		
			
			
			
			
			
			
			
			
		
	
	
		
		

		
		
			
		
	

通过ibatis操作

XxxMapper.xml没有什么规则,只要那么namespace=XxxMapper.xml放置的路径即可, 这个时候dao的接口不会起作用,可以不写接口 namespace="org.fkjava.domain.XxxMapper"

InputStream inputStream = Resources.getResourceAsStream(resource);
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);		
		// 创建SqlSession对象
		SqlSession session = factory.openSession();		
		//查询一条记录,通过namespace+id查找sql
		User user = session.selectOne("org.fkjava.mybatis.domain.UserMapper.findById", 2);		
		//查询所有记录
		List users = session.selectList("org.fkjava.mybatis.domain.UserMapper.findAll");		
		//带参数查询
		List users = session.selectList("org.fkjava.mybatis.domain.UserMapper.findByLike", "人");		
		//插入数据
		session.insert("org.fkjava.mybatis.domain.UserMapper.insertUserInfo", user);		
		//修改数据
		session.update("org.fkjava.mybatis.domain.UserMapper.updateUserInfo", user);		
		//删除数据
		session.delete("org.fkjava.mybatis.domain.UserMapper.deleteById", 7);		
		// MyBatis事物默认是手动提交的,需要开发者自己提交事物
		session.commit();
		session.close();

通过Mapper动态代理

需要提供一个dao接口,接口和XxxMapper.xml有规则:

XXXMapper.xml和dao接口的文件名一样;
XXXMapper.xml的命名空间namespace等于dao接口的全限定名(类路径);
XXXMapper.xml的id等于接口的方法名;
XXXMapper.xml的参数类型等于方法的参数类型;
XxxMapper.xml的返回数据类型等于方法的返回类型。

注解和配置文件的操作是一样的,不同的是一个要XxxMapper.xml,一个用注解代替 ,在主配置文件mybatis-config.xml扫描不一样,注解只扫描接口,配置文件只扫描XxxMapper.xml,包扫描就两个都包含

InputStream inputStream = Resources.getResourceAsStream(resource);		
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);		
// 创建SqlSession对象
SqlSession session = factory.openSession();		
// 通过MyBatis动态创建UserMapper接口的代理对象
	UserMapper mapper = session.getMapper(UserMapper.class);		
	//调用接口自定义的方法
	User user = mapper.findById(1);		
	List users = mapper.findAll();		
	List users = mapper.findByIds(ids);		
	session.comit();		
	session.close();

注解的配置

public interface AnnoMapper {
	@Select("select * from user where id = #{id}")	User findById(Integer id);
	
	@Select("select * from user")
	List findAll();
	
	@Delete("delete from user where id = #{id}")
	void deleteById(Integer id);
	
	@Update("update user set name=#{name},age=#{age},password=#{password} where id =#{id}")
	void updateUser(User user);
	
	@Insert("insert into user (name,age,password) values(#{name},#{age},#{password})")
	void insertUser(User user);
	
	
}

接口参数传递配置

public interface UserMapper {	
	User findById(Integer id);
	
	List findAll();
	
	void updateUserInfo(User user);
	
	void insertUserInfo(User user);
	
	void deleteById(Integer id);	
	
	User login(@Param("name")String name,@Param("password")String password);	
	User login1(Map map);
	
	
	List findByCondition(QueryObject qo);
	

	List findByIds(@Param("ids")Integer[] ids);
	
}

XxxMapper.xml一般放在dao接口一样位置


  
  
  
  	
  	
  		select * from user where id = #{id}
  	
  	
  	
  	
  		select id u_id,name u_name,age u_age,password u_password from user  	
  	
  	
  		
  		
  		
  		
  		
  		
  	
  	
  	
  	
  	
  		select * from user where name like '%${value}%'  	
  	
  	
  	
  	
  	
  		update user 
  		
  			name=#{name},
  			age=#{age},
  			password=#{password}
  		
  		where id = #{id}
  	
  	
  	
  	
  		delete from user where id = #{id}
  	
  	
  	
  	
  		insert into user (name,age,password)values(#{name},#{age},#{password})  	
  	
  	
  	
  		select * from user where name = #{name} and password = #{password}
  	
  	
  	
  	
  		select * from user where name = #{name} and password = #{password}
  	
  	
  	
  	
  	
  		select * from user  		
  			
  				name = #{name}
  			
  			
  				or age = #{age}
  			
  			
  	
  	
  	
  	
  		
		select * from user where id in		
			#{id}		
		
  	
  	
  
  		select * from department where id = #{id}
  	
  	
  	
  		
  		
  		
  	
  	
  	
		select * from employee where id = #{id}
	
	
	
		
		
	
	
	
	
		
			
				type_code like '${typeCode}%'			
			
				and title like '%${keyword}%'			
		
	
	
	
		select * from ec_article		
		
		limit #{beginIndex},#{pageSize}