第一步:创建一个maven项目
第二部:创建一个数据库表
DROP TABLE IF EXISTS ` user ` ;
CREATE TABLE ` user ` (
` id` int ( 11 ) NOT NULL auto_increment ,
` username` varchar ( 32 ) NOT NULL COMMENT '用户名称' ,
` birthday` datetime default NULL COMMENT '生日' ,
` sex` char ( 1 ) default NULL COMMENT '性别' ,
` address` varchar ( 256 ) default NULL COMMENT '地址' ,
PRIMARY KEY ( ` id` )
) ENGINE = InnoDB DEFAULT CHARSET = utf8;
第三部:导入依赖
<?xml version="1.0" encoding="UTF-8"?>
< project xmlns = " http://maven.apache.org/POM/4.0.0"
xmlns: xsi= " http://www.w3.org/2001/XMLSchema-instance"
xsi: schemaLocation= " http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" >
< modelVersion> 4.0.0</ modelVersion>
< groupId> com.itheima</ groupId>
< artifactId> day02_eesy_01mybatisCRUD</ artifactId>
< version> 1.0-SNAPSHOT</ version>
< packaging> jar</ packaging>
< dependencies>
< dependency>
< groupId> org.mybatis</ groupId>
< artifactId> mybatis</ artifactId>
< version> 3.4.5</ version>
</ dependency>
< dependency>
< groupId> mysql</ groupId>
< artifactId> mysql-connector-java</ artifactId>
< version> 5.1.6</ version>
</ dependency>
< dependency>
< groupId> log4j</ groupId>
< artifactId> log4j</ artifactId>
< version> 1.2.12</ version>
</ dependency>
< dependency>
< groupId> junit</ groupId>
< artifactId> junit</ artifactId>
< version> 4.10</ version>
</ dependency>
</ dependencies>
</ project>
第四步:编写配置文件
<?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 url = " file:///D:/IdeaProjects/day02_eesy_01mybatisCRUD/src/main/resources/jdbcConfig.properties" >
</ properties>
< typeAliases>
< package name = " com.itheima.domain" > </ package>
</ typeAliases>
< environments default = " mysql" >
< environment id = " mysql" >
< transactionManager type = " JDBC" > </ transactionManager>
< dataSource type = " POOLED" >
< property name = " driver" value = " ${jdbc.driver}" > </ property>
< property name = " url" value = " ${jdbc.url}" > </ property>
< property name = " username" value = " ${jdbc.username}" > </ property>
< property name = " password" value = " ${jdbc.password}" > </ property>
</ dataSource>
</ environment>
</ environments>
< mappers>
< package name = " com.itheima.dao" > </ package>
</ mappers>
</ configuration>
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/eesy_mybatis
jdbc.username=root
jdbc.password=1234
第五步:编写实体类
package com. itheima. domain;
import java. io. Serializable;
import java. util. Date;
public class User implements Serializable {
private Integer userId;
private String userName;
private String userAddress;
private String userSex;
private Date userBirthday;
public Integer getUserId ( ) {
return userId;
}
public void setUserId ( Integer userId) {
this . userId = userId;
}
public String getUserName ( ) {
return userName;
}
public void setUserName ( String userName) {
this . userName = userName;
}
public String getUserAddress ( ) {
return userAddress;
}
public void setUserAddress ( String userAddress) {
this . userAddress = userAddress;
}
public String getUserSex ( ) {
return userSex;
}
public void setUserSex ( String userSex) {
this . userSex = userSex;
}
public Date getUserBirthday ( ) {
return userBirthday;
}
public void setUserBirthday ( Date userBirthday) {
this . userBirthday = userBirthday;
}
@Override
public String toString ( ) {
return "User{" +
"userId=" + userId +
", userName='" + userName + '\'' +
", userAddress='" + userAddress + '\'' +
", userSex='" + userSex + '\'' +
", userBirthday=" + userBirthday +
'}' ;
}
}
第六步:编写接口
package com. itheima. dao;
import com. itheima. domain. QueryVo;
import com. itheima. domain. User;
import java. util. List;
public interface IUserDao {
List< User> findAll ( ) ;
void saveUser ( User user) ;
void updateUser ( User user) ;
void deleteUser ( Integer userId) ;
User findById ( Integer userId) ;
List< User> findByName ( String username) ;
int findTotal ( ) ;
}
第七部:编写接口的配置文件
<?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.itheima.dao.IUserDao" >
< resultMap id = " userMap" type = " uSeR" >
< id property = " userId" column = " id" > </ id>
< result property = " userName" column = " username" > </ result>
< result property = " userAddress" column = " address" > </ result>
< result property = " userSex" column = " sex" > </ result>
< result property = " userBirthday" column = " birthday" > </ result>
</ resultMap>
< select id = " findAll" resultMap = " userMap" >
select * from user;
</ select>
< insert id = " saveUser" parameterType = " user" >
< selectKey keyProperty = " userId" keyColumn = " id" resultType = " int" order = " AFTER" >
select last_insert_id();
</ selectKey>
insert into user(username,address,sex,birthday)values(#{userName},#{userAddress},#{userSex},#{userBirthday});
</ insert>
< update id = " updateUser" parameterType = " USER" >
update user set username=#{userName},address=#{userAddress},sex=#{userAex},birthday=#{userBirthday} where id=#{userId}
</ update>
< delete id = " deleteUser" parameterType = " java.lang.Integer" >
delete from user where id = #{uid}
</ delete>
< select id = " findById" parameterType = " INT" resultMap = " userMap" >
select * from user where id = #{uid}
</ select>
< select id = " findByName" parameterType = " string" resultMap = " userMap" >
select * from user where username like #{name}
</ select>
< select id = " findTotal" resultType = " int" >
select count(id) from user;
</ select>
</ mapper>
第八部:编写测试类
package com. itheima. test;
import com. itheima. dao. IUserDao;
import com. itheima. domain. QueryVo;
import com. itheima. domain. User;
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. After;
import org. junit. Before;
import org. junit. Test;
import java. io. InputStream;
import java. util. Date;
import java. util. List;
public class MybatisTest {
private InputStream in;
private SqlSession sqlSession;
private IUserDao userDao;
@Before
public void init ( ) throws Exception{
in = Resources. getResourceAsStream ( "SqlMapConfig.xml" ) ;
SqlSessionFactory factory = new SqlSessionFactoryBuilder ( ) . build ( in) ;
sqlSession = factory. openSession ( ) ;
userDao = sqlSession. getMapper ( IUserDao. class ) ;
}
@After
public void destroy ( ) throws Exception{
sqlSession. commit ( ) ;
sqlSession. close ( ) ;
in. close ( ) ;
}
@Test
public void testFindAll ( ) {
List< User> users = userDao. findAll ( ) ;
for ( User user : users) {
System. out. println ( user) ;
}
}
@Test
public void testSave ( ) {
User user = new User ( ) ;
user. setUserName ( "modify User property" ) ;
user. setUserAddress ( "北京市顺义区" ) ;
user. setUserSex ( "男" ) ;
user. setUserBirthday ( new Date ( ) ) ;
System. out. println ( "保存操作之前:" + user) ;
userDao. saveUser ( user) ;
System. out. println ( "保存操作之后:" + user) ;
}
@Test
public void testUpdate ( ) {
User user = new User ( ) ;
user. setUserId ( 50 ) ;
user. setUserName ( "mybastis update user" ) ;
user. setUserAddress ( "北京市顺义区" ) ;
user. setUserSex ( "女" ) ;
user. setUserBirthday ( new Date ( ) ) ;
userDao. updateUser ( user) ;
}
@Test
public void testDelete ( ) {
userDao. deleteUser ( 48 ) ;
}
@Test
public void testFindOne ( ) {
User user = userDao. findById ( 50 ) ;
System. out. println ( user) ;
}
@Test
public void testFindByName ( ) {
List< User> users = userDao. findByName ( "%王%" ) ;
for ( User user : users) {
System. out. println ( user) ;
}
}
@Test
public void testFindTotal ( ) {
int count = userDao. findTotal ( ) ;
System. out. println ( count) ;
}
}