1.结构图
2.User实体类
package com.itheima.domain;
import java.util.Date;
public class User {
private Integer uId;
private String userName;
private String uSex;
private Date uBirthday;
private String uAddress;
public Integer getuId() {
return uId;
}
public void setuId(Integer uId) {
this.uId = uId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getuSex() {
return uSex;
}
public void setuSex(String uSex) {
this.uSex = uSex;
}
public Date getuBirthday() {
return uBirthday;
}
public void setuBirthday(Date uBirthday) {
this.uBirthday = uBirthday;
}
public String getuAddress() {
return uAddress;
}
public void setuAddress(String uAddress) {
this.uAddress = uAddress;
}
@Override
public String toString() {
return "User{" +
"uId=" + uId +
", userName='" + userName + '\'' +
", uSex='" + uSex + '\'' +
", uBirthday=" + uBirthday +
", uAddress='" + uAddress + '\'' +
'}';
}
}
3.IUserDao接口
package com.itheima.dao;
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(String userId);
}
4.IUserMapper对应接口的配置文件
<?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">
<!--1.起别名-->
<!--2.resultMap-->
<!--
解决domain中属性和数据库段名不匹配问题
还有起别名的方式:属性名as数据库名
-->
<resultMap id="userMap" type="com.itheima.domain.User">
<!--主键字段-->
<id property="uId" column="id"></id>
<!--非主键字段-->
<result property="userName" column="username"></result>
<result property="uSex" column="sex"></result>
<result property="uBirthday" column="birthday"></result>
<result property="uAddress" column="address"></result>
</resultMap>
<!--查询所有-->
<!--
映射机制:
不写
resultType="com.itheima.domain.User"
而是
resultMap="userMap"
-->
<select id="findAll" resultMap="userMap">
select * from user
</select>
<!--插入一个-->
<select id="saveUser" parameterType="com.itheima.domain.User">
insert into user(username,sex,birthday,address)values(#{userName},#{uSex},#{uBirthday},#{uAddress})
</select>
</mapper>
5.SqlMapConfig mybatis主配置文件
<?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">
<!--mybatis的主配置-->
<configuration>
<!--配置环境-->
<environments default="mysql">
<!--配置环境-->
<environment id="mysql">
<!--配置事务-->
<transactionManager type="JDBC"></transactionManager>
<!--配置连接池-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/db_mybatis"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!--xml方式进行配置-->
<mappers>
<mapper resource="com/itheima/dao/IUserMapper.xml"></mapper>
</mappers>
</configuration>
6.测试类
package com.ithiema;
import com.itheima.dao.IUserDao;
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 MybatisCRUD {
private InputStream inputStream;
private SqlSessionFactory factory;
private SqlSession sqlSession;
private IUserDao userDao;
//1.一上来就执行好吗哈哈哈
@Before
public void init()throws Exception{
//1.获取字节流
inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
//2.创建工厂
factory = new SqlSessionFactoryBuilder().build(inputStream);
//3.获取sqlSession对象
sqlSession = factory.openSession();
//4.通过IUserDao.class字节码获取userDao
userDao = sqlSession.getMapper(IUserDao.class);
}
/*查询所有*/
@Test
public void testFindAll(){
//5.执行查询所有
List<User> users = userDao.findAll();
for (User user:users){
System.out.println(user);
}
}
/*保存一个*/
@Test
public void testSaveUser(){
User user = new User();
user.setUserName("李四");
user.setuSex("男");
user.setuBirthday(new Date());
user.setuAddress("驻马店");
userDao.saveUser(user);
System.out.println("保存成功....");
}
//都在后面执行好吗哈哈哈
@After
public void destroy()throws Exception{
//6.提交事务
sqlSession.commit();
//6.释放资源
sqlSession.close();
inputStream.close();
}
/*不打注释就会出现空指针异常*/
}
7.依赖pomxl
<dependencies>
<!--sql驱动:连接数据库用-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<!--测试的依赖-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!--日志-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!--mybatis环境-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
</dependencies>