Mybatis环境搭建及第一个demo

    技术2024-10-25  26

    环境需要: jdk8+ MySQL 5.7.19 maven 3.6.1 首先先了解下什么是Mybatis框架: Mybatis是一个持久层框架,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程; 可以使用简单的 XML 或注解来配置和映射原生信息;将接口和 Java 的 实体类 【Plain Old Java Objects,普通的 Java对象】映射成数据库中的记录。 持久化:将程序数据在持久状态和瞬时状态间转换的机制,即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、XML数据文件中等等。 持久层:完成持久化工作的代码块 . ----> dao层 【DAO (Data Access Object) 数据访问对象】

    环境搭建及demo: 1.导入Mybatis相关的jar包(在pom.xml文件中导入依赖)

    <!--Mybatis--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.2</version> </dependency> <!--Mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency>

    2.按照官方文档编写核心配置文件 在src/mian/resource下新建mybatis-config.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="logImpl" value="STDOUT_LOGGING"/> </settings> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="1234"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/kuang/dao/UserMapper.xml"/> </mappers> </configuration>

    3.编写Mybatis工具类 在src/main/java/com/hj/utils下编写工具类MybatisUtils.class

    MybatisUtils.class //sqlSessionFactory --->sqlSession public class MybatisUtils { private static SqlSessionFactory sqlSessionFactory; static{ InputStream inputStream = null; try { //使用Mybatis第一步:获取sqlSessionFactory对象 String resource = "mybatis-config.xml"; inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } public static SqlSession getSqlSession(){ return sqlSessionFactory.openSession(); } }

    5.创建实体类 在src/main/java/com/hj/pojo下编写实体类User.class。可以在IDEA中导入lombok插件,通过@Data注解自动生成实体类的构造器方法等。

    User.class public class User { private int id; private String name; private String pwd; public User() { } public User(int id, String name, String pwd) { this.id = id; this.name = name; this.pwd = pwd; } 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 getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } }

    6.编写Mapper接口 在src/main/java/com/hj/dao下编写UseMapper接口

    package com.hj.dao; import com.hj.pojo.User; import java.util.List; public interface UserMapper { //查询全部用户 List<User> getUserList(); //根据ID查询用户 User getUserById(int id); //insert一个用户 int addUser(User user); //修改用户 int updateUser(User user); //删除一个用户 int deletUser(int id); }

    7.编写Mapper.xml配置文件在这个里面,通过namespace绑定接口,然后写编写sql语句

    <?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.hj.dao.UserMapper"> <select id="getUserList" resultType="com.hj.pojo.User"> select * from mybatis.user </select> <select id="getUserId" parameterType="int" resultType="com.hj.pojo.User"> select * from user where id= #{id} </select> <!--对象中的属性可以直接取出来--> <insert id="addUser" parameterType="com.hj.pojo.User" > insert into mybatis.user(id,name ,pwd) values(#{id},#{name},#{pwd}); </insert> <update id="updateUser" parameterType="com.hj.pojo.User" > <!--sql语句中填的参数需要和User中定义的一样--> update mybatis.user set name=#{name},pwd #{pwd} = where id = #{id}; </update> <delete id="deleteUser" parameterType="int"> delete from mybatis.user where id =#{id}; </delete> </mapper>

    8.测试类。Junit包测试 在src/main/java/com/hj/dao下编写UseMapperTest测试类

    @Test public void test(){ //第一步:获取sqlsession对象 SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); List<User> userList = mapper.getUserList(); for (User user : userList) { System.out.println(user); } //关闭sqlSession sqlSession.close(); }

    工程目录如下图: Mybatis的具体执行思路是:首先先配置好环境以及编写好Mybatis.xml配置文件和实体类,接口,xml文件(里面编写执行的sql语句)。然后通过测试类进行测试的步骤是: 1.先获取sqlSession对象 SqlSession sqlSession = MybatisUtils.getSqlSession(); 2.获取mapper对象(通过反射实现) UserMapper mapper = sqlSession.getMapper(UserMapper.class); 3.相应的业务代码 List userList = mapper.getUserList(); 4.最后一步是:关闭sqlSession sqlSession.close();

    Processed: 0.011, SQL: 9