使用mapper代理的方法开发dao时,需要做两件事情
1.需要编写mapper.xml映射文件
2.需要编写mapper接口(想当于dao接口)
mapper.xml中的配置如图:
<!--
其中,mapper的配置方法应遵循以下规定:
约定大于配置。 使用Mybatis mapper方式开发需要遵循一定的规范, 1、在mapper.xml文件中 namespace的值必须为接口的全类名(包名+类名) 2、mapper接口中方法名必须与mapper.xml的statment Id 相同。 3、mapper接口中方法的参数需要与mapper.xml中的statment的parameterType类型一样 4、mapper接口中方法的返回值需要与Mpper.xml中的statment的 resultType类型一样。 -->
<?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.zx.mybatis.data.stu.mapper.StuDao"> <insert id="insertStuInfo" parameterType="com.zx.mybatis.data.stu.entity.StuInfo"> insert into stuInfo(stuNo,stuName,gender,age) values(#{stuNo} ,#{stuName}, #{gender}, #{age}) </insert> <delete id="deleteStuInfo" parameterType="int"> delete from stuInfo where stuNo = #{stuNo} </delete> <update id="updateStuInfo" parameterType="com.zx.mybatis.data.stu.entity.StuInfo"> update stuInfo set stuName =#{stuName} where stuNo = #{stuNo} </update> <select id="queryStuInfoByNo" parameterType="int" resultType="com.zx.mybatis.data.stu.entity.StuInfo"> select * from stuInfo where stuNo = #{stuNo} </select> <select id="queryStuInfoByAttr" parameterType="com.zx.mybatis.data.stu.entity.StuInfo" resultType="com.zx.mybatis.data.stu.entity.StuInfo"> select * from stuInfo where stuNo = #{stuNo} and stuName = #{stuName} </select> </mapper>
sqlMapConfig的配置如图所示:
<?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>
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/wang"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</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>
<mappers>
<mapper resource="config/UserMapper.xml" />
</mappers>
</configuration>
首先,编写一个简单的Java类:
package com.zx.mybatis.data.stu.entity; public class StuInfo { private int stuNo; private String stuName; private String gender; private int age; public int getStuNo() { return stuNo; } public void setStuNo(int stuNo) { this.stuNo = stuNo; } public String getStuName() { return stuName; } public void setStuName(String stuName) { this.stuName = stuName; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "StuInfo [stuNo=" + stuNo + ", stuName=" + stuName + ", gender=" + gender + ", age=" + age + "]"; }
}
编写mapper接口:
package com.zx.mybatis.data.stu.mapper;
import java.util.List;
import com.zx.mybatis.data.stu.entity.StuInfo;
public interface StuDao {
public void insertStuInfo(StuInfo stu);
public void deleteStuInfo(int stuNo);
public void updateStuInfo(StuInfo stu);
public StuInfo queryStuInfoByNo(int stuNo);
public List<StuInfo> queryStuInfoByAttr(StuInfo stu);
}
编写测试类:
package com.zx.mybatis.data.stu.test;
import java.io.IOException;
import java.util.List;
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.Before;
import org.junit.Test;
import com.zx.mybatis.data.stu.entity.StuInfo;
import com.zx.mybatis.data.stu.mapper.StuDao;
public class MapperTest {
private SqlSessionFactory ssf;
@Before
public void initSSF(){
try {
ssf = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("config/sqlMapConfig.xml"));
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void queryStuInfoByNo(){
SqlSession session = ssf.openSession();
StuDao stuDao = session.getMapper(StuDao.class);
int stuNo = 2016003;
StuInfo stu = stuDao.queryStuInfoByNo(stuNo);
System.out.println("=====================>" + stu);
session.close();
}
/*
*
* 删除学生信息
*/
@Test
public void deleteStuInfoByStuNo() {
SqlSession session = ssf.openSession();
StuDao stuDao = session.getMapper(StuDao.class);
int stuNo = 2016005;
stuDao.deleteStuInfo(stuNo);
session.commit(); //删除一定要提交
session.close();
}
/*
添加学生信息
*/
@Test
public void insertStuInfo() {
SqlSession session = ssf.openSession();
StuDao stuDao = session.getMapper(StuDao.class);
StuInfo stu = new StuInfo();
stu.setStuNo(2016005);
stu.setStuName("张博");
stu.setGender("男");
stu.setAge(18);
stuDao.insertStuInfo(stu);
session.commit();
session.close();
}
/*
修改学生信息
*/
@Test
public void updateStuInfo() {
SqlSession ss = ssf.openSession();
StuDao stuDao = ss.getMapper(StuDao.class);
StuInfo stu = new StuInfo();
stu.setStuName("王斌");
stu.setStuNo(2016007);
stuDao.updateStuInfo(stu);
ss.commit();
ss.close();
}
/*
根据属性查询学生信息
*/
@Test
public void queryStuInfoByAttr() {
SqlSession session = ssf.openSession();
StuDao stuDao = session.getMapper(StuDao.class);
StuInfo stu = new StuInfo();
stu.setStuName("张博");
stu.setStuNo(2016005);
List<StuInfo> stuList = stuDao.queryStuInfoByAttr(stu);
System.out.println("-----------"+stuList);
}
}
整个项目工程目录如图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/76dc910496be5487b00f72abe51adbc6.png)