一.什么是Mybatis?

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。

MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。

MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

二.Come on

1.新建Project    选择Maven  直接Next  不用选择模板

2.输入名称、公司或组织Id  选择位置  指定版本  Finish

3.选择Enable Auto-Import  (启用自动导入)

4.导入坐标

5.添加表

1 DROP TABLE IF EXISTS `user`;
2
3 CREATE TABLE `mybatis`.`user` (
4 `userId` int(0) NOT NULL AUTO_INCREMENT,
5 `userName` varchar(20) NOT NULL,
6 `userSex` varchar(2) NULL,
7 PRIMARY KEY (`userId`)
8 );

6.编写domain层

package cn.lb.domain;

public class User {
private Integer userId;
private String userName;
private String userSex; public User() {
} public User( String userName, String userSex) {
this.userName = userName;
this.userSex = userSex;
} public Integer getUserId() {
return userId;
} public void setUserId(Integer userId) {
this.userId = userId;
} public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public String getUserSex() {
return userSex;
} public void setUserSex(String userSex) {
this.userSex = userSex;
} @Override
public String toString() {
return "User{" +
"userId=" + userId +
", userName='" + userName + '\'' +
", userSex='" + userSex + '\'' +
'}';
}
}

7.编写dao层

 1 package cn.lb.dao;
2
3 import cn.lb.domain.User;
4 import org.apache.ibatis.annotations.Delete;
5 import org.apache.ibatis.annotations.Insert;
6 import org.apache.ibatis.annotations.Select;
7 import org.apache.ibatis.annotations.Update;
8
9 import java.util.List;
10
11 public interface IUserDao {
12 /**
13 * 查询所有
14 * @return
15 */
16 @Select("select * from user")
17 List<User> findAllUser();
18
19 /**
20 * 根据Id查询
21 * @return
22 */
23 @Select("select * from user where userId=#{userId}")
24 User findUserById(Integer userId);
25
26 /**
27 * 根据名字查用户
28 * @param userName
29 * @return
30 */
31 @Select("select * from user where userName like #{username}")
32 List<User> findUserByName(String userName);
33
34 /**
35 * 保存用户
36 * @param user
37 */
38 @Insert("insert into user(userName,userSex) values(#{userName},#{userSex})")
39 void saveUser(User user);
40
41 /**
42 * 更新用户
43 * @param user
44 */
45 @Update("update user set userName=#{userName} , userSex=#{userSex} where userId=#{userId}")
46 void updateUser(User user);
47
48 /**
49 * 根据Id删除用户
50 * @param userId
51 */
52 @Delete("delete from user where userId=#{userId}")
53 void deleteUser(Integer userId);
54 }

8.添加Mybatis配置文件

 1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
3 "http://mybatis.org/dtd/mybatis-3-config.dtd">
4 <configuration>
5
6 <!--配置Properties
7 可以在标签内部配置连接数据库的信息,也可以通过属性引入外部配置文件信息
8 resource属性:用于指定配置文件的位置,是按照类路径的写法来写,并且必须存在于类路径下
9 -->
10
11 <!--引入JdbcConfig配置文件-->
12 <properties resource="jdbcConfig.properties"/>
13
14 <!--配置别名-->
15 <typeAliases>
16 <!--typeAlias用于配置别名 type属性指定的是实体类全限定类名,alias属性指定别名
17 当指定了别名就不区分大小写-->
18 <package name="cn.lb.domain"/>
19 </typeAliases>
20
21 <!-- 配置环境-->
22 <environments default="mysql">
23 <!--配置MySql环境-->
24 <environment id="mysql">
25 <transactionManager type="JDBC"></transactionManager>
26 <dataSource type="POOLED">
27 <property name="driver" value="${jdbc.driver}"/>
28 <property name="url" value="${jdbc.url}"/>
29 <property name="username" value="${jdbc.username}"/>
30 <property name="password" value="${jdbc.password}"/>
31 </dataSource>
32 </environment>
33 </environments>
34
35 <!--指定带注解的包-->
36 <mappers>
37 <!--package标签是用于指定dao接口所在的包 当指定了之后就是不需要写resource或者class或mapper-->
38 <package name="cn.lb.dao"/>
39 </mappers>
40 </configuration>

JdbcConfig配置

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///mybatis?characterEncoding=utf8
jdbc.username=root
jdbc.password=1234

9.测试

package cn.lb.test;

import cn.lb.dao.IUserDao;
import cn.lb.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; import javax.annotation.PreDestroy;
import java.io.InputStream;
import java.util.List; public class MybatisTest {
private SqlSessionFactory factory;
private SqlSession sqlSession;
private InputStream inputStream;
private IUserDao userDao; @Before
public void init() throws Exception {
inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
factory = new SqlSessionFactoryBuilder().build(inputStream);
sqlSession = factory.openSession();
userDao = sqlSession.getMapper(IUserDao.class);
} @Test
public void testSave() {
User user = new User("张三", "男");
userDao.saveUser(user);
} @Test
public void testFindAll()
{
List<User> list =userDao.findAllUser();
list.forEach(user-> System.out.println(user));
} @Test
public void testFindById()
{
User user =userDao.findUserById(1);
System.out.println(user);
} @Test
public void testFindByName()
{
List<User> list =userDao.findUserByName("%三%");
} @Test
public void testUpdate()
{
User user =userDao.findUserById(1);
user.setUserName("李四");
userDao.updateUser(user);
System.out.println(userDao.findUserById(1));
} @Test
public void testDelete()
{
userDao.deleteUser(1);
} @After
public void destory() throws Exception {
sqlSession.commit();
sqlSession.close();
inputStream.close();
} }

注意:如果出现无法编译请指定项目编译版本

快速入门Mybatis完成基本CURD(注解实现)的更多相关文章

  1. 快速入门Mybatis

    框架概述 什么是框架 它是我们软件开发中的一套解决方案,不同的框架解决的是不同的问题.使用框架的好处:框架封装了很多的细节,使开发者可以使用极简的方式实现功能.大大提高开发效率 三层架构 UI(表现层 ...

  2. 002-Spring4 快速入门-项目搭建、基于注解的开发bean,Bean创建和装配、基于注解的开发bean,Bean初始化销毁、Bean装配,注解、Bean依赖注入

    一.项目搭建 1.项目创建 eclipse→project explorer→new→Project→Maven Project 默认配置即可创建项目 2.spring配置 <dependenc ...

  3. Mybatis3 快速入门

    Mybatis3 快速入门 目前常见的持久层java框架有Hibernate,Mybatis,SpringData.笔者比较喜欢用SpringData.Hibernate 和 Mybatis 也经常用 ...

  4. Mybatis Plus (特性、快速入门、日志、CRUD)

    Mybatis plus 可以节省很多的工作,所有的CRUD JPA yk-mapper Mybatis plus 偷懒的 简介: MyBatis-Plus(opens new window)(简称 ...

  5. Mybatis框架 的快速入门

    MyBatis 简介 什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果 ...

  6. MyBatis学习总结(一)——MyBatis快速入门

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

  7. MyBatis快速入门

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

  8. MyBatis学习总结(一)——MyBatis快速入门(转载)

    本文转载自http://www.cnblogs.com/jpf-java/p/6013537.html MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了 ...

  9. MyBatis入门学习教程-MyBatis快速入门

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

  10. MyBatis学习总结(一)——MyBatis快速入门

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

随机推荐

  1. Cloud Bursting解决方案,Serverless容器降本增效极致体验

    本文分享自华为云社区<DTSE Tech Talk | 第42期:Cloud Bursting解决方案,Serverless容器降本增效极致体验>,作者:华为云社区精选. 线下IDC自建K ...

  2. 累死了qwq-一些平时的思考awa

    最近真的有点难受了qwq有的时候没有认可我就是会有点伤心虽然知道就算是全部的人都认可我也没有什么用...但是总归是一个动力的来源.唉有的时候真的好想就这么的放弃信奥啊,毕竟在浙江这种地方,想要那一个奖 ...

  3. go defer简介

    思考 开始之前,先考虑下下面的代码的执行结果: package main import "fmt" func test() int { i := 0 defer func() { ...

  4. SQL还是NoSQL?架构师必备选型技能

    很多时候我们都会有这样的疑问. 如果这时候直接去看MySQL.Mongo.HBase.Redis等数据库的用法.特点.区别,其实有点太着急了. 这时候,最好从「数据模型」开始讨论. 1.SQL vs ...

  5. 采药(lgP1048)

    emmm 01 背包模板... 设 f[i] 表示背包容积为 i 时所得的最大价值. 则状态转移方程为 f[j] = f[j - w[i]] + c[i] . #include<bits/std ...

  6. Unity3D ConfigMan.cs For XML File

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...

  7. c#享元模式详解

    基本介绍:   享元模式的定义:运用共享技术有效地支持大量细粒度的对象重复使用.适用于大量小粒度的对象造成的运行效率和内存使用效率低下的情况.   "享元"顾名思义,"享 ...

  8. mysql insert的特殊用法

    1. 正常的insert语句:插入一条数据如下:INSERT INTO `testdb`.`tb_user` (`id`, `userName`) VALUES (3, '张飞'); 2. inser ...

  9. mediakit 源码 轻微微 学习总结

    mediakit 源码 轻微微 学习总结 概要 项目地址:https://github.com/ZLMediaKit/ZLMediaKit 此项目我们把他做为一个流媒体服务器,我们会有srt和rtsp ...

  10. WebSocket魔法师:打造实时应用的无限可能

    1.背景 在开发一些前端页面的时候,总是能接收到这样的需求:如何保持页面并实现自动更新数据呢?以往的常规做法,是前端使用定时轮询后端接口,获取响应后重新渲染前端页面,这种做法虽然能达到类似的效果,但是 ...