发表于: 2018-09-10 23:31:36

1 422


今天完成的事情:

一、在昨天的jdbcTemplate代码上更新,添加更新、删除、查找功能

更新和删除方法一样只需要更改jdbcTemplate执行的SQL语句

public void update(Integer id,String name,Integer age){
    String SQL = "update Student set name =?,age=? where id=?";
    jdbcTemplateObject.update(SQL,name,age,id);
    System.out.println("更改成功 ID = "+id+" Name = "+name+" Age = "+age);
    return;
}

public void delete(Integer id){
    String SQL = "delete from student where id = ?";
    jdbcTemplateObject.update(SQL,id);
    System.out.println("删除成功 ID = "+id);
    return;
}

  根据ID查找和查找所有和JDBC源码差别也不大,查找所有是先定义方法为对象模式数组,然后调用jdbcTemplate执行SQL语句返回结果。

public List<Student> listStudents() {
    String SQL = "select * from Student";
    List<Student> students = jdbcTemplateObject.query(SQL, new StudentMapper());
    return students;
}


public Student findByid(final Integer id){
    String SQL ="select * from Student WHERE id=?";
    List<Student> students = jdbcTemplateObject.query(SQL, new PreparedStatementSetter() {
        public void setValues(PreparedStatement preparedStatement) throws SQLException {
            preparedStatement.setInt(1,id);
        }
    },new StudentMapper());
    return students.get(0);

 

 

二、学习Mybatis的使用

1.IDEA中新建MAVEN项目,然后再POM中添加依赖

<dependencies>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.3.0</version>
    </dependency>
    <!-- mysql驱动包 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.12</version>
    </dependency>
    <!-- junit测试包 -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>
    </dependencies>

2. Mybatis的配置文件

resources中新建Configure.xml,里面定义了SQL链接属性,关联User

<?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 alias="User" type="com.mybatis.models.User" />
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC" />
                <property name="username" value="root" />
                <property name="password" value="root" />
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="models/User.xml" />
    </mappers>
</configuration>

  resources中新建文件夹models在里面建立User.xml,文件内主要定义SQL操作语句,关联DAO层的方法

<?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.mybatis.dao.IUser">
    <select id="getUser" parameterType="int" resultType="com.mybatis.models.User">
        SELECT * FROM student WHERE id = #{userId}
    </select>
    <insert id="insertUser" parameterType="User">
        INSERT INTO student(id,name, age) VALUES(#{id},#{name}, #{age})
    </insert>
    <select id="getUserList" resultType="com.mybatis.models.User">
        SELECT * FROM student
    </select>
    <update id="updateUser" parameterType="User">
        UPDATE student SET name= #{name}, age = #{age} WHERE id = #{id}
    </update>
    <delete id="deleteUser" parameterType="int">
        DELETE FROM student WHERE id = #{id}
    </delete>
</mapper>

3.定义DAO层接口

package com.mybatis.dao;
import com.mybatis.models.User;
import java.util.List;

public interface IUser {

    public List<User> getUserList();

    public void insertUser(User user);

    public void updateUser(User user);

    public void deleteUser(int userId);

    public User getUser(int id);
}

4.定义POJO层?

package com.mybatis.models;
public class User {
        private Integer id;
        private String name;
        private Integer age;

        public void setId(Integer id) {
        this.id = id;
        }
        public Integer getId() {
        return id;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getName() {
        return name;
        }
        public void setAge(Integer age) {
            this.age = age;
        }
        public Integer getAge() {
            return age;
        }
}

5. 然后就是编写个简单测试类

public class Main {
    private static SqlSessionFactory sqlSessionFactory;
    private static Reader reader;

    static {
        try {
            reader = Resources.getResourceAsReader("Configure.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static SqlSessionFactory getSession() {
        return sqlSessionFactory;
    }

public static void main(String[] args) {

try
    {

        SqlSession session = sqlSessionFactory.openSession();

        IUser userMapper = session.getMapper(IUser.class);
        System.out.println("增加一个王五");

        User user = new User();
        user.setId(1);
        user.setName("王五");
        user.setAge(20);
        userMapper.insertUser(user);
        // 提交事务
        session.commit();

        // 显示插入之后User信息

        System.out.println("增加成功...");
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}

 

明天计划的事情


   学习Junit编写测试单元,练习调试。


遇到的问题:


  关于配置文件的存放走了些弯路,测试IDEA中放到 resources文件甲中是正确的方法。 时间不够用,已经1点,写的有问题师兄多包涵.


收获:


   学习了Mybatis的基本配置和使用方法,基础知识还是不足,每天还要继续看JAVASQL的学习资料。

 



返回列表 返回列表
评论

    分享到