关键词:
一 单条记录查询
上篇博客的例子便是单条记录查询
二 多条记录查询
1 在映射文件中加入如下sql查询,${}:表示拼接sql串,将接收到的参数不加任何修饰拼接在sql中,${value}:接收输入参数的内容,如果传入类型是简单类型,${}中只能使用value。
<!--根据名称查找记录,可能返回多条记录 resultType:指定就是单条记录所映射的java对象类型 ${}:表示拼接sql串,将接收到的参数不加任何修饰拼接在sql中。 使用${}拼接sql,容易引起sql注入 ${value}:接收输入参数的内容,如果传入类型是简单类型,${}中只能使用value --> <select id="findUserByName" parameterType="String" resultType="pers.czs.mybatis.po.User"> select * from user where username like ‘%${value}%‘ </select>
2 在测试代码中加入如下执行代码,由于查询可能出现多条,因此应该使用list集合存放selectList查询出来的多条记录
@Test public void findUserByNameTest() throws IOException { //Mybatis配置文件 String resource = "SqlMapConfig.xml"; //得到配置文件流 InputStream inputStream = Resources.getResourceAsStream(resource); //创建会话工厂,传入配置文件信息 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //通过工厂得到SqlSession会话 SqlSession sqlSession = sqlSessionFactory.openSession(); List<User> list = sqlSession.selectList("test.findUserByName", "小明"); System.out.println(list); sqlSession.close(); }
3 运行结果
三 添加用户(insert)
1 在映射文件中加入相应的代码:其中parameterType:指定输入参数类型是pojo,无返回值,若主键是自增的,则可以不写主键,mysql会自动分配,我这里主键是ID,是自增的,故没写出来
<!--添加用户 parameterType:指定输入参数类型是pojo #{}中指定pojo属性名,接收到pojo对象的属性值,mybatis通过OGNL获取对象属性值 若主键是自增的,则可以不写主键,mysql会自动分配,我这里主键是ID,是自增的,故没写出来 --> <insert id="insertUser" parameterType="pers.czs.mybatis.po.User"> insert into user (username,birthday,sex,address) value(#{username},#{birthday},#{sex},#{address}) </insert>
2 测试代码 此处记得使用sqlSession进行commit
@Test
public void insertUserTest() throws IOException {
//Mybatis配置文件
String resource = "SqlMapConfig.xml";
//得到配置文件流
InputStream inputStream = Resources.getResourceAsStream(resource);
//创建会话工厂,传入配置文件信息
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//通过工厂得到SqlSession会话
SqlSession sqlSession = sqlSessionFactory.openSession();
User user = new User();
user.setAddress("福建福州");
user.setBirthday(new Date());
user.setSex("男");
user.setUsername("零零七");
sqlSession.insert("test.insertUser", user);
//提交
sqlSession.commit();
sqlSession.close();
}
3 测试结果
四 添加用户--主键返回
1 自增主键返回
修改上述插入用户的映射文件代码,last_insert_id(),得到刚刚insert进去记录的主键值,只适用自增主键,keyProperty:将查询到的主键设置到parameterType指定的对象的特定属性中,resultType:指定select last_insert_id()的结果类型
<insert id="insertUser" parameterType="pers.czs.mybatis.po.User"> <!--将插入数据的主键返回,返回到user对象中 last_insert_id():得到刚刚insert进去记录的主键值,只适用自增主键 keyProperty:将查询到的主键设置到parameterType指定的对象的特定属性中 resultType:指定select last_insert_id()的结果类型 --> <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer"> select last_insert_id() </selectKey> insert into user (username,birthday,sex,address) value(#{username},#{birthday},#{sex},#{address}) </insert>
2 在测试代码中加入输出id的语句
@Test public void insertUserTest() throws IOException { //Mybatis配置文件 String resource = "SqlMapConfig.xml"; //得到配置文件流 InputStream inputStream = Resources.getResourceAsStream(resource); //创建会话工厂,传入配置文件信息 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //通过工厂得到SqlSession会话 SqlSession sqlSession = sqlSessionFactory.openSession(); User user = new User(); user.setAddress("福建福州"); user.setBirthday(new Date()); user.setSex("男"); user.setUsername("零零七"); sqlSession.insert("test.insertUser", user); System.out.println(user.getId()); //提交 sqlSession.commit(); sqlSession.close(); }
3 输出结果
五 非自增主键返回
1 使用mysql的uuid()函数生成主键,需要修改表中id字段类型为string,长度设置为35位
思路:
先通过uuid()查询到主键,将主键输入到sql语句中。
执行uuid()语句顺序相对于insert语句之前执行
将上面的映射文件代码改成如下:
<!-- 使用mysql的uuid()生成主键 执行过程: 首先通过uuid()得到主键,将主键设置到user对象的id属性中 其次在执行insert时,从user对象取出id属性值 --> <selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String"> select uuid() </selectKey> insert into user (id,username,birthday,sex,address) value(#{id},#{username},#{birthday},#{sex},#{address})
mybatis结果映射与mybatis缓存初探学习记录(代码片段)
MyBatis高级结果映射(一对一、一对多、多对多的映射),延迟加载,查询缓存(一级缓存),二级缓存的学习记录;1、学习中所使用到的例子,数据库基础分析2、高级结果映射3、延迟加载4、... 查看详情
mybatis学习记录3mappermethod类
主题 之前学习了一下MapperProxy的生产过程,自定义Mapper类的对象是通过动态代理生产的,调用自定义方法的时候实际上是调用了MapperMethod的execute方法:mapperMethod.execute(sqlSession,args);所以想再简单学习记录下MapperMethod类 组成从... 查看详情
mybatis原理分析学习记录(代码片段)
以下个人学习笔记,仅供参考,欢迎指正。MyBatis是支持定制化SQL、存储过程以及高级映射的持久层框架,其主要就完成2件事情:封装JDBC操作利用反射打通Java类与SQL语句之间的相互转换MyBatis的主要设计目的就是让我们对执行SQL... 查看详情
mybatis学习记录------1
一认识mybatismybatis是一个优秀的数据持久层框架,在实体类和SQL语句之间建立映射关系,是一种半自动化的ORM(对象,关系映射)实现。其封装性要低于Hibernate,性能优越,并且小巧、简单易学,应用也越来越广泛。二搭建mybatis... 查看详情
mybatis学习记录
分三部分记录,MyBatis,MyBatisSpring和MybatisGenerator。这一片记录MyBatis的一些学习心得。基本概念SqlSession:创建查询使用的是SqlSession,叫做Session,实际上也是维护了一个数据库的连接,内部通过Connection对象连接数据库。SqlSessionFac... 查看详情
mybatis学习记录~
mybatis版本<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.6</version></dependency> 动态SQL语句 IF标签<selec 查看详情
mybatis学习记录5mybatis的二级缓存
主题 之前学习了一下MyBatis的一级缓存,主要涉及到BaseExecutor这个类.现在准备学习记录下MyBatis二级缓存. 配置二级缓存与初始化发生的事情首先二级缓存默认是不开启的,需要自己配置开启.如上图,需要在configuration里去... 查看详情
我的日常报错学习记录
...先继续写下去,结果到了mapper层,无法导出@mapper的包,mybatis.xml也报错,开始排查错误,发现是mybatis版本过高。将2.0.0改成1.3.2即可,报错消失,@mapper可以导出包。但是我的mybatis.xml还在报错啊~~~~~继续改错去~~~~ 查看详情
mybatis学习记录------4
一mybatis开发dao的方法1SqlSessionFactoryBuilder:通过SqlSessionFactoryBuilder创建会话工厂SqlSessionFactory,将SqlSessionFactoryBuilder当成一个工具类使用即可,不需要使用单例管理SqlSessionFactoryBuilder。在需要创建SqlSessionFactory时候,只需要new一次Sq... 查看详情
mybatis学习过程记录(代码片段)
一、Mybatis1、mybatis-config.xml<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTDConfig3.0//EN""http://mybatis.org/dtd/myba 查看详情
mybatis源码学习记录
1、mybatis源码分析相关文章(1)https://www.cnblogs.com/zhjh256/p/8512392.html2、mybatis设计模式相关文章(1)http://www.crazyant.net/2022.html?hmsr=toutiao.io&utm_medium=toutiao.io&am 查看详情
mybatis学习记录6typehandler
主题 因为对MyBatis在JDBC数据和Java对象之间数据转化比较感兴趣,所以就记录并学习一下TypeHandler. 使用场景如上图所示,观察下接口方法就能明白.TypeHandler主要用于JDBC数据与Java对象数据之间转化,比如更新数据库的时候可以... 查看详情
mybatis学习总结——mybatis快速入门
MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(PlainOldJ... 查看详情
mybatis学习笔记——mybatis快速入门
一、Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将... 查看详情
mybatis学习过程记录(代码片段)
一、Mybatis1、mybatis-config.xml<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTDConfig3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><!--外部引入db--><propertiesresourc... 查看详情
employeemapper.xml例子,学习佟刚老师的mybatis课程,记录下的employeemapper.xml,注释详细
<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="com.atguigu.mybatis.dao.Employ 查看详情
mybatis学习笔记
目录1.Mybatis简介1.1原始JDBC操作1.2原始JDBC操作的分析1.3什么是Mybatis2.Mybatis的快速入门2.1Mybatis的开发步骤2.2Mybatis入门2.3Mybatis的映射文件概述3.Mybatis的增删改查操作3.1Mybatis的插入数据操作3.1.1示例3.1.2插入操作的注意事项3.2Mybatis的... 查看详情
mybatis-spring开发记录贴(新手)
初学MyBatis-Spring,发个帖子记录一下自己的学习历程,先写个自己的编程步骤。1.先进行数据库设计。2.根据所设计的数据,写出相应的POJO,并写出setter和getter方法。3.编写Mapper接口,并写出其相应的xml文件。4.编写MyBatisConfig... 查看详情