ORM映射规则

<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!--提供ORM映射规则:写的是sql语句-->
<mapper namespace="mapper.UserMapper">

    <!--id:该条语句的唯一标识
    parameterType:表示入参类型
    resultType:返回结果将要封装成的类型-->

    <!--基本类型及String入参时,与#{}中的字符没有关系-->
    <select id="selectById" parameterType="java.lang.Integer" resultType="model.User">
        select * from user  where id = #{a}
    </select>

    <select id="selectAll"  resultType="model.User">
        select * from user
    </select>

    <!--引用类型入参,是POJO中的属性对应的get方法的后缀,首字母小写-->
   <insert id="insert" parameterType="model.User">
        insert into USER (username,password) values (#{username},#{password})
    </insert>

    <delete id="delete" parameterType="java.lang.Integer">
        delete  from user where id = #{id}
    </delete>

    <update id="update" parameterType="model.User">
        update USER set username=#{username},password=#{password} where id=#{id}
    </update>

</mapper>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!--提供ORM映射规则:写的是sql语句-->
<mapper namespace="mapper.UserMapper">

    <!--提供bean对像与表的列表的映射关系-->
    <resultMap id="baseResultMap" type="model.User">
        <!--column表示表的列名,property对应类的属性的set方法后缀,首字母小写-->
        <id column="ID" property="id"></id>
        <result column="USERNAME" property="username"></result>
        <result column="PASSWORD" property="password"></result>
    </resultMap>

    <!--id:该条语句的唯一标识
    parameterType:表示入参类型
    resultType:返回结果将要封装成的类型-->

    <!--基本类型及String入参时,与#{}中的字符没有关系-->
    <!--ResultType标签和ResultMap标签不能同时出现-->
    <select id="selectById" parameterType="java.lang.Integer" resultMap="baseResultMap">
        select * from user  where id = #{id}
    </select>

    <select id="selectAll"  resultMap="baseResultMap">
        select * from user
    </select>

    <!--引用类型入参,是POJO中的属性对应的get方法的后缀,首字母小写-->
   <insert id="insert" parameterType="model.User">
        insert into USER (username,password) values (#{username},#{password})
    </insert>

    <delete id="delete" parameterType="java.lang.Integer">
        delete  from user where id = #{id}
    </delete>

    <update id="update" parameterType="model.User">
        update USER set username=#{username},password=#{password} where id=#{id}
    </update>

    <select id="selectByPage" resultMap="baseResultMap" parameterType="model.Page">
        select * from user limit #{firstIndex},#{maxResults}
    </select>

    <select id="selectByPage2" resultMap="baseResultMap">
        select * from user limit #{firstIndex},#{maxResults}
    </select>
</mapper>
package mapper;

import model.Page;
import model.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 1.接口的完全限定名和mapper.xml文件中的namespace值相同
 * 2.接口的方法名要和mapper.xml文件中sql语句的id相同
 * 注意:接口不能重载
 */
public interface UserMapper {

    User selectById(int id);

    List<User> selectAll();

    Integer insert(User user);

    Integer update(User user);

    Integer delete(int id);

    List<User> selectByPage(Page page);

    //通地注解可以传递多个参数 @Param
    List<User> selectByPage2(@Param("firstIndex") int firstIndex, @Param("maxResults")int maxResults);
}

普通的xml配置业务逻辑

package service;


import model.Page;
import model.User;
import org.apache.ibatis.session.SqlSession;
import tools.MybatisUtil;

import java.util.List;

public class UserService {

   public User findById(int id){

        SqlSession session = MybatisUtil.openSession();
        try {
            User user = session.selectOne("mapper.UserMapper.selectById", id);
            return user;
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            session.close();
        }

        return null;
    }

    public List<User> findAll(){

        SqlSession session = MybatisUtil.openSession();
        try {
            List<User> users = session.selectList("mapper.UserMapper.selectAll");
            return users;
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            session.close();
        }
        return null;
    }


    public Integer  save(User user){

        SqlSession session = MybatisUtil.openSession();
        try {
            //开启事务
            int i = session.insert("mapper.UserMapper.insert",user);
            //手动提交事务
            session.commit();
            return i;
        }catch (Exception e){
            e.printStackTrace();
            //事务回滚
            session.rollback();
        }finally {
            session.close();
        }

        return 0;
    }

    public Integer remove(Integer id){
        SqlSession session = MybatisUtil.openSession();
        try {
            //开启事务
            int i = session.delete("mapper.UserMapper.delete",id);
            //手动提交事务
            session.commit();
            return i;
        }catch (Exception e){
            e.printStackTrace();
            //事务回滚
            session.rollback();
        }finally {
            session.close();
        }

        return 0;
    }

    public Integer modify(User user){
        SqlSession session = MybatisUtil.openSession();

        try {
            //开启事务
            int i = session.update("mapper.UserMapper.update",user);
            //手动提交事务
            session.commit();
            return i;
        }catch (Exception e){
            e.printStackTrace();
            //事务回滚
            session.rollback();
        }finally {
            session.close();
        }

        return 0;
    }

    public List<User> findByPage(Page page){

        SqlSession session = MybatisUtil.openSession();
        try {
            List<User> users = session.selectList("mapper.UserMapper.selectByPage",page);
            return users;
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            session.close();
        }
        return null;

    }


}

接口映射(动态代理)业务逻辑

package service;

import mapper.UserMapper;
import model.Page;
import model.User;
import org.apache.ibatis.session.SqlSession;
import tools.MybatisUtil;

import java.util.List;

/**
 * 重点掌握动态代理方式实现mapper层接口的方式
 */
public class UserService2 {

    public User findById(int id){

        SqlSession session = MybatisUtil.openSession();
        try {
            //在内存中动态生成了字节码文件(没有源码) $___.class impelments UserMapper
            //通过动态代理方式产生接口的代理类对像(JDK,CGLIB)
            UserMapper mapper = session.getMapper(UserMapper.class);
            User user = mapper.selectById(id);
            return user;
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            session.close();
        }

        return null;
    }

    public List<User> findAll(){

        SqlSession session = MybatisUtil.openSession();
        try {
            UserMapper mapper = session.getMapper(UserMapper.class);
            List<User> users = mapper.selectAll();
            return users;
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            session.close();
        }
        return null;
    }


    public Integer  save(User user){

        SqlSession session = MybatisUtil.openSession();
        try {
            //开启事务
            UserMapper mapper = session.getMapper(UserMapper.class);
            Integer i = mapper.insert(user);
            //手动提交事务
            session.commit();
            return i;
        }catch (Exception e){
            e.printStackTrace();
            //事务回滚
            session.rollback();
        }finally {
            session.close();
        }

        return 0;
    }

    public Integer remove(Integer id){
        SqlSession session = MybatisUtil.openSession();
        try {
            //开启事务
            UserMapper mapper = session.getMapper(UserMapper.class);
            Integer i= mapper.delete(id);
            //手动提交事务
            session.commit();
            return i;
        }catch (Exception e){
            e.printStackTrace();
            //事务回滚
            session.rollback();
        }finally {
            session.close();
        }

        return 0;
    }

    public Integer modify(User user){
        SqlSession session = MybatisUtil.openSession();

        try {
            //开启事务
            UserMapper mapper = session.getMapper(UserMapper.class);
            Integer i = mapper.update(user);
            //手动提交事务
            session.commit();
            return i;
        }catch (Exception e){
            e.printStackTrace();
            //事务回滚
            session.rollback();
        }finally {
            session.close();
        }

        return 0;
    }

    public List<User> findByPage(Page page){

        SqlSession session = MybatisUtil.openSession();
        try {
            UserMapper mapper = session.getMapper(UserMapper.class);
            List<User> users = mapper.selectByPage(page);
            return users;
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            session.close();
        }
        return null;

    }

    public List<User> findByPage2(int firstIndex,int maxResults){

        SqlSession session = MybatisUtil.openSession();
        try {
            UserMapper mapper = session.getMapper(UserMapper.class);
            List<User> users = mapper.selectByPage2(firstIndex,maxResults);
            return users;
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            session.close();
        }
        return null;

    }


}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值