一.什么是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. CCF PTA&中国科教工作者协会联合认证

    首页 项目简介 条例规定 通知公告 组织机构 服务中心 联系我们 登录|注册 当前位置:首页 > 新闻动态 开放报名:CCF PTA&中国科教工作者协会联合认证 发布时间: 2023-0 ...

  2. Solr Shiro Log4j2 命令执行--文件读取--反序列化--身份权限绕过--命令执行

    Solr Shiro Log4j2 命令执行--文件读取--反序列化--身份权限绕过--命令执行 solr 远程命令执行 (CVE-2019-17558) 漏洞简介 Apache Velocity是一 ...

  3. Batch Normalization 批量归一化的运算过程

    Batch Normalization 批量归一化 具体的运算过程: 假设经过卷积计算过后得到的feature map的尺寸为 2*3*2*2. 其中2代表的是batch的大小,3代表的是通道chan ...

  4. JNI编程之java层和native层的数组数据的交互

    一.前言 JNI中的数组类型分为基本类型数组和引用类型数组,他们的处理方式是不一样的.基本类型数组中的元素都是jni基本数据类型,可以直接访问:但是引用类型的数组中的元素是一个类的实例,不能直接访问, ...

  5. 前端脚手架CLI生成模版命令工具(包括,npm包的发布,脚手架的搭建,注意事项,优化等)

    写在前面 这是停更以后,续更的一篇文章. 为什么好长时间都没有更新,因为去其他平台更新了,包括掘金,思否,简书等. 在那些地方感觉没有归属感,有的平台原创审核很麻烦,简书号称可以获得打赏,可是码了几十 ...

  6. 美团面试:Redis 除了缓存还能做什么?可以做消息队列吗?

    这是一道面试中常见的 Redis 基础面试题,主要考察求职者对于 Redis 应用场景的了解. 即使不准备面试也建议看看,实际开发中也能够用到. 内容概览: Redis 除了做缓存,还能做什么? 分布 ...

  7. 最小生成树(Kruskal Prim)

    最小生成树 (克鲁斯卡尔算法) Kruskal 给定一个n个点m条边的无向图,图中可能存在重边和自环,边权可能为负数. 求最小生成树的树边权重之和,如果最小生成树不存在则输出impossible. 给 ...

  8. echarts官网文档打开慢的解决方法

    echarts官网文档打开慢的解决方法由于我们在做大数据屏的时候需要很多echarts图表,这个过程中也会遇到需要查询echarts官网文档.手册.配置项的时候,但是由于网站在国外,访问很慢或者打不开 ...

  9. 制作交互式页面动画 | animate+javaweb

    目前是做得这样的作业,有想法改一改.

  10. serdes 复制时钟

    serdes复制时钟一般指的是,将rx lane的CDR 恢复时钟发送给TX/PLL, 这样rx和tx的时钟频偏就一致,在远端环回时经常用到.RX,TX时钟同频后环回数据就可以畅通发出去,否则RX/T ...