发表于: 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。
评论