1.mybatis简介
mybatis是一个开源的持久层框架,底层使用jdbc实现,为了简化jdbc操作,只需要只需要规划ql语句,以及设计并实现接口。
2.具体流程
2.1创建Maven项目
- 点击创建maven项目,填写groupid与Artifactid,packageing选择war
- 添加tomcat服务器至项目中,右键项目->properties->targeted runtimes 生成部署描述文件web.xml
- pom.xml中添加与mybatis有关的5个依赖 (mybatis,spring,jdbc,dbcp等)
2.2配置文件
- 将spring文件添加至resource路径
- 配置数据库连接文件db.properties至resource路径
- 启动项目通过junit测试数据库连接
public class Tests {
BasicDataSource ds;
MapperScannerConfigurer msc;
SqlSessionFactoryBean ssfb;
private ClassPathXmlApplicationContext ac;
private UserMapper userMapper;
@Test
public void getConnection() throws SQLException {
BasicDataSource ds = ac.getBean("dataSource", BasicDataSource.class);
Connection conn = ds.getConnection();
System.out.println(conn);
}
@Before
public void doBefore() {
ac = new ClassPathXmlApplicationContext(
"spring.xml");
userMapper = ac.getBean("userMapper", UserMapper.class);
}
@After
public void doAfter() {
ac.close();
}
2.3添加基本元素
- 创建实体类user(属性与表字段对应)
public class User {
private Integer id;
private String username;
private String password;
private Integer age;
private String phone;
private String email;
public Integer getId() {
return id;
}
public void setId(Integer 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 Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
- 添加对user操作的接口UserMapper(设计抽象方法满足不能重载,如果对数据修改返回受影响的行数)
public interface UserMapper {
Integer insert(User user);
}
- 配置一次UserMapper.xml文件,每次添加对应的sql语句,并添加至resource
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"><!-- namespace:当前XML文件用于配置哪个接口中抽象方法对应的SQL语句 -->
<mapper namespace="com.mybatis.UserMapper"><!-- resultMap节点:指导MyBatis如何封装查询结果 -->
<!-- id:自定义名称 -->
<!-- column:查询结果中的列名 -->
<!-- property:type对应的类中的属性名 -->
<resultMap id="UserEntityMap"
type="cn.tedu.mybatis.User">
<result column="id" property="id" />
<result column="username" property="username" />
<result column="password" property="password" />
<result column="age" property="age" />
<result column="phone" property="phone" />
<result column="email" property="email" />
<result column="is_delete" property="isDelete" />
</resultMap><!-- 使用insert节点配置插入数据的SQL语句 -->
<!-- id:抽象方法的方法名 -->
<!-- 在#{}中间的是方法的参数User类中的属性名称 -->
<insert id="insert"
parameterType="cn.tedu.mybatis.User"
useGeneratedKeys="true"
keyProperty="id">
INSERT INTO mybatis_user(
username, password,
age, phone,
) VALUES (
#{username}, #{password},
#{age}, #{phone},
#{email}
)
</insert></mapper>
- junit测试插入数据操作
@Test
public void insert() {
User user = new User();
user.setUsername("mybatis2");
user.setPassword("12345");
System.out.println("执行前:" + user);
Integer rows = userMapper.insert(user);
System.out.println("rows=" + rows);
System.out.println("执行后:" + user);
}
- 查询数据库验证插入成功
2.4要注意的点
配置spring.xml有关mybatis部分涉及内容较多,其中一定包括:
数据源的配置文件,接口,xml文件
读取db.properties,配置数据源并指定数据源,配置MapperScannerConfigurerz来指定接口,SqlSessionFactoryBean指定xml文件