1.创建mybatis-config.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="jdbc.properties"></properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<!-- 将mapper文件加入配置文件 -->
<mappers>
<mapper resource="com/yan/shop/model/User.xml"/>
</mappers>
</configuration>
2.根据数据表创建相应的实体类
package com.yan.shop.model;
public class User {
private int id;
private String username;
private String password;
private String nickname;
private int status;
private int type;
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
}
3.创建mapper文件完成对实体类的映射
<?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.yan.shop.model.User">
<insert id="add" parameterType="com.yan.shop.model.User"><!--可在mybatis.cofig.xml中设置类型别名,这边就可以简写-->
insert into t_user (username,password,nickname,type,status)
values(#{username},#{password},#{nickname},#{type},#{status});
</insert>
</mapper>
4.创建SQLSession,并且通过sqlSession完成对数据库系统操作
package com.yan.shop.test;
import java.io.IOException;
import java.io.InputStream;
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 com.yan.shop.model.User;
public class testFirstMybatis {
public static void main(String[] args){
try {
//1.创建配置文件{mybatis-config.xml}的输入流
InputStream is=Resources.getResourceAsStream("mybatis-config.xml");
//2。创建SQLSessionFactory
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is);
//3.创建SQLSession
SqlSession session = factory.openSession();
//4.调用mapper文件差入数据
User u=new User();
u.setNickname("猪八戒");
u.setUsername("猪悟能");
u.setPassword("1234");
u.setType(0);
session.insert(User.class.getName()+".add",u);//session.insert("com.yan.shop.model.User.add",u);
session.commit();
session.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
jdbc.properties文件
username=root
password=123456
url=jdbc:mysql://localhost:3306/itat_shop
driver=com.mysql.jdbc.Driver
----------------------------------------------------------更新-----------------------------------------------------------
session.insert(User.class.getName()+".add",u);这个语句的参数我们是用字符串语句拼接的,很容易写错,我们可以使用基于mapper的方式解决这个问题。
为对应的实体类的xml添加mapper。例如为User.xml创建UserMapper接口,即映射
package com.yan.shop.mapper;
import com.yan.shop.model.User;
public interface UserMapper {
public void add(User u);
}
这个接口方法映射对应着User.xml里的操作,因为User.xml就举一个添加例子,故UserMapper里也就只有一个add方法。
将User.xml的namespace改为和UserMapper相对应,即<mapper namespace="com.yan.shop.mapper.UserMapper">
这样我们就能把字符串拼接转成方法调用。
将session.insert(User.class.getName()+".add",u)改成session.getMapper(UserMapper.class).add(u);就可以了
有了对应的Mapper接口,我们还可以直接在方法上面写sql语句,即annotation方式,这个时候就不需要User.xml文件,在mybatis-cofig.xml里导入的mapper改为
<mappers>
<mapper class="com.yan.shop.mapper.UserMapper"/>
</mappers>
新的UserMapper
package com.yan.shop.mapper;
import org.apache.ibatis.annotations.Insert;
import com.yan.shop.model.User;
public interface UserMapper {
@Insert("insert into t_user (username,password,nickname,typ,status)value(#{username},#{password},#{nickname},#{typ},#{status});")
public void add(User u);
}