Mybatis连接操作数据库的四种方式

第一种:

配置sqlMapConfig.xml(mybatis核心配置文件)



            
            
            
            
                
                
                
                
            
        


    
        
    

创建mapper.xml



     
    

在测试类中使用:

private SqlSessionFactory factory;
@Before //最先执行,初始化SessionFactory
    public void init() throws IOException{
        String resource = "sqlMapConfig.xml";
        InputStream is = Resources.getResourceAsStream(resource);
        factory = new SqlSessionFactoryBuilder().build(is);
    }

@Test   //查询一条
    public void testGet(){
        SqlSession session = factory.openSession();
        Person p = session.selectOne("cn.itcast.mapper.PersonMapper.get", 1);
        //cn.itcast.mapper.PersonMapper:mapper.xml中定义的命名空间
        // get:各种操作定义的id
        System.out.println(p);
    }

后面是三种都是结合spring,且动态生成mapper代理。
程序员只需要编写mapper接口(相当于dao接口),不需要编写 mapper接口的实现类,mybatis提供根据mapper接口和mapper.xml(映射文件)生成mapper接口动态代理对象(mapper接口的实现)。
具备什么规则生成mapper代理对象:
Mapper.xml中的namespace等于mapper接口的地址。
Mapper.xml中定义的sql的id(mapped statement的id)等于mapper.java中方法名
Mapper.xml中定义的statement的parametertype等于mapper.java中方法的形参类型。
Mapper.xml中定义的statement的resultType等于mapper.java中方法的返回值类型。

第二种 :

sqlMapConfig.xml核心配置文件不需要再配置xxxmapper.xml

applicationContext.xml:spring核心配置文件


    
    
    
    
        
        
        
        
    
    
    
    
        
        
        
        
        
        
        
    

创建mapper.xml:personMapper.xml



     
    
    
    
    
    
    
    
        insert into person
        (user_name,age,remark)
        values
        (   
            #{name, jdbcType=VARCHAR},
            #{age, jdbcType=INTEGER},
            #{remark, jdbcType=VARCHAR}
        )
    

创建PersonMapper接口文件,接口文件路径一定要和xxxmapper.xml文件namespace名称一致。

public interface PersonMapper {
    public List find(Map map);
    public void insert(Person person);
    public Person findPersonBook(Integer id);
        // 需要注意的是方法中的参数要和mapper.xml中定义的参数类型一致
}

编写dao层

@Repository
public class PersonDaoImpl extends SqlSessionDaoSupport implements PersonDao {
    
    /*
     * mybatis3.0.0+mybatis-psring1.0.0无需,整合包自己注入
     * mybatis3.2.2+mybatis-spring1.2.0 必须自己注入sqlSessionFactory;
     */
    @Resource
    public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
        super.setSqlSessionFactory(sqlSessionFactory);
    }
    
    public List find(Map map){
        PersonMapper mapper = this.getSqlSession().getMapper(PersonMapper.class);
        return mapper.find(map);
    }
    
    public void insert(Person person){
        PersonMapper mapper = this.getSqlSession().getMapper(PersonMapper.class);
        mapper.insert(person);
    }
    
    public Person findPersonBook(Integer id){
        PersonMapper mapper = this.getSqlSession().getMapper(PersonMapper.class);
        return mapper.findPersonBook(id);
    }
    
}

第三种 :

sqlMapConfig.xml核心配置文件不需要再配置xxxmapper.xml
注意:mapper.xml和mapper.java同名且在一个目录 ,不需要在SqlMapConfig.xml中加载mapper文件。
applicationContext.xml:spring核心配置文件






       
        
        
        
        
        
        




    
    




    
    
    
    





  配置mapper接口
  
  配置sqlSessionFactory
  

编写xxxmapper.xml文件

 
    

编写接口文件

public interface SysuserCustomMapper {
    
    public Sysuser findSysuserById(String id) throws Exception;
}

编写test类

public void testFindSysuserById() throws Exception {
        // 获取spring容器
                applicationContext = new ClassPathXmlApplicationContext(new String[] {
                        "spring/applicationContext.xml", "spring/applicationContext-dao.xml"

                });
        SysuserCustomMapper sysuserCustomMapper = (SysuserCustomMapper) applicationContext
                .getBean("sysuserCustomMapper");
        Sysuser sysuser =  sysuserCustomMapper.findSysuserById("286");
        System.out.println(sysuser);
    }

使用MapperFactoryBean需要在spring容器对每个mapper进行配置,麻烦。

第四种 :

利用代码生成工具(就是一个java工程)


Mybatis连接操作数据库的四种方式_第1张图片
4444444.png

1、将接口文件、mapper.xml、实体类文件拷贝到项目的相应包下即可。
2、在spring中配置mapper自动扫描器


   
   
    
    

3、编写测试类

private ApplicationContext applicationContext;

    protected void setUp() throws Exception {
        // 获取spring容器
        applicationContext = new ClassPathXmlApplicationContext(new String[] {
                "spring/applicationContext.xml", "spring/applicationContext-dao.xml"

        });
    }

    protected void tearDown() throws Exception {

    }
    
    public void testFindSysuserById() throws Exception {
        // 获取spring容器
                applicationContext = new ClassPathXmlApplicationContext(new String[] {
                        "spring/applicationContext.xml", "spring/applicationContext-dao.xml"

                });
        SysuserCustomMapper sysuserCustomMapper = (SysuserCustomMapper) applicationContext
                .getBean("sysuserCustomMapper");
        Sysuser sysuser =  sysuserCustomMapper.findSysuserById("286");
        System.out.println(sysuser);
    }

注意:mapper.xml和mapper.java同名且在一个目录

你可能感兴趣的:(Mybatis连接操作数据库的四种方式)