接口映射——————
主配置文件mybatis.xml增加<mapper>标签:
<mappers>
<mapper resource="cn/et/mybatis/lesson01/interfaceMapping/dept_mapper.xml" />
</mappers>
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">
<!--
接口映射
namespace必需跟接口的全名一致
-->
<mapper namespace="cn.et.mybatis.lesson01.interfaceMapping.DeptMapper">
<!--
select的id必须和接口的方法名一致
resultType和接口返回值的泛型一致
没有返回值就不写
-->
<select id="selectDept" resultType="map">
select * from dept
</select>
<update id="updateDept">
update dept set dname='后勤部' where deptno=50
</update>
<insert id="addDept">
insert into dept values(60,'生产部', '上海')
</insert>
<delete id="deleteDept">
delete from dept where deptno=60
</delete>
</mapper>
Mapper接口:
package cn.et.mybatis.lesson01.interfaceMapping;
import java.util.List;
import java.util.Map;
public interface DeptMapper {
public List<Map> selectDept();
public void updateDept();
public void addDept();
public void deleteDept();
}
测试类:
package cn.et.mybatis.lesson01.interfaceMapping;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
public class TestMybatis {
public static SqlSession getSession(){
String resource = "mybatis.xml";
InputStream inputStream = cn.et.mybatis.lesson01.TestMybatis.class.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//打开会话
SqlSession session = sqlSessionFactory.openSession();
return session;
}
public static void main(String[] args) {
//打开会话
SqlSession session = getSession();
//通过动态代理 创建一个实现类 自动调用配置文件
DeptMapper dm = session.getMapper(DeptMapper.class);
List<Map> list = dm.selectDept();
for (Map map : list) {
System.out.println(map);
}
}
@Test
public void insert(){
SqlSession session = getSession();
DeptMapper dm = session.getMapper(DeptMapper.class);
dm.addDept();
session.commit();
}
@Test
public void update(){
SqlSession session = getSession();
DeptMapper dm = session.getMapper(DeptMapper.class);
dm.updateDept();
session.commit();
}
@Test
public void delete(){
SqlSession session = getSession();
DeptMapper dm = session.getMapper(DeptMapper.class);
dm.deleteDept();
session.commit();
}
}
接口的注解映射——————————
mybatis.xml:
<mappers>
<mapper class="cn.et.mybatis.lesson01.annotationMapper.EmpMapper"/>
</mappers>
EmpMapper接口:
package cn.et.mybatis.lesson01.annotationMapper;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Select;
public interface EmpMapper {
@Select(value="select * from emp")
public List<Map> selectEmp();
}
测试类:
package cn.et.mybatis.lesson01.annotationMapper;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
public class TestMybatis {
public static SqlSession getSession(){
String resource = "mybatis.xml";
InputStream inputStream = cn.et.mybatis.lesson01.TestMybatis.class.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//打开会话
SqlSession session = sqlSessionFactory.openSession();
return session;
}
public static void main(String[] args) {
//打开会话
SqlSession session = getSession();
//通过动态代理 创建一个实现类 自动调用配置文件
EmpMapper dm = session.getMapper(EmpMapper.class);
List<Map> list = dm.selectEmp();
System.out.println(list.size());
}
}
自定义传参————————
config主配置文件mybatis.xml:
<mappers>
<mapper resource="cn/et/mybatis/lesson01/param/money_mapper.xml" />
</mappers>
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">
<!--
接口映射
namespace必需跟接口的全名一致
-->
<mapper namespace="cn.et.mybatis.lesson01.param.MoneyMapper">
<!--
select的id必须和接口的方法名一致
resultType和接口返回值的泛型一致
没有返回值就不写
#{}语法格式是(实际上是使用jdbc的?点位符传参是安全的 )
第一种#{0}
第二种#{param1}
第三种指定别名#{}
${}是字符串拼接,拼接字符串的话要添加'' 是不安全的
-->
<select id="selectMoney" resultType="java.util.Map">
select * from money where name=#{name}
</select>
</mapper>
Mapper接口:
package cn.et.mybatis.lesson01.param;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Param;
public interface MoneyMapper {
public List<Map> selectMoney(@Param("name")String name);
}
测试类:
package cn.et.mybatis.lesson01.param;
import java.io.InputStream;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class TestMybatis {
public static SqlSession getSession(){
String resource = "mybatis.xml";
InputStream inputStream = cn.et.mybatis.lesson01.TestMybatis.class.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//打开会话
SqlSession session = sqlSessionFactory.openSession();
return session;
}
public static void main(String[] args) {
//打开会话
SqlSession session = getSession();
//通过动态代理 创建一个实现类 自动调用配置文件
MoneyMapper dm = session.getMapper(MoneyMapper.class);
List list = dm.selectMoney("zs");
for (Object object : list) {
System.out.println(object);
}
}
}