Mybatis-Spring 连接 MySQL8.0 的配置步骤出错解决

环境以及配置文件

  • JDBC jar版本 : 8.0.11
  • Mybatis jar版本 : 3.4.6
  • Spring jar版本 : 4.3.18
  • Mybatis-Spring jar版本 : 1.3.1
  • 配置信息文件 : db.properties
  • Spring配置文件 : applicationContext.xml
  • 测试路径如下图
    Mybatis-Spring 连接 MySQL8.0 的配置步骤出错解决_第1张图片

配置db.properties

  • 配置db.properties中填写以下内容

    # 驱动名这样写
    jdbc.driver=com.mysql.cj.jdbc.Driver
    # url这样写
    jdbc.url=jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    # 数据库用户名
    jdbc.username=root
    # 数据密码
    jdbc.password=password 
    
    • 这里有一个错误点, 就是用户名的key用的是username, 这样的话, 在applicationContext.xml中配置数据源时用的是${username}, 这样会导致一个问题, 因为XML的表达式中${username}, 代表电脑环境路径下的username!!! 就是说用的是你电脑的用户名, 不是数据库的用户名!!! 总而言之, 别用username当key名 我用的是jdbc.username.

配置applicationContext.xml

  1. 在applicationContext.xml中, 引入db.properties 文件.
    <context:property-placeholder location="db.properties"/>
    
  2. 配置数据源
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    bean>
    
  3. 配置 Mybatis 扫描mapper.XML文件
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        
        
        <property name="mapperLocations" value="com/dao/mapper/*.xml"/>
    bean>
    
  4. 扫描全部dao层接口
    
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.dao" />
        
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
    bean>
    

配置dao 层接口与 mapper文件

  1. dao接口
    public interface UserDao {
    	public List<User> selAll();
    }
    
  2. mapperXML文件
    <mapper namespace="com.dao.UserDao">
    	<select  id="selAll" resultType="com.entity.User">
        	select * from user
    	select>
    mapper>
    

测试

@Test
public void selAll() {
   ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
   UserDao userDao = context.getBean(UserDao.class);
   List<User> list = userDao.selAll();
   System.out.println(list);
}

你可能感兴趣的:(SSM)