Mybatis(三)—接口实现增删改查和分页查询

一 创建UserMapper接口

 package com.yuyi.mapper;
    
    import java.util.List;
    
    import org.apache.ibatis.annotations.Delete;
    import org.apache.ibatis.annotations.Insert;
    import org.apache.ibatis.annotations.Param;
    import org.apache.ibatis.annotations.Select;
    
    import com.yuyi.pojo.User;
    
    public interface UserMapper {
        
    	
    	@Insert("insert into user(username) values (#{username})")
    	public int addUser(User user);
    	
    	@Select("select * from user where id=#{id}")
    	public User getUserById(int id);
    	
    	@Delete("DELETE FROM user WHERE id=#{id}")
    	public void deleteUser(int id);
    	
    	@Select("SELECT * from user")
    	public List findAllUser();
    	
    	@Select("select * from user limit #{start},#{count} ")
    	public List listByPage(@Param("start") int start, @Param("count")int count);
    	
    	@Select("select count(*) from user")
    	public int count();
    }

二 配置SqlMapConfig.xml文件






		

		
	
	
	

		
			
			
				
				
				
				
			
		

	
	
	
	
	


三 测试

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;

import com.yuyi.mapper.UserMapper;
import com.yuyi.pojo.User;
import com.yuyi.util.SqlSessionFactoryUtil;

public class UserTest {

	@Test
	public void testGetUserById() {
		SqlSessionFactory sessionFactory=SqlSessionFactoryUtil.getSqlSessionFactory();
		SqlSession sqlSession=sessionFactory.openSession(true);
		UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
		User user=userMapper.getUserById(27);
		System.out.println(user);
		sqlSession.commit();
		sqlSession.close();
	}
	@Test
	public void testAddUser() {
		SqlSessionFactory sessionFactory=SqlSessionFactoryUtil.getSqlSessionFactory();
		SqlSession sqlSession=sessionFactory.openSession(true);
		UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
		User user=new User();
		user.setUsername("xxx");
		userMapper.addUser(user);
		
	}
	
	@Test
	public void testDeleteUser() {
		SqlSessionFactory sessionFactory=SqlSessionFactoryUtil.getSqlSessionFactory();
		SqlSession sqlSession=sessionFactory.openSession(true);
		UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
		userMapper.deleteUser(127);
	}
	
	@Test
	public void testFindAllUser() {
		SqlSessionFactory sessionFactory=SqlSessionFactoryUtil.getSqlSessionFactory();
		SqlSession sqlSession=sessionFactory.openSession(true);
		UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
		List listUser=userMapper.findAllUser();
		for (User user : listUser) {
			System.out.println(user.getUsername());
		}
		
	}
	
	@Test
	public void testListByPage() {
		SqlSessionFactory sessionFactory=SqlSessionFactoryUtil.getSqlSessionFactory();
		SqlSession sqlSession=sessionFactory.openSession(true);
		UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
		List listUser=userMapper.listByPage(2, 100);
		for (User user : listUser) {
			System.out.println(user.getUsername());
		}
		sqlSession.commit();
		sqlSession.close();
	}
	
	@Test
	public void testCount() {
		SqlSessionFactory sessionFactory=SqlSessionFactoryUtil.getSqlSessionFactory();
		SqlSession sqlSession=sessionFactory.openSession(true);
		UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
		int count=userMapper.count();
		System.out.println("总数为:"+count);
		sqlSession.commit();
		sqlSession.close();
	}
}

四 DTD文件的配置

window——preferences——XML——XML Catalog——Add

Mybatis(三)—接口实现增删改查和分页查询_第1张图片
配置好mapper.dtd和config.dtd后再重新打开后就会有相应的提示


五 配置文件

environments环境

MyBatis可以配置多种环境,比如开发、测试和生
产环境需要有不同的配置。
• 每种环境使用一个environment标签进行配置并指
定唯一标识符
• 可以通过environments标签中的default属性指定
一个环境的标识符来快速的切换环境

environment-指定具体环境

id:指定当前环境的唯一标识

• transactionManager、和dataSource都必须有


transactionManager

type: JDBC | MANAGED | 自定义
– JDBC:使用了 JDBC 的提交和回滚设置,依赖于从数
据源得到的连接来管理事务范围。
JdbcTransactionFactory
– MANAGED:不提交或回滚一个连接、让容器来管理
事务的整个生命周期(比如 JEE 应用服务器的上下
文)。 ManagedTransactionFactory
– 自定义:实现TransactionFactory接口,type=全类名/
别名

dataSource

type: UNPOOLED | POOLED | JNDI | 自定义
– UNPOOLED:不使用连接池,
UnpooledDataSourceFactory
– POOLED:使用连接池, PooledDataSourceFactory
– JNDI: 在EJB 或应用服务器这类容器中查找指定的数
据源
– 自定义:实现DataSourceFactory接口,定义数据源的
获取方式。
• 实际开发中我们使用Spring管理数据源,并进行
事务控制的配置来覆盖上述配置

六 SqlSession

SqlSession 的实例不是线程安全的,因此是不能
被共享的。
• SqlSession每次使用完成后需要正确关闭,这个
关闭操作是必须的
• SqlSession可以直接调用方法的id进行数据库操
作,但是我们一般还是推荐使用SqlSession获取
到Dao接口的代理类,执行代理对象的方法,可
以更安全的进行类型检查操作

你可能感兴趣的:(Mybatis)