发表于: 2016-06-30 15:01:23

2 2564


2016-06-28 ~2016-06-29

【完成工作】

一、构建Mybatis工程,工程结构如下图所示:

1. 配置SqlMapConfig.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>    

    <!--数据源配置  使用mysql数据库 -->

    <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:///students" />

        <property name="username" value="root"/>

        <property name="password" value="123456"/>

        </dataSource>

    </environment>

    </environments>

    <mappers>

       <mapper resource="sqlmap/StudentMapper.xml"/>

    </mappers>

</configuration>


2. Log4j.properties

# Global logging configuration,建议开发环境中要用debug

log4j.rootLogger=DEBUG, stdout

# Console output...

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

#没有写对,log显示不出来


3. StudentMapper.xml

<?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="student">

    <select id="findStudentById" parameterType="int" resultType="cn.nitasty.po.Student">

        select * from student where id =#{id}

    </select>

    <select id="findStudentByName" parameterType="java.lang.String" resultType="cn.nitasty.po.Student">

        select * from student where name like ='%${id}%'

    </select>

    <insert id="insertStudent" parameterType="cn.nitasty.po.Student">

    insert into Student(id,name,age,gender,profession,create_at,update_at) values (#{id},#{name},#{age},#{gender},#{profession},#{create_at},#{update_at})

    </insert>

    <delete id="deleteStudent" parameterType="int">

    delete from student where id=#{id}

    </delete>

    <update id="updateStudent" parameterType="cn.nitasty.po.Student">

    update student set name=#{name}, age=#{age},gender=#{gender},profession=#{profession},update_at=#{update_at} where id=#{id}

    </update>

</mapper>


4. Student.java

//创建Student类接收数据库数据

package cn.nitasty.po;

 

import java.util.Date;

 

public class Student {

    private int id;

    private String name;

    private String gender;

    private int age;

    private String profession;

    private Date create_at;

    private Date update_at;

    public int getId() {

        return id;

    }

    public void setId(int id) {

        this.id = id;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public String getGender() {

        return gender;

    }

    public void setGender(String gender) {

        this.gender = gender;

    }

    public int getAge() {

        return age;

    }

    public void setAge(int age) {

        this.age = age;

    }

    public String getProfession() {

        return profession;

    }

    public void setProfession(String profession) {

        this.profession = profession;

    }

    public Date getCreate_at() {

        return create_at;

    }

    public void setCreate_at(Date create_at) {

        this.create_at = create_at;

    }

    public Date getUpdate_at() {

        return update_at;

    }

    public void setUpdate_at(Date update_at) {

        this.update_at = update_at;

    }

    @Override

    public String toString() {

        return "Student [id=" + id + ", name=" + name + ", gender=" + gender

                + ", age=" + age + ", profession=" + profession

                + ", create_at=" + create_at + ", update_at=" + update_at + "]";

    }

 

5. Mybatis.java

package cn.nitasty.mybatis;

 

import java.io.IOException;

import java.io.InputStream;

import java.util.Date;

 

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 org.junit.Before;

import org.junit.Test;

 

import cn.nitasty.po.Student;

 

public class Mybatis {

    private SqlSessionFactory sqlSessionFactory;

    //创建工厂

    @Before

    public void init() throws IOException{

        //配置文件

        String resource="SqlMapConfig.xml";

        //加载配置文件到输入流

        InputStream inputStream = Resources.getResourceAsStream(resource);

        //创建会话工厂

        sqlSessionFactory =new SqlSessionFactoryBuilder().build(inputStream);

    }

    @Test

    public void findStudentById(){

        //通过sqlSessionFactory创建sqlSession

        SqlSession sqlSession=sqlSessionFactory.openSession();

        //通过sqlSession操作数据库

        //

        Student student=new Student();

        try {

            student=sqlSession.selectOne("student.findStudentById", 1);

        } catch (Exception e) {

            e.printStackTrace();

        } finally{

            //关闭sqlSession

            sqlSession.close();

        }

        System.out.println(student);

    }

 

    @Test

    public void InserStudent(){

        //通过sqlSessionFactory创建sqlSession

        SqlSession sqlSession=sqlSessionFactory.openSession();

        Student student=new Student();

        //student.setId(2);

        student.setName("琳琅");

        student.setAge(20);

        student.setGender("");

        student.setProfession("JS");

        student.setCreate_at(new Date());

        student.setUpdate_at(new Date());

        try{

            sqlSession.insert("student.insertStudent",student);

            sqlSession.commit();

        }catch (Exception e){

            e.printStackTrace();

        }finally{

            sqlSession.close();

        }

    }

 

    @Test

    public void updateStudent(){

        SqlSession sqlSession=sqlSessionFactory.openSession();

        Student student=new Student();

        student.setId(2);

        student.setName("百褶");

        student.setAge(18);

        student.setGender("");

        student.setProfession("CSS");

        student.setUpdate_at(new Date());

        try {

            sqlSession.update("student.updateStudent",student);

            sqlSession.commit();

        } catch (Exception e) {

            e.printStackTrace();

        } finally{

            sqlSession.close();

        }

    }

   

    @Test

    public void deleteStudent(){

        SqlSession sqlSession = sqlSessionFactory.openSession();

        try {

            sqlSession.delete("student.deleteStudent",2);

            sqlSession.commit();

        } catch (Exception e) {

            e.printStackTrace();

        } finally {

            sqlSession.close();

        }

    }

}

二、测试代码

1. 原始数据

2.测试findStudentById();

日志输出有出错,这个再研究研究

3. 测试insertStudent();

4. 测试updateStudent();

5. 测试 deleteStudent();

6. JUnit 测试结果

【遇到问题】

  日志打印出错,正在寻找原因

【今日收获】

学习了Mybatis基本运用,包括环境配置,SqlSessionFactory类,SqlSession接口等。

在这两天写代码的时候犯了许多低级错误,在一次次痛苦的排错中程序突然一下通了,简直比吃了统一老坛还酸爽十倍。

【明日计划】

找出日志出错原因,着手Task2





返回列表 返回列表
评论

    分享到