2019独角兽企业重金招聘Python工程师标准>>>

1.     分页查询

2.     map传参数

3.     排序

UserMapper.xml

<?xml version="1.0" encoding= "UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- <mapper namespace="model.User"> -->
<mapper namespace="model.User" ><insert id="add" parameterType="model.User" >insert into t_user (username,password,nickname,type)value (#{username},#{password},#{nickname},#{type})</insert ><update id="update" parameterType="model.User" >update t_user set password=#{password},nickname=#{nickname},type=#{type} where id=#{id}</update >  <delete id="delete" parameterType="int" >delete from t_user where id = #{id}</delete ><select id="load" parameterType="int" resultType="model.User" >select * from t_user where id = #{id}</select ><select id="loadByUsername" parameterType="String" resultType= "model.User">select * from t_user where username = #{username}</select >//分页查询<select id="find" resultType="model.User" parameterType="map" >select * from t_user where( username like #{name} or password like #{name})order by ${sort} ${order} limit #{pageOffset},#{pageSize}</select ><select id="find_count" parameterType="map" resultType="int" >select count(*) from t_user where( username like #{name} or password like #{name})</select >
</mapper>

SystemContext

package model;
public class SystemContext
{private static ThreadLocal<Integer> pageSize = new ThreadLocal<Integer>();private static ThreadLocal<Integer> pageIndex = new ThreadLocal<Integer>();private static ThreadLocal<Integer> pageOffset = new ThreadLocal<Integer>();private static ThreadLocal<String> order = new ThreadLocal<String>();private static ThreadLocal<String> sort = new ThreadLocal<String>();public static String getOrder() {return order .get();}public static void setOrder(String _order) {order.set(_order );}public static void removeOrder(){order.remove();}public static String getSort() {return sort .get();}public static void setSort(String _sort) {sort.set(_sort );}public static void removeSort(){sort.remove();}public static int getPageSize() {return pageSize .get();}public static void setPageSize(int _pageSize) {pageSize.set(_pageSize );;}public static int getPageIndex() {return pageIndex .get();}public static void setPageIndex(int _pageIndex) {pageIndex.set(_pageIndex );}public static int getPageOffset() {return pageOffset .get();}public static void setPageOffset(int _pageOffset) {pageOffset.set(_pageOffset );}}

IUserDao

package dao;
import model.Pager;
import model.User;
public interface IUserDao
{public void add(User user );public void update(User user );public void delete(int id);public User loadByUsername(String userName);public User load( int id );public User login(User user);public Pager<User> find(String userName);
}
UserDao
package dao;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import model.Pager;
import model.ShopException;
import model.SystemContext;
import model.User;
import org.apache.ibatis.session.SqlSession;
import util.MyBatisUtil;
public class UserDao implements IUserDao
{@Overridepublic void add(User user ) {User tu = this.loadByUsername(user .getUsername());if(tu != null)throw new ShopException("要添加的用户已经存在!" );SqlSession session = null ;session = MyBatisUtil.createSession();try{session.insert(User.class.getName()+".add", user);session.commit();}catch(Exception e ){e.printStackTrace();session.rollback();}finally{MyBatisUtil. closeSession(session);}}@Overridepublic void update(User user ) {SqlSession session = null ;session = MyBatisUtil.createSession();try{session.update(User.class.getName()+".update", user);session.commit();}catch(Exception e ){e.printStackTrace();session.rollback();}finally{MyBatisUtil. closeSession(session);}}@Overridepublic void delete(int id) {SqlSession session = null ;session = MyBatisUtil.createSession();try{session.delete(User.class.getName()+".delete", id);session.commit();}catch(Exception e ){e.printStackTrace();session.rollback();}finally{MyBatisUtil. closeSession(session);}}@Overridepublic User loadByUsername(String userName) {SqlSession session = null ;User u = null;session = MyBatisUtil.createSession();try{u = session.selectOne(User.class.getName()+".loadByUsername", userName);}catch(Exception e ){e.printStackTrace();session.rollback();}finally{MyBatisUtil. closeSession(session);}return u ;}@Overridepublic User load( int id ) {SqlSession session = null ;User u = null;session = MyBatisUtil.createSession();u = session.selectOne(User.class.getName()+".load", id);MyBatisUtil. closeSession(session);return u ;}@Overridepublic User login(User user) {User u = this.loadByUsername(user .getUsername());if(u == null)throw new ShopException("用户名不存在");if(!u .getPassword().equals(user.getPassword())){throw new ShopException("密码不正确");}return u ;}public Pager<User> find(String name){int pageSize = SystemContext.getPageSize();int pageOffset = SystemContext.getPageOffset();String order = SystemContext.getOrder();String sort = SystemContext.getSort();Pager<User> pages = new Pager<User>();SqlSession session = null ;try{session = MyBatisUtil.createSession();Map<String,Object> params = new HashMap<String,Object>();params.put("name" , "%" +name +"%" );params.put("pageSize" , pageSize );params.put("pageOffset" , pageOffset );params.put("order" , order );params.put("sort" , sort );List<User> datas = session.selectList(User.class.getName()+".find", params);pages.setDatas(datas );pages.setPageOffset(pageOffset );pages.setPageSize(pageSize );int totalRecord = session.selectOne(User.class.getName()+".find_count", params);pages.setTotalRecord(totalRecord );}finally{MyBatisUtil. closeSession(session);}return pages ;}
}

TestUserDao

package test;
import model.Pager;
import model.SystemContext;
import model.User;
import org.junit.Before;
import org.junit.Test;
import dao.DaoFactory;
import dao.IUserDao;
public class TestUserDao
{private IUserDao ud;@Beforepublic void init(){ud = DaoFactory. getUserDao();}/*** 添加用户*/@Testpublic void testAdd(){User user = new User();user.setUsername("呵呵 " );user.setPassword("123" );user.setNickname("张三" );user.setType("123" );ud.add( user);}/*** 更新用户*/@Testpublic void testUpate(){User u = ud.loadByUsername( "呵呵");u.setPassword( "1111");ud.update( u);}/*** 删除用户*/@Testpublic void testDelete(){ud.delete(4);}/*** 登陆验证*/@Testpublic void testLogin(){User user = new User();user.setUsername("2" );user.setPassword("2" );User u = ud.login( user);System. out.println(u .getNickname());}/*** 分页*/@Testpublic void testFind(){SystemContext. setPageOffset(0);SystemContext. setPageSize(15);SystemContext. setOrder("desc");SystemContext. setSort("id");Pager<User> ps = ud.find( "张");System. out.println(ps .getTotalRecord());for(User u :ps .getDatas()){System. out.println(u );}}
}

源码:

http://pan.baidu.com/s/1hqkoY6S

转载于:https://my.oschina.net/gengjie2/blog/342367

MyBatis第二天相关推荐

  1. MyBatis 第二扇门

    一.日志 1.日志工厂 如果一个数据库操作出现了异常,我们需要排错. STDOUT_LOGGING标准日志输出 <settings><setting name="logIm ...

  2. Spring,SpringMVC,Mybatis(第二节)

    目录 1.配置SpringMVC 新建一个dispatcherServlet-servlet.xml的配置文件 在src/main/java下创建自己要编写的包 编写一下Spring配置文集appli ...

  3. [转载] mybatis

    参考链接: 在Java中使用_(下划线)作为变量名 mybatis第一天 1.mybatis概述和环境搭建 mybatis概述 mybatis环境搭建 1. 创建maven工程.添加开发依赖.创建数据 ...

  4. mapper同时添加数据只能添加一条_Mybatis第二章——多表同时插入和级联查询

    Mybatis第二章--多表同时插入和级联查询 知识点一:多表同时插入,其中要插入的Blog的数据中的author_id依赖于另一个要插入的author对象的id 此时需要在mapper.xml文件中 ...

  5. mybatis第三话 - mybatis的高端用法你会吗?

    前面了解了springboot + mybatis的单数据源和多数据源的集成已经使用,本篇文章来聊聊mybatis的高端用法吧 1.环境搭配 1.1 pom依赖 基于springboot 2.5.6, ...

  6. Mybatis基础学习之一级缓存和二级缓存的简单使用

    前言: 小伙伴们,大家好,我是狂奔の蜗牛rz,当然你们可以叫我蜗牛君,我是一个学习Java半年多时间的小菜鸟,同时还有一个伟大的梦想,那就是有朝一日,成为一个优秀的Java架构师. 这个Mybatis ...

  7. 效率更快的代码生成器

    测试背景 最近公司接到一个新客户关系管理项目,为了能够提高开发效率,研发经理尝试了很多种方法,终于在一个Spdycoding(https://www.spdycoding.com/)的网站上找到了可以 ...

  8. 今天的学生要做汤饭吗

    Nineteen or so years ago, I imagine, today's college students were banging their spoons against thei ...

  9. java Spring-Boot框架学习视频-百度云盘

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/lk142500/article/det ...

最新文章

  1. Ubuntu 14.04 64bit上使用IPython玩转Docker
  2. ATS程序功能和使用方法详解
  3. Mac OS X的快捷键
  4. 解决安装Tensorflow时的setup-tool错误
  5. Spring的@ImportResource注解
  6. 反射工具类,如斯优雅
  7. NET问答: 如何避免在 EmptyEnumerable 上执行 Max() 抛出的异常 ?
  8. js判断对象数组中是否存在某个对象
  9. 区块链的爆发仍为时尚早......
  10. git学习(九)跨团队协作-非团队成员参与git项目开发
  11. python支持复数以及相关的运算吗_Python复数属性和方法运算操作示例
  12. /etc/group
  13. HTTP请求方式和幂等性
  14. matlab中函数imhist的用法
  15. 搜狗浏览器查看账号密码
  16. 指付通盗刷信用卡维权连载--9月4日维权纪实
  17. 2010全球最值得模仿的230个网站
  18. call和calling的用法_英语词汇call的短语及用法
  19. 推荐5个超实用的神器网站
  20. 守株待兔欧洲游-法国(9.30-10.5)(已完工)

热门文章

  1. NHibernateLinq简单的CRUD操作
  2. JBoss下布署Spring2.5和Struts2系统
  3. python 多级菜单_python多级菜单
  4. hdu4912 LCA+贪心
  5. Android-可自动缩小字体的TextView
  6. 【Android 逆向】逆向修改游戏应用 ( 分析应用结构 | 定位动态库位置 | 定位动态库中的修改点 | 修改动态库 | 重打包 )
  7. 【Android 逆向】Android 系统文件分析 ( /proc/pid 进程号对应进程目录 | oom_adj | maps | smaps | mem | task | environ )
  8. 【Android 内存优化】Java 内存模型 ( Java 虚拟机内存模型 | 线程私有区 | 共享数据区 | 内存回收算法 | 引用计数 | 可达性分析 )
  9. Docker批量操作容器
  10. 7-1 银行业务队列简单模拟 (25 分)