一、配置环境
安装JDK
安装之前一定要卸载旧版本的JDK7,安装的话建议直接安装在C盘
配置环境变量
此电脑---->属性----->高级系统设置------>环境变量设置----->配置系统变量
C:\Program Files\Java\jdk1.8.0_181


安装Mysql
Mysql下载地址:https://dev.mysql.com/downloads/installer/
安装完之后记得安装荷叶,而且必须破解(有意私聊)
安装IDEA
安装完必须破解否则只能试用(有意私聊)


安装插件之后记得重启IDEA
使用Maven
Maven官网:https://maven.apache.org/
找到apache-maven-3.5.4\conf的目录,配置settings.xml文件
重点配置两个东西
1.配置本地仓库(存在以后下载的jar包的位置)

2.配置远程仓库(下载jar包默认是访问国外的网站,速度极慢,可能会下载失败),配置国内镜像

使用IDEA关联Maven


新项目设置maven

Maven的配置和上面一样
使用IDEA关联JDK



二、初识Mybatis
什么是MyBatis
MyBatis是一个半自动的ORM(Object Relation Mapping对象关系映射)持久层框架,底层其实就是封装了JDBC,简化了对数据库的操作
MyBatis的使用
创建项目


添加Maven依赖
Maven仓库网址:https://mvnrepository.com/
添加依赖坐标:

创建数据库以及开发包
建库建表语句
DROP TABLE IF EXISTS user;
CREATE TABLE user
(
id BIGINT(20) NOT NULL COMMENT '主键ID',
name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
age INT(11) NULL DEFAULT NULL COMMENT '年龄',
email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (id)
);
DELETE FROM user;
INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');
实体类
package com.changan.entity;
import lombok.Data;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private Integer id;
private String name;
private Integer age;
private String email;
}
Dao层
UserDao
package com.changan.dao;
import com.changan.entity.User;
import java.util.List;
public interface UserDao {
/**
* 查询所有的学生信息
* @return
*/
List<User> findUsers();
/**
* 添加用户信息
* @param user
* @return
*/
int addUser(User user);
/**
* 根据id删除用户信息
* @param id
* @return
*/
int deleteUser(Long id);
/**
* 更新用户
* @param user
* @return
*/
int updateUser(User user);
}
配置Mybatis的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>
<typeAliases>
<package name="com.changan.entity"></package>
</typeAliases>
<!--多套开发环境-->
<environments default="development">
<!--开发环境-->
<environment id="development">
<!--事务管理器 默认使用JDBC进行事务管理-->
<transactionManager type="JDBC"/>
<!--数据源配置-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF-8&useUnicode=true&serverTimezone=GMT%2B8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--对应的mybatis的xml文件-->
<mapper resource="mapper/UserDao.xml"/>
</mappers>
</configuration>
SQL映射文件
UserDao.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">
<!--
根据namespace查找对应创建dao接口
根据方法名称查找对应的sql语句
-->
<mapper namespace="com.changan.dao.UserDao">
<!--
每一种sql语句对应每一种标签
resultType 返回值类型
-->
<select id="findUsers" resultType="User">
select * from user
</select>
<!--
id对应方法名称
parameterType 参数类型
-->
<insert id="addUser" parameterType="user">
INSERT INTO `mybatis`.`user`(`id`, `name`, `age`, `email`) VALUES (null, #{name}, #{age}, #{email});
</insert>
<delete id="deleteUser">
delete from `USER` where id=#{id}
</delete>
<update id="updateUser">
UPDATE `mybatis`.`user` SET `name` = #{name}, `age` = #{age}, `email` = #{email} WHERE `id` = 7;
</update>
</mapper>
测试
MyBatisUtil
package com.changan.utils;
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;
public class MyBaitsUtil {
static SqlSession sqlSession = null;
/**
* 获取SqlSession
* @return SqlSession对象
*/
public static SqlSession getSqlSession(){
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
sqlSession = sqlSessionFactory.openSession();
return sqlSession;
}
/**
* 关闭SqlSession
*/
public static void closeSqlSession(SqlSession sqlSession){
if(sqlSession!=null){
sqlSession.close();
}
}
}
UserTest
package com.changan.test;
import com.changan.dao.UserDao;
import com.changan.entity.User;
import com.changan.utils.MyBaitsUtil;
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.Test;
import javax.annotation.Resource;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class UserTest {
@Test
public void testFind() {
SqlSession sqlSession = MyBaitsUtil.getSqlSession();
try {
List<User> users = sqlSession.selectList("com.changan.dao.UserDao.findUsers");
for (User user : users
) {
System.out.println(user.toString());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
//每次用完记得关闭连接对象
MyBaitsUtil.closeSqlSession(sqlSession);
}
}
@Test
public void testSelect() {
/*ctrl+alt+L 代码对齐*/
SqlSession sqlSession = MyBaitsUtil.getSqlSession();
try {
UserDao userDao = sqlSession.getMapper(UserDao.class);
List<User> users = userDao.findUsers();
//jdk8中提供的箭头函数
users.forEach(user -> {
System.out.println(user.toString());
});
} catch (Exception e) {
e.printStackTrace();
} finally {
MyBaitsUtil.closeSqlSession(sqlSession);
}
}
@Test
public void testInsert() {
SqlSession sqlSession = MyBaitsUtil.getSqlSession();
try {
//mybatis是支持事务的 默认是不开启事务的
UserDao userDao = sqlSession.getMapper(UserDao.class);
User user = new User();
user.setName("luoya");
user.setAge(18);
user.setEmail("3838438@qq.com");
//仅仅是在内存中增加了一个用户
int i = userDao.addUser(user);
//手动提交事务
sqlSession.commit();
System.out.println(i);
} catch (Exception e) {
e.printStackTrace();
} finally {
MyBaitsUtil.closeSqlSession(sqlSession);
}
}
@Test
public void deleteUser() {
SqlSession sqlSession = MyBaitsUtil.getSqlSession();
try {
//mybatis是支持事务的 默认是不开启事务的
UserDao userDao = sqlSession.getMapper(UserDao.class);
//仅仅是在内存中增加了一个用户
int i = userDao.deleteUser(5L);
//手动提交事务
sqlSession.commit();
System.out.println(i);
} catch (Exception e) {
e.printStackTrace();
} finally {
MyBaitsUtil.closeSqlSession(sqlSession);
}
}
@Test
public void testupdate() {
SqlSession sqlSession = MyBaitsUtil.getSqlSession();
try {
//mybatis是支持事务的 默认是不开启事务的
UserDao userDao = sqlSession.getMapper(UserDao.class);
User user = new User();
user.setName("ange");
user.setAge(38);
user.setEmail("1351261434@qq.com");
//仅仅是在内存中增加了一个用户
int i = userDao.updateUser(user);
//手动提交事务
sqlSession.commit();
System.out.println(i);
} catch (Exception e) {
e.printStackTrace();
} finally {
MyBaitsUtil.closeSqlSession(sqlSession);
}
}
总结
步骤
1、创建项目
2、新建数据库和开发包
3、导入maven坐标
4、配置mybatis-config文件
5、编写实体类
6、编写dao接口
7、编写dao.xml文件
8、编写MyBaitsUtil文件
9、编写测试类
三、sql映射文件
增删改查操作
select
配置日志打印
<settings>
<setting name="cacheEnabled" value="true" />
<setting name="useGeneratedKeys" value="true" />
<setting name="defaultExecutorType" value="REUSE" />
<setting name="logImpl" value="STDOUT_LOGGING" />
</settings>

无条件查询查询
/**
* 查询所有用户
*/
List<User> findUsers();
<select id="findUsers" resultType="User">
select * from smbms_user
</select>
有多个参数的时候
1.可以通过@Param进行参数传递
/**
* 根据用户名称和用户角色进行查询
* 多个参数的时候一定要加上@Param才能实现查询,不然会报错
* @return
*/
List<User> findByUserNameAndUserRole(@Param("userName") String userName,@Param("userRole") Integer userRole);
<select id="findByUserNameAndUserRole" resultType="User">
select * from smbms_user where userName like concat("%",#{userName},"%")
and userRole=#{userRole}
</select>
2.也可以封装成User对象进行参数传递
/**
* 根据用户名称和用户角色进行查询
* @return
*/
List<User> findByUserNameAndUserRole1(User user);
<select id="findByUserNameAndUserRole1" resultType="User" parameterType="User">
select * from smbms_user where userName like concat("%",#{username},"%")
and userRole=#{userrole}
</select>
可以封装成Map进行参数传递
/**
* 根据用户名称和用户角色进行查询
* @return
*/
List<User> findByUserNameAndUserRole2(Map<String,Object> map);
<select id="findByUserNameAndUserRole2" resultType="User">
select * from smbms_user where userName like concat("%",#{username},"%")
and userRole=#{userrole}
</select>
最后再提一句:跟着官网学习不迷路
36万+

被折叠的 条评论
为什么被折叠?



