MyBatis总结 Day01

MyBatis快速入门及一些错误Day01

1.MyBatis介绍

​ MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀半自动持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装,转而使用简单的XML或注解用于配置原始映射,将接口和Java的POJO(普通Java对象)映射为数据库中的记录。

​ 半自动化:需要手写SQL语句。

JDBC–>dbutils–>MyBatis–>Hibernate(过于自动化)

2.MyBatis入门

2.1 导包

【mybatis】
mybatis-3.1.1.jar
【MYSQL 驱动包】
mysql-connector-java-5.1.7-bin.jar

2.2 配置mybatis-config.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/XXX" />
                <property name="username" value="root" />
                <property name="password" value="root" />
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="mapper/XXXMapper.xml"></mapper>
        (可以配置多个mapper)
    </mappers>
</configuration>

2.3 书写Dao层接口

public interface StudentDao {
    
    
    /**
     * 查询所有学生
     * @return
     */
    List<Student> queryAllStudent();

    /**
     * 增加一个学生
     * @param student
     * @return
     */
    int insertStudent(Student student);

    /**
     * 删除一个学生
     * @param sid
     * @return
     */
    int deleteStudent(Integer sid);

    /**
     * 修改一个学生(测试{param1}形式接收参数)
     * @param name
     * @param sex
     * @return
     */
    int updateStudent(String name,String sex,Integer sid);
}

2.4 配置对应的Mapper.xml映射文件
建议创建一个Mapper文件夹,用于存放各种Mapper映射文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxx.dao.StudentDao(接口全类名)">
    <select id="queryAllStudent" resultType(返回类型)="com.xxx.entity.Student">
        select * from student
    </select>

    <insert id="insertStudent" parameterType(提供参数类型)="com.xxx.entity.Student">
        insert into student(sid,sname,ssex,classid) values(#{sid},#{sName},#{sSex},#{classId})
    </insert>

    <update id="updateStudent" >
        update student set sname=#{param1},ssex=#{param2} where sid=#{param3}
    </update>

    <delete id="deleteStudent">
        delete from student where sid=#{sid}
    </delete>
</mapper>

3.使用中碰到的BUG


在这里插入图片描述
解决方法:mybatis-config.xml中数据库连接url后添加时区


在这里插入图片描述
解决方法:在mybatis-config.xml中配置mapper
或者mapper映射文件中的命名空间不是dao层接口的全类名


在这里插入图片描述
解决方法:注意mapper映射文件中SQL语句对应的字段名


在这里插入图片描述
如果使用的Maven工程可能会报这个错误,是IDEA的兼容问题。


在这里插入图片描述
解决办法:测试不要用main方法测试,使用junit测试

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44233253/article/details/115020660