一.什么是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. android 尺寸适配相关

    Android上常见度量单位 px(像素):屏幕上的点,绝对长度,与硬件相关. in(英寸):长度单位. mm(毫米):长度单位. pt(磅):1/72英寸,point. dp(与密度无关的像素):一 ...

  2. mooc第五单元《管理组织》单元测试

    第五单元<管理组织>单元测试     返回 本次得分为:30.00/50.00, 本次测试的提交时间为:2020-08-30, 如果你认为本次测试成绩不理想,你可以选择 再做一次 . 1 ...

  3. torch.nn.ReLU(inplace=True)的具体含义:

    首先根据源文档中的ReLU(x)=max(0,x),得出结论.大于0的数值不变,小于0的数据变成0. 补充:这里需要注意的是 ReLU并没有限制数据的大小. 这是对应的文档链接:https://pyt ...

  4. Java 魔法值处理的四种方法

    Java 魔法值处理方案 魔法值的定义 方法一 静态常量(不推荐) 方法二 接口中定义 方法三 定义在实体类 方法四 使用枚举类 enum 总结 魔法值的定义 魔法值是Java中突兀出现在代码中的常量 ...

  5. QT(6)-QStandardItemModel

    @ 目录 1 说明 2 函数 2.1 构造函数 2.2 追加列\行 2.3 清除.删除并返回指定行或列 2.4 查找 2.5 设置水平\垂直表头项目 2.6 获得模型索引 2.7 插入 2.8 根项目 ...

  6. 资源迁移OSS方案记录

    视频资源迁移到OSS服务器上,记录一下迁移过程. 搭建流程 在阿里云上购买oss,并获取具有该Bucket访问权限的AccessKey ID和AccessKey Secret信息. 数据迁移方案一 第 ...

  7. .Net Core 3.1升级 .Net 5后出现代码错误 rzc generate exited with code 1.

    安装.Net 5后出现错误,错误定位到了CodeGeneration相关的文件,找了半天也不知道哪里的问题. 升级类库,清理解决方案,删除obj.bin文件夹什么的卵用没有. 最后发现升级.Net 5 ...

  8. Netty源码学习7——netty是如何发送数据的

    零丶引入 系列文章目录和关于我 经过<Netty源码学习4--服务端是处理新连接的&netty的reactor模式和<Netty源码学习5--服务端是如何读取数据的>,我们了 ...

  9. 马云说的AI电商时代是什么

    这两天非常火的就是马老师说的,我们已经进入了AI的电商时代.相信电商时代大家很容易理解,换一个简单的方式来说就是网上购物. AI相信大家已经很熟悉了,就是人工智能.早在十年前其实已经有AI人工智能的概 ...

  10. [cnn][julia]Flux实现卷积神经网络cnn预测手写MNIST

    julia_Flux 1.导入Flux.jl和其他所需工具包 using Flux, MLDatasets, Statistics using Flux: onehotbatch, onecold, ...