栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MyBatis相关配置及工程创建

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MyBatis相关配置及工程创建

创建工程是,创建的是maven工程

首先需要配置pom.xml中配置MyBatis的相关依赖

这些依赖我们可以直接去百度复制下来


  4.0.0
  com.cmj
  MyBatis
  0.0.1-SNAPSHOT
  MyBatis
  MyBatis
      
           

            
                org.mybatis
                mybatis
                3.5.0
            

            
                mysql
                mysql-connector-java
                8.0.15
            


            
                log4j
                log4j
                1.2.17
            

        
  

2、我们要创建对应的配置文件

一般我们把对应配置文件放在

这个文件下

db.properties配置的是我们对应数据库的账号密码及对应的IP等

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/mybatis?serverTimezone=UTC&useSSL=false
username=root
password=root

log4.properties配置的是生成log的相关数据

# Global logging configuration
log4j.rootLogger=ERROR, stdout

# MyBatis logging configuration...
log4j.logger.com.cmj.dao.StudentMapper=DEBUG
log4j.logger.com.cmj.dao.TeacherMapper=DEBUG

# 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

Mybatis-config.xml为相关的所有的配置

我们首先要注意的是,对应的配置顺序不能打乱,需要按照要求进行

properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,reflectorFactory?,plugins?,environments?,databaseIdProvider?,mappers?)"。

如果没有的,可以直接省略,但是不能随意调换其他配置的顺序







    
    

    
    
        
        
    
    
    	
    


    

        
        

            
            

            
            
                
                
                
                
            
        
    

    
    

    
    
      
      
    


其中:

 
        
   

  1.  mapper配置:

        

        
          
          
        

    配置完成之后,我们就可以写对应的项目实现了:

    1、定义类

            

            首先我们先定义对应的类,比如我们这边创建的是老师类 

            在老师类中,我们定义了三个属性

            

        private int id;
    	private String name;
    	private String passWord;
    

    定义好属性之后,直接创建对应属性的get和set方法

    他的无参构造与有参构造方法

    重写他的toString方法

    2、TeacherMapper.java

            创建对应接口:(接口没有实现体,这个需要后续去实现这个接口时,重写这个方法)

             这边创建了四个方法,分别对应增删改查四个方法

    package com.cmj.dao;
    import com.cmj.entity.Teacher;
    
    public interface TeacherMapper {
    	public Teacher selectByName(String name);
    	public void add(Teacher teacher);
    	public void updateTeacher(Teacher teacher);
    	public void deleteByName(String name);
    	
    }
    
    3、对应的TeacherMapper.xml     

            这块的名字啥的,需要与接口名一致

            如何实现接口与数据库进行绑定,执行

            通过namespace与id做绑定进行的

    
    
    
        "selectByName"  resultType="teacher">

            select * from `teacher` where name = #{name}

       

    这块的ID,对应的是我们接口中,查询的方法名一致

    resultType结果类型,有些时候是可以省略不需要写上

     #{name}这个表示为传入的name值直接可以获取到对应的值,但是这个一般是为单个的取值,如果多个的话,通过@param来注释,将对应的入参进行重新定义

    如果没有进行注释的话,则会按照param1--param10按照顺序排列

    4、测试我们的增删改查方法

    单元测试,我们都把对应测试代码放到我们的这个包下

    package com.cmj;
    import java.io.IOException;
    import java.io.InputStream;
    
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    import org.junit.Test;
    
    import com.cmj.dao.StudentMapper;
    import com.cmj.dao.TeacherMapper;
    import com.cmj.entity.Student;
    import com.cmj.entity.Teacher;
    
    public class TeacherTest1 {
    
    	
    	@Test
    	//接口式编程
    	public void selectByName() throws IOException {
    		String resource = "mybatis-config.xml";
    		InputStream is = Resources.getResourceAsStream(resource);
    		// 初始化mybatis,创建SqlSessionFactory类实例
    		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
    		// 创建Session实例
    		SqlSession session = sqlSessionFactory.openSession();
    		TeacherMapper mapper =session.getMapper(TeacherMapper.class);//传入接口类,为他生成一个代理类
    		Teacher teacher  =mapper.selectByName("mini");
    		System.out.println(teacher);
    		
    	}
    	@Test
    	//接口式编程
    	public void add() throws IOException {
    		String resource = "mybatis-config.xml";
    		InputStream is = Resources.getResourceAsStream(resource);
    		// 初始化mybatis,创建SqlSessionFactory类实例
    		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
    		// 创建Session实例
    		SqlSession session = sqlSessionFactory.openSession();
    		TeacherMapper mapper =session.getMapper(TeacherMapper.class);//传入接口类,为他生成一个代理类
    		Teacher teacher  =new Teacher();
    		
    		teacher.setName("小的");
    		teacher.setPassWord("56565");
    		mapper.add(teacher);
    		session.commit();
    		System.out.println(teacher);
    	}
    	@Test
    	//接口式编程
    	public void updateTeacher() throws IOException {
    		String resource = "mybatis-config.xml";
    		InputStream is = Resources.getResourceAsStream(resource);
    		// 初始化mybatis,创建SqlSessionFactory类实例
    		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
    		// 创建Session实例
    		SqlSession session = sqlSessionFactory.openSession();
    		TeacherMapper mapper =session.getMapper(TeacherMapper.class);//传入接口类,为他生成一个代理类
    		Teacher teacher  =new Teacher();
    		teacher.setName("dkd");
    		teacher.setPassWord("66565");
    		mapper.updateTeacher(teacher);
    		session.commit();
    		System.out.println(teacher);
    	}
    	@Test
    	//接口式编程
    	public void deleteByName() throws IOException {
    		String resource = "mybatis-config.xml";
    		InputStream is = Resources.getResourceAsStream(resource);
    		// 初始化mybatis,创建SqlSessionFactory类实例
    		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
    		// 创建Session实例
    		SqlSession session = sqlSessionFactory.openSession();
    		TeacherMapper mapper =session.getMapper(TeacherMapper.class);//传入接口类,为他生成一个代理类
    		mapper.deleteByName("mini");
    		session.commit();
    	}
    }
    

     我们先说我们的查询

    @Test
    	//接口式编程
    	public void selectByName() throws IOException {
    		String resource = "mybatis-config.xml";
    		InputStream is = Resources.getResourceAsStream(resource);
    		// 初始化mybatis,创建SqlSessionFactory类实例
    		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
    		// 创建Session实例
    		SqlSession session = sqlSessionFactory.openSession();
    		TeacherMapper mapper =session.getMapper(TeacherMapper.class);//传入接口类,为他生成一个代理类
    		Teacher teacher  =mapper.selectByName("mini");
    		System.out.println(teacher);
    		
    	}

    首先,我们需要先用@Test对这个进行测试,注释了这个之后,后续才会认为是可以单元测试的

    我们称之为这个小单元测试未接口式编程

    直接通过接口名直接定义该方法,要记住,这些方法的话,都没有对应的返回值

     这些前半部分的话,都是相同的内容

    主要就是后面的这些内容,

        TeacherMapper mapper =session.getMapper(TeacherMapper.class);//传入接口类,为他生成一个代理类

    Teacher teacher  =mapper.selectByName("mini");

    这一块内容为实现为调用查询这个方法时的

    执行后,可直接进行查询

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/396669.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号