MyBatis(五):MyBatis简介及基本使用
-
MyBatist简介
MyBatis是一款优秀的基于ORM的半自动轻量级持久层框架,它支持定制化SQL、存储过程以及高级映
射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的
XML或注解来配置和映射原生类型、接口和Java的POJO (Plain Old Java Objects,普通老式Java对 象)
为数据库中的记录。
-
MyBatis的优点
半自动化的持久层框架,对开发人员开说,核心sql还是需要自己进行优化,sql和java编码进行分离,功能边界清晰,一个专注业务,一个专注数据。
-
MyBatis基本使用
-
引入依赖
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.23</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.6</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.1</version> </dependency>
-
编写实体类
package com.rangers.entity; /** * @Author Rangers * @Description * @Date 2021-03-04 **/ public class User { private int id; private String name; private String address; @Override public String toString() { return "com.rangers.entity.User{" + "id=" + id + ", name='" + name + '\'' + ", address='" + address + '\'' + '}'; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }
-
编写核心配置文件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> <environments default="dev"> <environment id="dev"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="com.mysql.cj.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/mybatis"></property> <property name="username" value="root"></property> <property name="password" value="111222"></property> </dataSource> </environment> </environments> <mappers> <mapper resource="UserMapper.xml"></mapper> </mappers> </configuration>
-
编写接口方法类及映射文件XxMapper.xml
package com.rangers.dao; import com.rangers.entity.User; import java.util.List; /** * @Author Rangers * @Description * @Date 2021-03-10 **/ public interface IUserDao { List<User> findAll(); User findOne(User user); int insertUser(User user); int updateUser(User user); int deleteUser(User user); }
<?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.rangers.dao.IUserDao"> <select id="findAll" resultType="com.rangers.entity.User"> select * from user </select> <select id="findOne" resultType="com.rangers.entity.User"> select * from user where id=#{id} </select> <insert id="insertUser" parameterType="com.rangers.entity.User"> insert into user(id,name,address) values(#{id},#{name},#{address}) </insert> <update id="updateUser" parameterType="com.rangers.entity.User"> update user set name=#{name},address=#{address} where id=#{id} </update> <delete id="deleteUser" parameterType="com.rangers.entity.User"> delete from user where id = #{id} </delete> </mapper>
-
编写测试类
package com.rangers;
import com.rangers.dao.IUserDao;
import com.rangers.entity.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 java.io.IOException;
import java.io.InputStream;
import java.util.List;
/**
* @Author Rangers
* @Description
* @Date 2021-03-10
**/
public class Test {
private IUserDao userDao;
SqlSession sqlSession ;
@Before
public void before() throws IOException {
InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
sqlSession = sqlSessionFactory.openSession();
userDao = sqlSession.getMapper(IUserDao.class);
}
@org.junit.Test
public void testFindAll(){
List<User> users = userDao.findAll();
System.out.println(users);
}
@org.junit.Test
public void testFindOne(){
User param = new User();
param.setId(1);
User user = userDao.findOne(param);
System.out.println(user);
}
@org.junit.Test
public void testInsert(){
User param = new User();
param.setId(3);
param.setName("bug");
param.setAddress("北京");
boolean flag = userDao.insertUser(param)>0;
System.out.println("新增结果:"+flag);
}
@org.junit.Test
public void testUpdate(){
User param = new User();
param.setId(3);
param.setName("虫子");
param.setAddress("北京");
boolean flag = userDao.updateUser(param)>0;
System.out.println("修改结果:"+flag);
}
@org.junit.Test
public void testDelete(){
User param = new User();
param.setId(3);
boolean flag = userDao.deleteUser(param)>0;
System.out.println("删除结果:"+flag);
}
@After
public void close(){
System.out.println("关闭连接");
// 提交事务
sqlSession.commit();
// 关闭连接
sqlSession.close();
}
}