一、创建数据库表1.1、创建表
USE`mybatis`;/*Table structure for table `user`*/DROPTABLEIFEXISTS`user`;CREATETABLE`user` (
`id`int(11)NOTNULLAUTO_INCREMENT COMMENT'用户ID',
`name`varchar(45)NOTNULLDEFAULT'无名氏'COMMENT'用户名',
`age`tinyint(3)NOTNULLDEFAULT'21'COMMENT'用户年龄',
`birthday`datetimeNOTNULLDEFAULT'1970-01-01 00:00:00'COMMENT'用户生日',
`address`varchar(256)NOTNULLDEFAULT'北京'COMMENT'用户地址',PRIMARYKEY(`id`)
) ENGINE=InnoDB AUTO_INCREMENT=18DEFAULTCHARSET=utf8 COMMENT='用户表';/*Data for the table `user`*/insertinto`user`(`id`,`name`,`age`,`birthday`,`address`)values(1,'赵敏',23,'1990-01-23 20:24:21','明教'),
(2,'李四',18,'1986-12-23 12:13:11','广州'),
(3,'张五',33,'1975-09-23 02:13:11','上海'),
(4,'王六',27,'1984-11-01 11:23:14','重庆'),
(5,'张三丰',108,'1971-01-02 02:12:11','武当'),
(6,'想起 来叫什么了',22,'1984-01-23 20:23:22','魔都上海'),
(7,'呵呵',22,'1984-01-23 20:23:22','不知道是哪的'),
(8,'张无忌',18,'2015-10-28 15:31:31','明教');
二、创建项目导入Jar包2.1、
三、创建实现类和Mybatis各个配置文件
3.1、创建pojo类
/***/packagecom.pb.mybatis.po;importjava.util.Date;/*** @Title: User.java
* @Package com.pb.mybatis.po
* @ClassName User
* @Description: TODO(用户类)
*@author刘楠
* @date 2015-10-30 下午4:27:05
*@versionV1.0*/publicclassUser {//用户IDprivateintid;//用户名privateString name;//用户年龄privateintage;//生日privateDate birthday;//地址privateString address;/***@returnthe id*/publicintgetId() {returnid;
}/***@paramid the id to set*/publicvoidsetId(intid) {this.id =id;
}/***@returnthe name*/publicString getName() {returnname;
}/***@paramname the name to set*/publicvoidsetName(String name) {this.name =name;
}/***@returnthe age*/publicintgetAge() {returnage;
}/***@paramage the age to set*/publicvoidsetAge(intage) {this.age =age;
}/***@returnthe birthday*/publicDate getBirthday() {returnbirthday;
}/***@parambirthday the birthday to set*/publicvoidsetBirthday(Date birthday) {this.birthday =birthday;
}/***@returnthe address*/publicString getAddress() {returnaddress;
}/***@paramaddress the address to set*/publicvoidsetAddress(String address) {this.address =address;
}/**(non Javadoc)
* <p>Title: toString</p>
* <p>Description: </p>
*@return*@seejava.lang.Object#toString()*/@OverridepublicString toString() {return"User [id=" + id + ", name=" + name + ", age=" +age+ ", birthday=" + birthday + ", address=" + address + "]";
}
}
3.2、创建db.properties
#数据库基本配置信息
#驱动
jdbc.driver=com.MySQL.jdbc.Driver
#连接URL
jdbc.url=jdbc:mysql://localhost:3306/mybatis?CharacterEncoding=utf8#用户名
jdbc.username=root
#密码
jdbc.passWord=root
log4j
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# MyBatis logging configuration...
# 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
3.3、创建UserMapper与mapper.xml
/***/packagecom.pb.mybatis.mapper;importjava.util.List;importorg.apache.ibatis.annotations.Param;importcom.pb.mybatis.po.User;/*** @Title: UserMapper.java
* @Package com.pb.mybatis.mapper
* @ClassName UserMapper
* @Description: TODO(用户类数据访问层Mapper接口)
*@author刘楠
* @date 2015-10-30 下午6:17:43
*@versionV1.0*/publicinterfaceUserMapper {publicUser findUserById(intid);/***
* @Title: findUserByWhere
* @Description: TODO(根据条件查询用户)
*@returnList<User>*/publicList<User> findUserByWhere(@Param("id")intid,@Param("name")String username);/***
* @Title: updateUser
* @Description: TODO(修改)
*@paramuser
*@returnint*/publicintupdateUser(User user);
}
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="com.pb.mybatis.mapper.UserMapper">
<!-- 映射 -->
<resultMap type="User" id="userResultMap">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="age" column="age"/>
<result property="birthday" column="birthday"/>
<result property="address" column="address"/>
</resultMap>
<select id="findUserById" parameterType="int" resultMap="userResultMap">select* from user where id=#{id}</select>
<!-- 根据条件查询用户 -->
<select id="findUserByWhere" resultMap="userResultMap">select*from user<where>
<!--where会自动去掉第一个成功的条件的and和or -->
<iftest="id!=null and id!='' and id!=0">and id=#{id}</if>
<iftest="name!=null and name!=''">or name like"%"#{name}"%"
</if>
</where>
</select>
<!--修改
SET NAME=#{name},
age=#{age},
birthday=#{birthday},
address=#{address}-->
<update id="updateUser" parameterType="User">UPDATE USER<!--使用SET来更新 -->
<set>
<iftest="name !=null and name !=''">NAME=#{name},</if>
<iftest="age !=null and age !='' and age !=0">age=#{age},</if>
<iftest="birthday !=null">birthday=#{birthday},</if>
<iftest="address !=null and address !=''">address=#{address}</if>
</set>WHERE id=#{id}</update>
</mapper>
3.4、创建configuration.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>
<properties resource="db.properties" />
<typeAliases>
<!--使用默认别名 -->
<packagename="com.pb.mybatis.po"/>
</typeAliases>
<environmentsdefault="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 加载映射 -->
<packagename="com.pb.mybatis.mapper"/>
</mappers>
</configuration>
3.5、测试
/***/packagecom.pb.mybatis.mapper;importstaticorg.junit.Assert.*;importjava.io.InputStream;importjava.util.Date;importjava.util.List;importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;importorg.junit.Before;importorg.junit.Test;importcom.pb.mybatis.po.User;/*** @Title: UserMapperTest.java
* @Package com.pb.mybatis.mapper
* @ClassName UserMapperTest
* @Description: TODO(用一句话描述该文件做什么)
*@author刘楠
* @date 2015-10-30 下午6:25:23
*@versionV1.0*/publicclassUserMapperTest {privateSqlSessionFactory sqlSessionFactory;/***
* @Title: setUp
* @Description: TODO(在每个方法前执行的方法)
*@throwsException void*/@BeforepublicvoidsetUp()throwsException {
String resource="configuration.xml";
InputStream in=Resources.getResourceAsStream(resource);//获取会话工厂sqlSessionFactory=newSqlSessionFactoryBuilder().build(in);
}
@TestpublicvoidtestFindUserById() {//获取会话SqlSession sqlSession=sqlSessionFactory.openSession();
UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
User user=userMapper.findUserById(1);
System.out.println(user);
}
@TestpublicvoidtestFindUserByWhere() {//获取会话SqlSession sqlSession=sqlSessionFactory.openSession();
UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
List<User> list=userMapper.findUserByWhere(0,"");
System.out.println(list);
}
@TestpublicvoidtestUpdateUser() {//获取会话SqlSession sqlSession=sqlSessionFactory.openSession();
UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
User user=userMapper.findUserById(6);
System.out.println(user);
user.setBirthday(newDate());
user.setName("sssss");
user.setAddress("ddd");intnum=userMapper.updateUser(user);
sqlSession.commit();
System.out.println("num="+num);
}
}