MyBatis学习总结(一)简单入门案例

主要内容:本文主要通过对数据库中的use表进行增删改查总结mybatis的环境搭建和基本入门使用

一、需要的jar包:

1、核心包

2、依赖包

3、jdbc数据库驱动(mysql为例)

二、配置文件

1、核心配置文件(SqlMapConfig.xml)

组成部分

1、数据连接和事务
<!--和spring整合后该配置取消-->
<environments default="development">
<environment id="development">
<!--使用jdbc事务管理-->
<transactionManager type="JDBC" />
<!--数据库连接-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
2、配置映射文件
<mappers>
<mapper resource="com/mybatisTest/map/User.xml" />
</mappers>

2、映射文件(User.xml)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="test"> <!-- 根据id获取用户信息 -->
<select id="findUserById" parameterType="int" resultType="com.mybatisTest.pojo.User">
select * from user where id = #{id}
</select> <!-- 根据username查询 -->
<select id="findUserByUsername" parameterType="java.lang.String" resultType="com.mybatisTest.pojo.User">
select * from user where username like '%${value}%' /*如果参数类型是简单数值类型,大括号中间必须value*/
</select> <!-- 添加用戶 -->
<insert id="insertUser" parameterType="com.mybatisTest.pojo.User">
insert into user(username,birthday,sex,address,detail,score)
values(#{username},#{birthday},#{sex},#{address},#{detail},#{score});
</insert> <!-- 刪除用戶 -->
<delete id="deleteUser" parameterType="com.mybatisTest.pojo.User">
delete from user where id=#{id}
</delete> <!-- 更新用戶 -->
<update id="updateUser" parameterType="com.mybatisTest.pojo.User">
update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address},detail=#{detail},score=#{score}
where id=#{id}
</update> </mapper>

说明:

在这个配置文件的mappers 属性中有个namespace,他的作用是为了区分不同的sql组,相当于java中包的概念,对user的操作使用同一个namespace,对商品的操作使用同一个namespace,通常也可以将mapper文件的路径名作为namespace,也可以根据需求自定义,在后边测试类中,使用namespace.[sqlid]来执行对应的sql

三、测试类

public class Demo01 {

    //定义会话工厂
private SqlSessionFactory sqlSessionFactory; //创建会话
@Before
public void createSqlSessionFactory() throws Exception {
//配置文件位置
String resource = "SqlMapConfig.xml";
//获取输入流
InputStream inputStream = Resources.getResourceAsStream(resource);
//创建SqlSessionFactory
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} //根据用户id查询
@Test
public void testFindUserById(){
//数据库会话实例
SqlSession sqlSession = null;
sqlSession = sqlSessionFactory.openSession(); User user = sqlSession.selectOne("test.findUserById",1); System.out.println(""+user+"");
sqlSession.close();
} //根据用户名查询
@Test
public void testFindUserByUsername(){
//数据库会话实例
SqlSession sqlSession = null;
sqlSession = sqlSessionFactory.openSession(); List<User> list = sqlSession.selectList("test.findUserByUsername", "xu");
for (User user:list) {
System.out.println(user);
} sqlSession.close();
} //添加用户
@Test
public void insertUser(){
//数据库会话实例
SqlSession sqlSession = null;
sqlSession = sqlSessionFactory.openSession(); User user = new User();
user.setUsername("徐杰");
user.setAddress("山东德州");
user.setDetail("1212");
user.setScore(100f);
user.setBirthday(new Date()); sqlSession.insert("test.insertUser",user); //提交事务
sqlSession.commit();
sqlSession.close();
} //删除用户
@Test
public void deleteUser(){
//数据库会话实例
SqlSession sqlSession = null;
sqlSession = sqlSessionFactory.openSession(); sqlSession.delete("com.mybatisTest.map.User.xml.deleteUser",3); //提交事务
sqlSession.commit();
sqlSession.close();
} //更新用户
@Test
public void updateUser(){
//数据库会话实例
SqlSession sqlSession = null;
sqlSession = sqlSessionFactory.openSession(); User user = new User();
user.setId(2);
user.setUsername("xiaoming");
user.setBirthday(new Date());
user.setSex("女");
user.setAddress("北京北京");
user.setDetail("122121212");
user.setScore(90f);
sqlSession.update("user.updateUser",user); //提交事务
sqlSession.commit();
sqlSession.close();
}
}

四、映射文件中insert操作获取新增主键

1、使用数据库自带的自增方式:

说明:这个地方的获取主键,是将新增加记录的id自动赋值给新增加记录所对应的那个实体对象的id

,我们每次新增对象的时候,都是先new一个对象,然后将各种属性赋值,由于mysql主键设置是自增,所以无需设置id,但是新增完毕之后,如何让程序得到mysql自增的id就是这里要理解的地方,需要修改的是mybatis的mapper文件,具体修改配置如下:

user.xml:

<!-- 添加用戶 -->
<insert id="insertUser" parameterType="com.mybatisTest.pojo.User">
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
select LAST_INSERT_ID()
</selectKey>
insert into user(username,birthday,sex,address,detail,score)
values(#{username},#{birthday},#{sex},#{address},#{detail},#{score});
</insert>

打印新增加user的id

//添加用户
@Test
public void insertUser(){
//数据库会话实例
SqlSession sqlSession = null;
sqlSession = sqlSessionFactory.openSession(); User user = new User();
user.setUsername("沙悟净");
user.setAddress("流沙河");
user.setDetail("1212");
user.setScore(100f);
user.setBirthday(new Date()); sqlSession.insert("user.insertUser", user);
System.out.println("新增主键是:"+user.getId()); //提交事务
sqlSession.commit();
sqlSession.close();
}

2、使用uuid的方式:

说明:这种方式是在数据执行插入操作之前,先为插入对象设置一个uuid赋值给id,然后执行没具体配置如下:

user.xml:

<!-- 添加用戶 -->
<insert id="insertUser" parameterType="com.mybatisTest.pojo.User">
<selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String">
select uuid()
</selectKey>
insert into user(id,username,birthday,sex,address,detail,score)
values(#{id},#{username},#{birthday},#{sex},#{address},#{detail},#{score});
</insert>

注意点:相对比使用数据库自增获取id的方法,使用uuid不仅需要更改标签< selectkey > 中的执行语句,返回类型,执行顺序,还有具体的sql也需要更改,使用自增获取的方式中sql不用写id,而uuid必须要加上id

MyBatis学习总结(一)简单入门案例的更多相关文章

  1. springcloud+eureka简单入门案例

    springcloud+eureka简单入门案例 一.服务提供者 直接提供服务,入门案例没有特别要设置的地方,注意下端口,由于要启动多个服务,可能会冲突 配置文件(src/main/resources ...

  2. Java开发学习(四十)----MyBatisPlus入门案例与简介

    一.入门案例 MybatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发.提供效率. SpringBoot它能快速构建Spring开发环境用以整合其他技术,使用起来 ...

  3. drools的简单入门案例

    一.背景 最近在学习规则引擎drools,此处简单记录一下drools的入门案例. 二.为什么要学习drools 假设我们存在如下场景: 在我们到商店购买衣服的时候,经常会发生这样的事情,购买1件不打 ...

  4. Java开发学习(十五)----AOP入门案例及其工作流程解析

    一.AOP简介 1.1 什么是AOP AOP(Aspect Oriented Programming)面向切面编程,一种编程范式,指导开发者如何组织程序结构. OOP(Object Oriented ...

  5. Java开发学习(二十三)----SpringMVC入门案例、工作流程解析及设置bean加载控制

    一.SpringMVC概述 SpringMVC是隶属于Spring框架的一部分,主要是用来进行Web开发,是对Servlet进行了封装.SpringMVC是处于Web层的框架,所以其主要的作用就是用来 ...

  6. mybatis学习笔记一(入门)

    昨天看了一下mybatis,学习了一下有很多东西还不懂,但是想把一些知道的记录一下,如有错误请大家多多指点. mybatis它是apche的一个开源项目,它以前的没名字并不是叫mybatis而是叫ib ...

  7. SpringMVC学习笔记之---简单入门

    SpringMVC简单入门 (一)什么是MVC设计模式 (1)model:模型数据,业务逻辑 (3)view:呈现模型,与用户进行交互 (3)controller:负责接收并处理请求,响应客户端 (二 ...

  8. MyBatis学习笔记(一)入门

    首先给大家推荐几个网页: http://blog.csdn.net/isea533/article/category/2092001    没事看看 - MyBatis工具:www.mybatis.t ...

  9. MyBatis学习总结_01_MyBatis快速入门

    一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...

随机推荐

  1. TextView SpannableString 使用之实现可点击超链接效果

    TextView SpannableString 使用之实现可点击超链接效果 如果看到这里说明你对 TextView 已经有了一定的了解,至少已经使用过该控件显示文字过.现在来实现一些复杂一点的效果. ...

  2. bzoj1003

    考虑dp[i]表示前i天的最小总成本. 枚举上一次在第j天之后对路线进行了修改,那么就由dp[j]转移至dp[i],转移的代价是把第[j+1,i]天所有被占用的点全删掉后的最短路(不连通当然就是INF ...

  3. CLR类型设计之类型之常量和字段

             前言 孔子说:温故而知新,可以为师矣.所以对于学习过的知识要多复习,并且每一次复习都要尽可能的去扩展,而不是书本上的几句理论知识.很多人都喜欢分享自己的学习内容,记录下生活的点点滴滴 ...

  4. [转]开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo

    热衷于开源框架探索的我发现ASP.NET MVC与jQuery easyUI的组合很给力.由于原先一直受Ext JS框架的licence所苦恼,于是痛下决心寻找一个完全免费的js框架——easyUI. ...

  5. 【S2-052】漏洞复现(CVE-2017-9805)

    一.漏洞描述 Struts2 的REST插件,如果带有XStream组件,那么在进行反序列化XML请求时,存在未对数据内容进行有效验证的安全隐患,可能发生远程命令执行. 二.受影响版本 Struts2 ...

  6. java的String构造对象的几种方法以及内存运行过程

    String类创建对象的方法可以分为以下三种 1.String a = "123"; 2.String b = new String("123"); 3.Str ...

  7. 《java.util.concurrent 包源码阅读》20 DelayQueue

    DelayQueue有序存储Delayed类型或者子类型的对象,没当从队列中取走元素时,需要等待延迟耗完才会返回该对象. 所谓Delayed类型,因为需要比较,所以继承了Comparable接口: p ...

  8. (转载) Java子类与父类之间的对象转换

    在使用Java的多态机制时,常常使用的一个特性便是子类和父类之间的对象转换.从子类向父类的转换称为向上转换(upcasting),通过向上转换,我们能够在编写程序时采用通用程序设计的思想,在需要使用子 ...

  9. 九、Hadoop学习笔记————Hive简介

    G级别或者T级别都只能用hadoop

  10. 企业级缓存系统varnish应用

    场景 随着公司业务快速发展,公司的电子商务平台已经聚集了很多的忠实粉丝,公司也拿到了投资,这时老板想通过一场类似双十一的活动,进行一场大的促销,届时会有非常多的粉丝访问网站,你的总监与市场部门开完会后 ...