mybatis入门-增删改查

2020-04-18  本文已影响0人  Summer2077

1.pom.xml 文件中引入相关依赖

<dependencies>
        <!-- https://mvnrepository.com/artifact/log4j/log4j -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>


        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.1.10.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.1.10.RELEASE</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.9.4</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.2</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.8</version>
            <scope>provided</scope>
        </dependency>

    </dependencies>

2.解决maven资源过滤问题

    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

3.编写实体类

Grade

@Data
@Component
@NoArgsConstructor
@AllArgsConstructor
public class Grade {
   private Integer gid;
   private String gname;
}

Student

@Data
@Component
@NoArgsConstructor
@AllArgsConstructor
public class Student {
    private  Integer sid;
    private  String sname;
    private  String english;
    private  String address;
    private  String math;
    private  Integer gid;
}

Users

@Data
@Component
@NoArgsConstructor
@AllArgsConstructor
public class Users {
    private Integer uid;
    private String uname;
    private String upwd;
}

4.编写接口

GradeMapper

public interface GradeMapper {
    //增
    int addGrade(Grade grade);
    //删
    int deleteGrade(@Param("id") int id);
    //改
    int updateGrade(Grade grade);
    //根据ID查单条数据
    Grade selectGradeById(@Param("id") int id);
    //查全部数据
    List<Grade> selectGradeAll();
}

StudentMapper

public interface StudentMapper {
    //增
    int addStudent(Student student);
    //删
    int deleteStudent(@Param("id") int id);
    //改
    int updateStudent(Student student);
    //根据ID查单条数据
    Student selectStudentById(@Param("id") int id);
    //查全部数据
    List<Student> selectStudentAll();
}

UsersMapper

public interface UsersMapper {
    //增
    int addUsers(Users users);
    //删
    int deleteUsers(@Param("id") int id);
    //改
    int updateUsers(Users users);
    //根据ID查单条数据
    Users selectUsersById(@Param("id") int id);
    //查全部数据
    List<Users> selectUsersAll();
}

6.编写核心配置文件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>

    <typeAliases>
        <typeAlias type="com.summer.pojo.Grade" alias="Grade"/>
        <typeAlias type="com.summer.pojo.Student" alias="Student"/>
        <typeAlias type="com.summer.pojo.Users" alias="Users"/>
    </typeAliases>

    <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/SpringStudy"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper class="com.summer.mapper.GradeMapper"/>
        <mapper class="com.summer.mapper.StudentMapper"/>
        <mapper class="com.summer.mapper.UsersMapper"/>
    </mappers>

</configuration>

7.编写mapper 的xml 文件

GradeMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.summer.mapper.GradeMapper">

    <insert id="addGrade" parameterType="Grade">
        insert into grade (gid, gname) values (#{gid},#{gname});
    </insert>

    <delete id="deleteGrade" >
        delete from grade where id = #{id};
    </delete>


    <update id="updateGrade" parameterType="Grade">
        update grade set gname = #{gname} where  gid = #{gid}
    </update>

    <select id="selectGradeById" resultType="Grade">
        select * from grade where  gid = #{id};
    </select>


    <select id="selectGradeAll" resultType="Grade">
        SELECT * from  grade;
    </select>

</mapper>

StudentMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.summer.mapper.StudentMapper">

    <insert id="addStudent" parameterType="Student">
        insert into student(sid,sname,english,math,address,gid)
        values (#{sid},#{sname},#{english},#{math},#{address},#{gid})
    </insert>

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

    <update id="updateStudent" parameterType="Student">
        update student set
         sname=#{sname},
         english=#{english},
         math=#{math},
         address=#{address},
         gid = #{gid}
         where sid = #{sid}
    </update>

    <select id="selectStudentById" resultType="Student">
        select * from student where id = #{id}
    </select>

    <select id="selectStudentAll" resultType="Student">
        select * from student;
    </select>
</mapper>

UsersMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.summer.mapper.UsersMapper">

    <insert id="addUsers" parameterType="Users">
        insert into users(uid,uname,upwd) values (#{uid},#{uname},#{upwd})
    </insert>

    <delete id="deleteUsers">
        delete from users where uid = #{id}
    </delete>

    <update id="updateUsers" parameterType="Users">
        update users set
        uname = #{uname},
        upwd = #{upwd}
        where uid = #{uid};
    </update>

    <select id="selectUsersById" resultType="Users">
        select * from users where uid = #{id}
    </select>

    <select id="selectUsersAll" resultType="Users">
        select * from users;
    </select>

</mapper>

8.测试

  @Test
    public void test01() throws IOException {
        String res = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(res);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        UsersMapper mapper = sqlSession.getMapper(UsersMapper.class);
        int summer1 = mapper.updateUsers(new Users(2, "summer", "200"));
        System.out.println(summer1);
        List<Users> users = mapper.selectUsersAll();
        System.out.println(users);
    }

今天遇到的问题反思:

  1. mybatis-config.xml 核心配置文件
<mappers>
        <mapper class="com.summer.mapper.GradeMapper"/>
</mappers>

写成

<mappers>
        <mapper class="com.summer.mapper.GradeMapper.xml"/>
</mappers>

运行报错!!!
2.编写mapper映射文件的时候

  <update id="updateUsers" parameterType="Users">
        update users set
        uname = #{uname},
        upwd = #{upwd}
        where uid = #{uid};
    </update>

在 upwd = #{upwd}后多加一个 , 导致报错。

3.insert

  <insert id="addUsers" parameterType="Users">
        insert into users(uid,uname,upwd) values (#{uid},#{uname},#{upwd})
 </insert>

sql语句很正常的是 users(uid,uname,upwd) 。()中的内容不要加 ' '。

上一篇 下一篇

猜你喜欢

热点阅读