MyBaits
持久层框架:完成数据库操作的框架,替代了JDBC的作用
MyBatis是一个 ‘半自动’ 的 ‘ orm ’ 框架
Hibrnate 是全自动框架
ORM (Object Relational Mapping)对象关系映射,将java中的一个对象与数据库表中一行的记录一一对应
ORM框架提供了实体类与数据表的映射关系,通过映射文件的配置,将对象保存到数据库表中,实现对象的持久化
- MyBatis的前身是iBatis
- 特点:
- 支持自定义sql 、存储过程
- 对原有jdbc封装,消除了所有JDBC代码、让开发者关注sql本身
- 支持xml和注解配置方式自动完成orm操作,时间结果映射
MyBaits框架使用
1、创建数据库
2、创建实体类
import lombok.Data;
@Data
public class User {
private int id;
private String username;
private String pwd;
}
3、创建接口定义方法
@Repository
public interface UserMapper {
int insertUser(@Param("u") User user);
int insertUsers(@Param("u") List<User> list);
int update(@Param("u") User user);
User selectUser(int id);
List<User> selectUsers();
User selectForLogin(User user);
}
4、创建dao接口的映射文件
- 在resources目录下,新建名为mapper的文件加在mapper中新建名为usermapper.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">
<mapper namespace="">
</mapper>
- 在映射文件中对接口中定义的方法进行实现
<?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">
<mapper namespace="com.yan.mapper.UserMapper">
<resultMap id="User" type="com.yan.bean.User">
<id property="id" column="id"></id>
<result property="username" column="account"></result>
<result property="pwd" column="pws"></result>
</resultMap>
<sql id="columns">
id as id,
account,
pws
</sql>
//单个插入
<insert id="insertUser" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
insert into tb_user(account, pwd)
value (#{u.username}, #{u.pwd})
</insert>
//批量插入
<insert id="insertUsers">
insert into
tb_user(account,pwd)
value
<foreach collection="list" item="u" open="(" close=")" separator="),(">
#{u.username},#{u.pwd}
</foreach>
</insert>
//修改
<update id="update">
update
tb_user
<set>
<if test="u.username!=null">
account = #{u.username},
</if>
<if test="u.pwd!=null">
pwd = #{u.pwd},
</if>
</set>
where id = #{u.id}
</update>
//批量查找
<select id="selectUsers" resultMap="User">
select
<include refid="columns"></include>
from tb_user
</select>
//单个查找
<select id="selectUser" resultType="com.yan.bean.User">
select *
from tb_user
where id = #{id};
</select>
<select id="selectForLogin" resultType="com.yan.bean.User">
select *
from tb_user
where account = #{account}
and pwd = #{pwd}
</select>
</mapper>
5、映射文件添加到主配置文件
<mappers>
<mapper resource="mapper/usermapper.xml"></mapper>
</mappers>
添加junit依赖
<!-- junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
测试类
package com.yan;
import com.yan.bean.User;
import com.yan.mapper.UserMapper;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class Main {
public static void main(String[] args) throws Exception {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
// User u = new User();
// u.setUsername("1234");
// u.setId(2);
UserMapper mapper = context.getBean(UserMapper.class);
List<User> list =mapper.selectUsers();
System.out.println(list);
// List<User> list = new ArrayList<>();
// for (int i = 0; i < 10; i++) {
// User u = new User();
// u.setUsername("vfsd"+i);
// u.setPwd("dfsafsa"+i);
// list.add(u);
// }
// mapper.insertUsers(list);
// mapper.update(u);
// System.out.println(u.getId());
}
// 确定配置文件位
// String resource = "mybatis-config.xml";
// 获得配置文件中的内容
// InputStream inputStream = Resources.getResourceAsStream(resource);
// 通过SqlSessionFactoryBuilder 来创建一个 SqlSessionFactory
// SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// SqlSession ss = sqlSessionFactory.openSession(true);
// UserMapper mapper = ss.getMapper(UserMapper.class);
// User u = new User();
// u.setAccount("yyy");
// u.setPwd("123456");
// mapper.insertUser(u);
// System.out.println(mapper.selectUser(1));
}