前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MyBatis —— 映射文件

MyBatis —— 映射文件

作者头像
桑鱼
发布2020-03-18 15:15:24
4450
发布2020-03-18 15:15:24
举报
文章被收录于专栏:学习笔记持续记录中...

SELECT

编写 EmployeeMapper.java

代码语言:javascript
复制
public interface EmployeeMapper {
    public Employee getEmpById(Integer id);
}

编写EmployeeMapper.xml

代码语言:javascript
复制
<?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.sangyu.mapper.EmployeeMapper">
    <select id="getEmpById" resultType="com.sangyu.bean.Employee">
     select id,last_name,gender,email from tbl_employee where id = #{id}
    </select>
</mapper>

INSERT

编写 EmployeeMapper.java

代码语言:javascript
复制
public interface EmployeeMapper {
    public void addEmp(Employee employee);
}

编写EmployeeMapper.xml

代码语言:javascript
复制
<?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.sangyu.mapper.EmployeeMapper">
    <!--parameterType,参数类型,可以省略-->
    <insert id="addEmp" parameterType="com.sangyu.bean.Employee">
        insert into tbl_employee(last_name,email,gender) values(#{lastName},#{email},#{gender});
    </insert>
</mapper>

执行测试代码

代码语言:javascript
复制
public class MyBatisTest {
    @Test
    public void Test02() throws IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 
        SqlSession session = sqlSessionFactory.openSession(); // 获取到的SqlSession不会自动提交收据,openSession(true) 自动提交
        try {
            EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
            Employee employee = new Employee(null,"GIGI","GIGI@aa.com","0");
            mapper.addEmp(employee);
            session.commit(); // 手动提交数据
        } finally {
            session.close();
        }
    }
}

UPDATE

编写 EmployeeMapper.java

代码语言:javascript
复制
public interface EmployeeMapper {
    public void updateEmp(Employee employee);
}

编写EmployeeMapper.xml

代码语言:javascript
复制
<?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.sangyu.mapper.EmployeeMapper">
    <update id="updateEmp">
        update tbl_employee set last_name = #{lastName},email=#{email},gender=#{gender}
        where id = #{id};
    </update>
</mapper>

DELETE

编写 EmployeeMapper.java

代码语言:javascript
复制
public interface EmployeeMapper {
    public void deleteEmp(Integer id);
}

编写EmployeeMapper.xml

代码语言:javascript
复制
<?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.sangyu.mapper.EmployeeMapper">
   <delete id="deleteEmp" >
        delete from tbl_employee where id = #{id}
    </delete>
</mapper>

UPDATE增加返回值

Mybatis 允许增删改直接定义以下类型返回值:Integer、Long、Boolean、void

代码语言:javascript
复制
public interface EmployeeMapper {
    public boolean updateEmp(Employee employee);
}

测试

代码语言:javascript
复制
 @Test
    public void Test05() throws IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 
        SqlSession session = sqlSessionFactory.openSession(); 
        try {
            EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
            Employee employee = new Employee(13,"AA","AA@aa.com","1");
            boolean b = mapper.updateEmp(employee);
            System.out.println(b);
        } finally {
            session.close();
        }
    }

insert 获得自增主键的值

代码语言:javascript
复制
<?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接口-->
<mapper namespace="com.sangyu.mapper.EmployeeMapper">
    <!--parameterType,参数类型,可以省略 
    mysql 支持自增主键,自增主键值的后取,mybatis 也是利用statement.getGenreatedKeys();
    useGeneratedKeys="true",使用自增主键值策略 keyProperty="id"-->
    <insert id="addEmp" parameterType="com.sangyu.bean.Employee" useGeneratedKeys="true">
        insert into tbl_employee(last_name,email,gender) values(#{lastName},#{email},#{gender});
    </insert>
</mapper>

执行测试代码

代码语言:javascript
复制
@Test
    public void Test02() throws IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); // 根据xml创建sqlSessionFactory
        SqlSession session = sqlSessionFactory.openSession(true); // 2. 从 SqlSessionFactory 中获取 SqlSession 的实例,SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句
        try {
            // 3. 获取接口的实现类对象
            EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
            Employee employee = new Employee(null,"MIMI","MIMI@aa.com","0");
            mapper.addEmp(employee);
            session.commit(); // 手动提交数据
            System.out.println(employee.getId());
        } finally {
            session.close();
        }
    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SELECT
  • INSERT
  • UPDATE
  • DELETE
  • UPDATE增加返回值
  • insert 获得自增主键的值
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档