博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java-mybaits-00103-入门程序原生的【查、增、删、改】
阅读量:6914 次
发布时间:2019-06-27

本文共 3784 字,大约阅读时间需要 12 分钟。

一、需求

实现以下功能:
根据用户id查询一个用户信息
根据用户名称模糊查询用户信息列表
添加用户
更新用户
删除用户

二、具体步骤

1.增加pom引用

2.增加log4j.properties

# Global logging configuration# 开发环境设置成debug,生产环境设置成info或者errorlog4j.rootLogger=DEBUG, stdout# Console output...log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
mybatis默认使用log4j作为输出日志信息。

3.SqlMapConfig.xml

在classpath下创建SqlMapConfig.xml,如下:
配置mybatis的运行环境,数据源、事务等。
View Code
SqlMapConfig.xml是mybatis核心配置文件,上边文件的配置内容为数据源、事务管理。

4、其他po类,mapper的编写参看全部代码

三、总结知识点

1.#{}和${}

#{}
  表示一个占位符号,#{}接收输入参数,类型可以是简单类型,pojo、hashmap。
  如果接收简单类型,#{}中可以写成value或其它名称。
  接收pojo对象值,通过OGNL读取对象中的属性值,通过属性.属性.属性...的方式获取对象属性值。
${}
  表示一个拼接符号,会引起sql注入,所以不建议使用${}。
  接收输入参数,类型可以是简单类型,pojo、hashmap。
  如果接收简单类型,${}中只能写成value。
  接收pojo对象值,通过OGNL读取对象中的属性值,通过属性.属性.属性...的方式获取对象属性值。

2.parameterType和resultType

parameterType:指定输入参数类型,mybatis通过ognl从输入对象中获取参数值拼接在sql中。
resultType:指定输出结果类型,mybatis将sql查询结果的一行记录数据映射为resultType指定类型的对象。

3.selectOne和selectList

selectOne表示查询出一条记录进行映射。如果使用selectOne可以实现使用selectList也可以实现(list中只有一个对象)。
selectList表示查询出一个列表(多条记录)进行映射。如果使用selectList查询多条记录,不能使用selectOne。 
selectOne查询一条记录,如果使用selectOne查询多条记录则抛出异常:
org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 3
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:70)

4.mapper中的namespace

  namespace :命名空间,用于隔离sql语句。
  注意:使用 mapper代理方式开发,namespace比较重要

5.sqlsession创建使用

// 配置文件String resource = "SqlMapConfig.xml";InputStream inputStream = Resources.getResourceAsStream(resource);// 使用SqlSessionFactoryBuilder从xml配置文件中创建SqlSessionFactorySqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);SqlSession sqlSession = null;try {  // 创建数据库会话实例sqlSession   sqlSession = sqlSessionFactory.openSession();   User user = sqlSession.selectOne("test.findUserById", 1);//执行sql   System.out.println(user);} catch (Exception e) {   e.printStackTrace();} finally {   if (sqlSession != null) {      sqlSession.close();   }}

6.mysql自增主键

select LAST_INSERT_ID()
insert into user(username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address});
添加selectKey实现将主键返回
keyProperty:返回的主键存储在pojo中的哪个属性
order:selectKey的执行顺序,是相对与insert语句来说,由于mysql的自增原理执行完insert语句之后才将主键生成,所以这里selectKey的执行顺序为after
resultType:返回的主键是什么类型
LAST_INSERT_ID():是mysql的函数,返回auto_increment自增列新记录id值。
 
mysql可以使用以下:
insert into aa (id, item1) values (#{id,jdbcType=BIGINT}, #{aa,jdbcType=INTEGER})
useGeneratedKeys 取值范围true|false 默认值是:false。 含义:设置是否使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。

7.Mysql使用 uuid实现主键

  select uuid()
  insert into user(id,username,birthday,sex,address) values(#{
id},#{username},#{birthday},#{sex},#{address})
注意这里使用的order是“BEFORE”
 使用mysql的uuid()函数生成主键,需要修改表中id字段类型为string,长度设置成35位。
 
执行思路:
先通过uuid()查询到主键,将主键设置到user属性中,进而输入 到sql语句中。
 执行uuid()语句顺序相对于insert语句之前执行。

8.Oracle使用序列生成主键

首先自定义一个序列且用于生成主键,selectKey使用如下:
  SELECT 自定义序列.NEXTVAL FROM DUAL
  insert into user(id,username,birthday,sex,address) values(#{id},#{username},#{birthday},#{sex},#{address})
注意这里使用的order是“BEFORE”
 
 
 
 

转载地址:http://hbicl.baihongyu.com/

你可能感兴趣的文章
一天一点T-SQL:关于分区表(二)
查看>>
如何找到适合自己的学习方法
查看>>
Use crash to show the code line of a backtrace entry like "ocfs2_truncate_file+0x127/0x6c0"
查看>>
nagios 报警
查看>>
java利用Collection类排序
查看>>
<民工哥linux>公众号2017年全年文章汇总
查看>>
8月15日 Google收购MOTOROLA移动 125亿美元成交
查看>>
Linux-weblogic 10.3.6控制台密码解密过程
查看>>
我奋斗的目标是什么
查看>>
模式识别 - 视频检测器(VideoDetector)项目设计
查看>>
Android 位置服务与GPS实时定位
查看>>
Nginx配置——用户认证
查看>>
SD卡分区及取消分区
查看>>
创建VLAN、中继链路和参与以太网捆绑的详细配置和截图
查看>>
健康的办公族作息时刻表
查看>>
新博客地址此博客不再更新baishuchao.github.io
查看>>
Git问题Everything up-to-date解决
查看>>
淘宝Tengine安装指南
查看>>
nginx-mysql-php安装配置
查看>>
div加链接 html给div加超链接实现点击div跳转的方法
查看>>