mybatis 入门报错处理,dtd约束mybatis.xml设置,The server time zone value 报错

版权声明:本站所提供的文章资讯、软件资源、素材源码等内容均为本作者提供、网友推荐、互联网整理而来(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考,如有侵犯您的版权,请联系我,本作者将在三个工作日内改正。 https://blog.csdn.net/weixin_42323802/article/details/82497202

 入门案例,看的eclipse,配置idea 有一脸懵逼

遇到错误如下,创建了4个项目前前后后,仍跑不起来,最后mybatis看差不多从新来搞。常见的问题如下:

PS:最后附上代码:

 (1)DTD配置mybatis


eclipse配置不是配置的url  是配置的uri  这点要区分:

IDEA配置DTD约束给mybatis如下;

                  


mybatis以及mapper约束:

<!-- .DTD文件是xml格式文件的约束文件,它约束了该xml文件使用的标签以及标签之间的关系 -->
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- 该文件代表的是user类和user表的映射关系,关于user表的sql语句等等写在这里 -->
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="model.User">
<!-- #{}代表占位符?,表示mybatis框架会接收输入的参数并赋值到sql语句当中
      关于简单类型(int,String,date。long)可以使用value来代表参数名

 -->

 配置DTD:


 (2)config文件在IDEA中创建为resources包

大家都知道在eclipse中直接创建资源配置包,在idea中先创建普通包,转化为资源包就可以了。

点击config包,右键.....


 (3)时间报错处理

The server time zone value 报错,这个需要在jdbc中的jdbc.URL后面配置上时区。

下面三个可以更改时区,?不支持的可以用转义&amp(第三种)。

<property name="jdbcUrl"> jdbc:mysql://localhost:3306/exam?characterEncoding=utf8&serverTimezone=UTC </property>
<property name="jdbcUrl"> jdbc:mysql://localhost:3306/exam?serverTimezone=UTC </property>
<property name="jdbcUrl"> jdbc:mysql://localhost:3306/exam?characterEncoding=utf8&amp;serverTimezone=UTC </property>


 tset类:

package test;

import model.User;
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 java.io.IOException;
import java.io.InputStream;

/**
 * @auther SyntacticSugar
 * @data 2018/9/7 0007上午 11:03
 */
public class Demo {
    public static void main(String[] args) {

        try {
            InputStream in = Resources.getResourceAsStream("mybatis.xml");
            SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(in);
            SqlSession session = ssf.openSession();
            int id = 30;
            User user = (User) session.selectOne("model.User.findUserById",id);
            System.out.println(user);
            session.close();

        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

 mybatis.xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<!-- .DTD文件是xml格式文件的约束文件,它约束了该xml文件使用的标签以及标签之间的关系 -->
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- 根标签 配置 -->
<configuration>
<!-- properties标签代表加载指定路径的properties文件 -->
<properties resource="jdbc.properties" >


</properties>

<!-- 环境(数据源信息) -->
<environments default="development">
<environment id="development">
		<!-- 使用jdbc事务管理,事务控制由mybatis-->
			<transactionManager type="JDBC" />
		<!-- 数据库连接池,由mybatis管理-->
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.DriverClassName}" />
				<property name="url" value="${jdbc.url}" />
				<property name="username" value="${jdbc.username}" />
				<property name="password" value="${jdbc.password}" />
			</dataSource>
</environment>

</environments>

<mappers>
<mapper resource="user.xml"/>

</mappers>


</configuration>

user.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<!-- 该文件代表的是user类和user表的映射关系,关于user表的sql语句等等写在这里 -->
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="model.User">
<!-- #{}代表占位符?,表示mybatis框架会接收输入的参数并赋值到sql语句当中
      关于简单类型(int,String,date。long)可以使用value来代表参数名

 -->

 <select id="findUserById" parameterType="java.lang.Integer" resultType="model.User">
  select * from user where id=#{id}
 </select>

<!-- ${}代表字符串拼接 -->


<!-- 插入的时候可以使用主键回填的策略,LAST_INSERT_ID() -->

</mapper>

UserDao层开发:

package dao;

import model.User;

import java.util.List;

public interface UserDao {
    User findUserById(int id);//通过id 查询
    List<User> findUserByName(String name );

}

impl实现类层:

package daoimpl;

import dao.UserDao;
import model.User;
import org.apache.ibatis.session.SqlSession;
import utils.MybatisUtils;

import java.util.List;

/**
 * @auther SyntacticSugar
 * @data 2018/9/7 0007下午 3:57
 */
public class DaoImpl implements UserDao {


    /**
     *
     * 原始的dao实现方法有重复的部分   使用mapper代理来实现
     *      user.xml 中<mapper namespace="model.User">
     *          mapper  namespace的名称和interface的名称保持一致。
     *
     * @param id
     * @return
     */

//    @Override
//    public User findUserById(int id) {
//        //获取会话
//        SqlSession session = MybatisUtils.getFactory().openSession();
//        User user = (User) session.selectOne("model.User.findUserById", id);//传入sql  以及要查询的id
//        return user;
//    }
//
//    @Override
//    public List<User> findUserByName(String name) {
//        SqlSession session = MybatisUtils.getFactory().openSession();
//        List<User> list = session.selectList("model.User.findUserByName", name);
//        return list;
//    }


    @Override
    public User findUserById(int id) {



        return null;
    }
}

使用mapper代理开发未完(避免重复代码)。

总之,看的视频也老,自己摸索跑起来很开心,有不对的地方望大家指出。

猜你喜欢

转载自blog.csdn.net/weixin_42323802/article/details/82497202