文章目录

  • 一、ResultMapper 以及 分页
    • ResultMapper:
    • 分页:
  • 书写代码的准备工作:
    • 首先创建获取sqlsession的工具类:
    • 书写Mybatis的配置文件:
  • 一、Mybatis的增删改查操作(CRUD操作)
    • 操作步骤():

一、ResultMapper 以及 分页

ResultMapper:

  • 解决属性名与字段名不一致的问题
    mybatis会根据查询结果的列名自动映射到pojo类的 属性的set方法中(默认全部转化为小写),若是没有就会设置为null。

分页:

  • 如果查询大量数据时,为了节省资源,每次处理批量小部分数据,减少数据库压力
    两种实现方法:
  • 通过设置parameterType属性为 map 传入startIndex(起始坐标),pageSize(获取记录数量)

书写代码的准备工作:

首先创建获取sqlsession的工具类:

public class MybatisUtils {private static SqlSessionFactory sqlSessionFactory;static {try {// 使用Mybatis第一步获取sqlSessionFactory对象String resource = "mybatis-config.xml";InputStream inputStream  = Resources.getResourceAsStream(resource);sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);} catch (IOException e) {e.printStackTrace();}}/*既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。*/public static SqlSession getSqlSession(){ return sqlSessionFactory.openSession(); }public static SqlSession getSqlSessionAuto_Commit(){/*自动提交数据*/return sqlSessionFactory.openSession(true);}}

书写Mybatis的配置文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!--导入properties文件,在标签中设置属性值,如果与文件中有的名称相同,以文件中的为主--><properties resource="dp.properties"><property name="name" value="root"/><property name="password" value="123456"/></properties><settings><!--指定日志打印文件 常用的两种:STDOUT_LOGGING和LOG4J(需要导入包)--><setting name="logImpl" value="LOG4J"/></settings><!--设置别名--><!--方法一直接设置别名--><typeAliases><typeAlias type="com.sjp.pojo.User" alias="user"></typeAlias></typeAliases><!--方法二指定包设置别名(默认为首字母大写bean的名称)<!-<typeAliases><package name="com.sjp.pojo"/></typeAliases>--><!--方法三去bean类进行注解--><!--配置环境--><environments default="environment1"><!--第一套环境使用外部prorperties文件连接--><environment id="environment1"><!--事务管理器(transactionManager)事务管理器类型有两种(type="[JDBC|MANAGED]")--><transactionManager type="JDBC"></transactionManager><!--dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。--><!--三种内建的数据源类型(也就是 type="[UNPOOLED|POOLED|JNDI]")--><dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}"/><property name="username" value="${name}"/><property name="password" value="${password}"/></dataSource></environment><!--第二套环境直接在该文件中进行配置--><environment id="environment2"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/><property name="username" value="root"/><property name="password" value="123456"/></dataSource></environment></environments><!--mapper映射器 映射mapper文件--><mappers><!--方式一(最常用):使用相对于类路径的资源引用--><!--<mapper resource="com/sjp/dao/*Mapper.xml"></mapper>--><!--<mapper resource="com/sjp/dao/UserMapper.xml"></mapper>--><!--方式二 :使用映射器接口实现类的完全限定类名 (xml文件的名称应该与接口名称一致)或者通过注解进行执行--><mapper class="com.sjp.dao.UserMapper"></mapper><!--方式三:将包内的映射器接口实现全部注册为映射器(xml文件的名称应该与接口名称一致)--><!--<package name="com.sjp.dao"/>--></mappers>
</configuration>

一、Mybatis的增删改查操作(CRUD操作)

操作步骤():

  • 1.创建与数据库相同的pojo类
  • 2.创建UserMapper类的接口
  • 3.创建接相对应的xml配置文件(名称最后相同:UserMapper.xml)
  • 4.编写测试类进行测试

第一步:创建与数据库相同的pojo类:


@Alias("user")   //设置别名(多种方法)
public class User {private int id;private String name;private String pwd;public User() {}public User(int id, String name, String pwd) {this.id = id;this.name = name;this.pwd = pwd;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}@Overridepublic String toString() {return "user{" +"id=" + id +", name='" + name + '\'' +", pwd='" + pwd + '\'' +'}';}

第二步:创建UserMapper类的接口:

 /*通过mapper执行增删改查*/
public interface UserMapper {/*查询用户*/List<User> getUserlist();/*分页查询用户*/List<User> getUserlistByLimit(Map map);/*分页查询用户(RowBounds)*/List<User> getUserlistByLimitRowBounds();/*注解执行增删改查*//*查询*/@Select("select * from mybatis.user")List<User> getUserListByComment();/*根据id查询*/@Select("select * from mybatis.user where id = #{id}")User getUserListByidComment(@Param("id") int id);/*添加数据(引用对象不需要@Param方法)*/@Insert("insert into mybatis.user values(null,#{name},#{pwd})")int insertUserByComment(User user);/*删除数据*/@Delete("delete from mybatis.user where id = #{id}")void delUserByComment(int id);/*修改数据*/@Update("update mybatis.user set name = #{name},pwd = #{pwd} where id = #{id}")int updateUserByComment(@Param("id") int id, @Param("name") String name, @Param("pwd") String pwd);}

第三步:创建接相对应的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="com.sjp.dao.UserMapper"><!--ResultMap设置--><resultMap id="rsmp1" type="user"><result column="pwd" property="pwd"/></resultMap><resultMap id="rsmp2" type="user" /><!--select查询语句--><select id="getUserlist" resultMap="rsmp1">select * from mybatis.user;</select><!--使用分页进行查询--><select id="getUserlistByLimit" parameterType="map" resultMap="rsmp2">select * from mybatis.user limit #{index},#{pagesize};</select><!--分页查询数据(RowBounds)--><select id="getUserlistByLimitRowBounds" resultMap="rsmp1">select * from mybatis.user;</select></mapper>

第四步:编写测试类进行测试:

public class UserMapperDaoTest {// 查询所有数据@Testpublic void  selectTest(){// 第一步:获取sqlsession对象SqlSession sqlSession = MybatisUtils.getSqlSession();// 方式一:getMapperUserMapper mapper = sqlSession.getMapper(UserMapper.class);List<User> userlist = mapper.getUserlist();for (User user : userlist){System.out.println(user);}// 关闭sqlsessionsqlSession.close();}// 分页查询数据@Testpublic void selectByLimitTest(){SqlSession sqlSession = MybatisUtils.getSqlSession();UserMapper userMapper = sqlSession.getMapper(UserMapper.class);Map<String,Object> map = new HashMap<String, Object>();map.put("index",2);map.put("pagesize",3);List<User> users = userMapper.getUserlistByLimit(map);for (User user:users){System.out.println(user);}sqlSession.close();}@Test// 通过RowBounds分页查询public void selectByLimitRowBoundsTest(){SqlSession sqlSession = MybatisUtils.getSqlSession();RowBounds rowBounds = new RowBounds(1,4);// 调用sqlsession下的selectList方法进行分页查询List<User> users = sqlSession.selectList("com.sjp.dao.UserMapper.getUserlistByLimitRowBounds",null,rowBounds);for (User user:users){System.out.println(user);}sqlSession.close();}// 注解进行增删改查@Test// 查询全部数据public void selectByCommentTest(){SqlSession sqlSession = MybatisUtils.getSqlSessionAuto_Commit();UserMapper userMapper = sqlSession.getMapper(UserMapper.class);List<User> users = userMapper.getUserListByComment();for (User user:users){System.out.println(user);}sqlSession.close();}@Test// 根据id查询数据public void selectByidCommentTest(){SqlSession sqlSession = MybatisUtils.getSqlSessionAuto_Commit();UserMapper userMapper = sqlSession.getMapper(UserMapper.class);User user = userMapper.getUserListByidComment(4);System.out.println(user);sqlSession.close();}@Test// 插入数据public void insertByCommentTest(){SqlSession sqlSession = MybatisUtils.getSqlSessionAuto_Commit();UserMapper userMapper = sqlSession.getMapper(UserMapper.class);int i = userMapper.insertUserByComment(new User(0,"删除","123456"));sqlSession.commit();sqlSession.close();}@Test// 删除数据public void delByCommentTest(){SqlSession sqlSession = MybatisUtils.getSqlSessionAuto_Commit();UserMapper userMapper = sqlSession.getMapper(UserMapper.class);userMapper.delUserByComment(17);sqlSession.commit();sqlSession.close();}@Test// 修改数据public void updateByCommentTest(){SqlSession sqlSession = MybatisUtils.getSqlSessionAuto_Commit();UserMapper userMapper = sqlSession.getMapper(UserMapper.class);int i = userMapper.updateUserByComment(18,"蔡徐坤","caicaicai");sqlSession.commit();sqlSession.close();}
}

Java SSM框架学习之Mybatis篇相关推荐

  1. SSM框架学习总结第零篇--框架是什么

    SSM框架系列文章: SSM框架学习总结第零篇–框架是什么 SSM框架学习总结第一篇–MyBatis SSM框架学习总结第二篇–Spring SSM框架学习总结第三篇–Spring MVC SSM框架 ...

  2. SSM框架学习----Mybatis(2)

    Mybatis框架学习--中 Mybatis框架学习----(2) 1. Mybatis的自定义分析 1. 第一步 2. 第二步 3. 第三步 4. 第四步 5. 第五步 2. Mybatis实现CR ...

  3. SSM框架学习文档以及SSM整合(附Github地址=含SSM学习时的实例代码)

    SSM框架学习 软件架构: 基于流行SSM框架:Spring+SpringMVC+Mybatis 项目配置: 使用Maven进行项目jar导入 ​ 使用Git进行版本控制,并将每次编写的代码上传到Gi ...

  4. java毕业设计高校学习社区mybatis+源码+调试部署+系统+数据库+lw

    java毕业设计高校学习社区mybatis+源码+调试部署+系统+数据库+lw java毕业设计高校学习社区mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目架构:B/S架构 开 ...

  5. 使用Java+SSM框架+JSP开发简单在线电影推荐网 电影推荐系统 豆瓣电影爬虫 基于用户、物品的协同过滤推荐算法 大数据 机器学习 SimpleMovieRecommendOnline

    使用Java+SSM框架+JSP开发简单在线电影推荐网 电影推荐系统 豆瓣电影爬虫 基于用户.物品的协同过滤推荐算法 大数据 机器学习 SimpleMovieRecommendOnline 一.项目简 ...

  6. 为了转行程序员而努力的第三十九天- Java SSM框架,线程

    今天正常醒了,因为昨天起晚了,导致上午很快就过去了,今天决定早点起床,突然有这么长几乎没有人打扰的假期真是太难得了,以至于有时候都不知道该做什么,每到晚上的时候又感慨居然这么快又过了一天.今天提前学习 ...

  7. 【图解】SSM框架学习总结

    SSM框架学习首先掌握SSM三层结构及配置 图1:Spring.SpringMVC.Mybatis结构图 图2:SSM三层结构Dao.service.controller图 图3:SSM配置说明图 图 ...

  8. SSM框架(spring+springmvc+mybatis)+Mysql实现的社区物业管理系统(功能包含分角色,报修管理、抄表管理、车位管理、房屋管理、业主管理、投诉管理、报修统计分析等)

    博客目录 SSM框架(spring+springmvc+mybatis)+Mysql实现的社区物业管理系统 实现功能截图 系统功能 使用技术 代码 完整源码 SSM框架(spring+springmv ...

  9. Java日志框架学习--JUL和Log4j--上

    Java日志框架学习--JUL和Log4j--上 引言 日志框架 市面流行的日志框架 日志门面和日志框架的区别 JUL JUL简介 JUL组件介绍 实际使用 Logger之间的父子关系 默认配置文件位 ...

最新文章

  1. 实现iOS图片等资源文件的热更新化(二):自定义的动态 imageNamed
  2. 一个图片 在另一个图片定位_一个好的listing,图片有哪些基本要求
  3. 【转】MongoDB C# / .NET Driver 中IMongoQuery的内部实现Query的用法
  4. $.ajax json 在本地正常 上传服务器不正常
  5. 信息系统项目管理师:第4章:项目整体管理与变更管理(1)
  6. 切换ubuntu启动方式 命令行/图形界面
  7. 阿里开源分布式事务seata带你入门
  8. java dragged_Java:mouseDragged并在图形界面中移动
  9. __asm__ __volatile__内嵌汇编用法简述
  10. 谷歌浏览器input中的text 和 button 水平对齐的问题
  11. org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.itheima.
  12. MRP系统运行计算逻辑浅析
  13. F28335课后习题记录
  14. 关于Fragment + RecyclerView + Toolbar + BottomNavigationView的组合应用
  15. 22年全国数学建模比赛ABC题思路模型
  16. 【下载Tomcat旧版本】
  17. 《微服务系列:Eureka服务注册发现中心》
  18. stricmp linux 头文件,头文件stdio.hstdlib.hstring.h
  19. 8.25 欢乐emmm赛
  20. 程序员如何画好架构图?

热门文章

  1. tomcat启动 报tomcat org.apache.catalina.LifecycleException
  2. python oserror路径not found_python基本操作-文件、目录及路径
  3. 【Flink】Flink 1.9 版本 web UI 突然没有日志
  4. 【kafka】kafka 启动 Version `123123` is not a valid version
  5. netty : io.netty.handler.codec.TooLongFrameException
  6. 95-35-010-Topic-Topic 扩容 源码解析
  7. 40-400-020-运维-优化-使用MySQLTunner优化MySQL
  8. 【Flink】Flink Invalid timestamp -1 Timestamp should always be none-negative or null
  9. 【Flink】Flink 单个任务 多个流的消费同一个topic的时候其中一个流卡死 不消费
  10. 【java】java AQS AbstractQueuedSynchronizer 实现自定义锁以及相关简介