mybatis环境搭建以及CRUD操作


一、mybatis环境搭建


1.新建一个mave project

2.在pom.xml下导入jar包坐标,mybatis,mysql驱动,log4j,junit

 jar


    
        org.mybatis
        mybatis
        3.4.5
    

    
        mysql
        mysql-connector-java
        5.1.26
    

    
        commons-logging
        commons-logging
        1.1.3
    

    
        junit
        junit
        4.10
    

3.把log4j配置导入到main/resource下

4.在java下创建domian实体类,变量与mysql对应

public class User implements Serializable {}

5.在main/resource下创建mybatis的主配置文件:SqlMapConfig.xml,导入config的约束,并且进行配置

 
 


    
    
        
        
            
            
            
            
                
                
                
                
            
        
    

    
    
        
    

6.在java/sise/sn/dao下创建IUserDao接口

/**
 * 用户的持久层接口
 */
public interface IUserDao {

    /**
     * 查询所有用户
     * @return
     */
    List findAll();
}

7.创建 IUserDao的映射配置文件,在main/resource下创建于IUserDao同级目录的IUserDao.xml文件,导入map约束,并配置






    
    
    

8.编写测试类测试

/**
 * 测试mybatis的crud操作
 */
public class MybatisTest {

    /**
     * 测试查询所有
     */
    @Test
    public void testFindAll() throws IOException {
        //1.读取配置文件,生成字节输入流
        InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //2.获取SqlSessionFactory对象
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
        //3.获取SqlSeesion对象
        SqlSession sqlSession = factory.openSession();
        //4.获取dao的代理对象
        IUserDao userDao = sqlSession.getMapper(IUserDao.class);
        //5.执行查询所有方法
        List users = userDao.findAll();
        for (User user : users) {
            System.out.println(user);
        }
        //6.释放资源
         sqlSession.close();
        in.close();
    }
}

二、保存操作


1.dao, IUserDao中添加saveUser方法

   /**
     * 用户的持久层接口
     */
    public interface IUserDao {
    
        /**
         * 查询所有用户
         * @return
         */
        List findAll();
    
        /**
         * 保存方法
         * @param user
         */
        void saveUser(User user);
    }

2.在IUserDao.xml映射配置文件中添加

 
    
    
     
    
    
        select last_insert_id();
    
    
        insert into user (username,address,sex,birthday) values (#{username},#{address},#{sex},#{birthday});
    

3.在测试类中测试,把默认操作提取方法初始化

public class MybatisTest {

    private InputStream in;
    private SqlSession sqlSession;
    private IUserDao userDao;

    //定义初始化方法
    @Before//用于在测试方法执行之前执行
    public void init() throws IOException {
        //1.读取配置文件,生成字节输入流
        in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //2.获取SqlSessionFactory对象
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
        //3.获取SqlSeesion对象
        sqlSession = factory.openSession();
        //4.获取dao的代理对象
        userDao = sqlSession.getMapper(IUserDao.class);
    }

    //定义释放资源方法
    @After//用于在测试方法执行之后执行
    public void destory() throws IOException {
		 //提交事务
        sqlSession.commit();
        
        //释放资源
            sqlSession.close();
            in.close();
        }


	 /**
     * 测试保存操作
     */
     @Test
    public void testSave() throws IOException {
        User user = new User();
        user.setUsername("6ms");
        user.setAddress("北京");
        user.setSex("男");
        user.setBirthday(new Date());

        //5.执行查询所有方法
        userDao.saveUser(user);

    }
}

.


三、修改和删除操作


IUserdao:

/**
     * 更新用户
      * @param user
     */
    void updateUser(User user);

    /**
     * 根据id删除用户
     * @param userId
     */
    void deleteUser(Integer userId);

IUserdao.xml:

 
    
        update user set username=#{username},address=#{address},sex=#{sex},birthday=#{birthday} where id=#{id};
    
    
    
    
        delete from user where id=#{id}
    

test:

  /**
     * 测试更新操作
     */
    @Test
    public void testUpdate(){
        User user = new User();
        user.setId(49);
        user.setUsername("update 6maosong");
        user.setAddress("北京");
        user.setSex("男");
        user.setBirthday(new Date());

        //5.执行更新方法
        userDao.updateUser(user);

    }

    /**
     * 测试删除操作
     */
    @Test
    public void testDelete(){
        //5.执行删除方法
        userDao.deleteUser(42);

    }

四、模糊查询


IUserDao:

 /**
     * 根据名称模糊查询
     * @param username
     * @return
     */
     List findByName(String username);

IUserDao.xml


    

test:

 /**
     * 测试模糊查询
     */
    @Test
    public void testfindByName(){
        //5.执行模糊查询方法
        //要提供%
        List users = userDao.findByName("%王%");
        for (User user : users) {
            System.out.println(user);
        }
    }

优化



用配置文件配置连接池


1.把jdbcConfig.properties导入resource中

 	jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/eesy
    jdbc.username=root
    jdbc.password=root

2.在SqlMapConfig.xml中修改代码
配置properties和修改DataSource

  
    
    


    
    
        
        
            
            
            
            
                
                
                
                
            
        
    

全限定类名的优化


在SqlMapConfig.xml中


    
  

在IUserDao.xml中, resultType="sise.cn.domain.User”可改为resultType=“user”

  
        

在SqlMapConfig.xml中配置映射文件的位置


    
    

你可能感兴趣的:(mybatis框架)