一、mybatis
先解决三个问题后开始code
1、什么是 mybatis
- mybatis是一个持久层ORM框架。它内部封装了jdbc,使得开发更简洁,更高效。
- Mybatis使开发者只需要关注sql语句本身,简化JDBC操作,不需要在关注加载驱动、创建连接、处理SQL语句等繁杂的过程。
- MyBatis可以通过xml或注解完成ORM映射关系配置。
2、Mybatis和JDBC的关系?
JDBC是Java提供的一个操作数据库的API; MyBatis是一个持久层ORM框架,底层是对JDBC的封装。
MyBatis对JDBC操作数据库做了一系列的优化:
- mybatis使用已有的连接池管理,避免浪费资源,提高程序可靠性。
- mybatis提供插件自动生成DAO层代码,提高编码效率和准确性。
- mybatis 提供了一级和二级缓存,提高了程序性能。
- mybatis使用动态SQL语句,提高了SQL维护。(此优势是基于XML配置)
- mybatis对数据库操作结果进行自动映射
3、什么是ORM?
ORM的全称是Object Relational Mapping,即对象关系映射。描述的是对象和数据库之间的映射。操作Java对象,通过映射关系,就可以自动操作数据库。
在ORM关系中,数据库表对应Java中的类,一条记录对应一个对象,一个属性对应一个列。
常见的ORM框架:Mybatis、Hibernate
二、mybatis code
0.结构
1.数据库准备一张查询的表
2.导入jar 配置文件
两种都可以开启驼峰映射,选一个就行
mybatis.configuration.map-underscore-to-camel-case=true
mybatis.configuration.mapUnderscoreToCamelCase=true
yml语法
# 开启驼峰映射
mybatis:
configuration:
mapUnderscoreToCamelCase: true
<!-- mybatis启动器 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
SqlMapConfig.xml 可以自己命名 下文读取
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 驼峰命名 -->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<!-- 配置环境,连接需要的基本参数 -->
<environments default="development">
<environment id="development">
<!-- 使用jdbc管理事务 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源(配置连接) -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/shop"/>
<property name="username" value="root"/>
<property name="password" value="123"/>
</dataSource>
</environment>
</environments>
想看更多配置的看这篇博主的文章
---------------------
作者:iOverdosed
来源:CSDN
原文:https://blog.csdn.net/iOverdosed/article/details/82082500
3.创建domain(略)
4.dao
package com.czxy.dao;
import com.czxy.domain.User;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* @Author ZhangLe
* @Date 2019/1/16 17:41
*/
public interface UserMapper {
/**
* 查询所有
* @return
*/
@Select("select * from tb_user")
public List<User> selectAll();
/**
* 模糊查询 按名称
* @param name
* @return
*/
@Select("select * from tb_user where name like #{value}")
public List<User> selectByName(String name);
/**
* 插入用户
* @param user
*/
@Insert("insert into tb_user(name,mobile,password) values(#{name},#{mobile},#{password})")
public void insert(User user);
/**
* 删除数据
* @param uid
*/
@Delete("delete from tb_user where uid = #{uid}")
public void deleteByPrimaryKey(@Param("uid") Integer uid);
/**
* 更新
* @param user
*/
@Update("update tb_user set name=#{name}, mobile=#{mobile},password=#{password} where id=#{id}")
public void updateByPrimaryKey (User user);
}
5.Service
package com.czxy.service;
import com.czxy.dao.UserMapper;
import com.czxy.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 java.io.IOException;
import java.io.InputStream;
import java.util.List;
/**
* @Author ZhangLe
* @Date 2019/1/16 17:40
*/
public class demo2 {
public static void main(String[] args) throws IOException {
//1 加载配置文件
// 1.1 获得资源流
InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
// 1.2 获得工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
//2 获得会话(连接)
SqlSession session = factory.openSession();
//3获得功能接口
UserMapper userMapper = session.getMapper(UserMapper.class);
//4 调用功能
List<User> userList = userMapper.selectAll();
for (User user : userList) {
System.out.println(user);
}
//5 如果是删改查,则需要再加入提交动作
session.commit();
//6关闭session
session.close();
}
}
6.结果
注:想看日志的导入log4j jar包即可
想扩展功能的童鞋可以参考自己以前代码(通用mapper),原理一样
祝你幸福
送你一首歌:《Take Me To Your Heart》Michael Learns To Rock
附图:景德镇陶瓷博物馆