Mybatis基础(附:利用Mybatis实现增删改查的一种简单方式)

Mybatis

一、介绍

Mybatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。Mybatis消除了几乎所有的jdbc代码和参数的手工设置以及对结果集的检索封装。Mybatis可以使用简单的xml或注解用于配置和原始映射。将接口的pojo(plain old java objects,实体类,普通的java对象)映射成数据库中的记录。

持久层:把Java对象保存到数据库的过程就是持久层 dao层mybatis半自动化框架,必须写SQL语句

JDBC->dbutils->MyBatis->Hibernate

二、mybatis快速入门

编写一个基于Mybatis的测试例子(增删改查):

  • 步骤:
    • 1.导入 mybatis.jar包

      【mybatis】
      mybatis-3.1.1.jar
      【MYSQL 驱动包】
      mysql-connector-java-5.1.7-bin.jar
      
    • 2.添加mybatis的配置文件mybatis-conf.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="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" />
      <property name="username" value="root" />
      <property name="password" value="root" />
      </dataSource>
      </environment>
      </environments>
      </configuration>
      
    • 3.定义表所对应的实体类

      public class User {
          private int id;
          private String name;
          private int age;
      }
      
    • 4.定义操作user表的sql映射文件UserMapper.xml

      <mapper namespace="dong">
          <!--
              resultType:实体类的全局路径
          -->
          <select id="getUser" parameterType="int" resultType="com.hong.entity.User">
               select * from users where id=#{id}
          </select>
      
          <insert id="insertUser" >
              insert into users(name,age) values(#{name},#{age})
          </insert>
      
          <delete id="deleteUser">
              delete from users where id=#{id}
          </delete>
      
          <update id="updateUser">
              update users set name=#{name } where id=#{id}
          </update>
      
    • 5.在mybatis-conf.xml文件中注册userMapper.xml

      <mappers>
              <!--映射文件的路径-->
              <mapper resource="mapper/UserMapper"></mapper>
          </mappers>
      
    • 6.编写测试代码:执行定义的select语句

      //1. 读取配置文件
              Reader reader = Resources.getResourceAsReader("mybatis-config");
              //2. 构建Session工厂
              SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
              //3. 创建能执行映射文件中的sql的sqlSession
              SqlSession sqlSession = sqlSessionFactory.openSession();
              //4.执行sql
              //查询
              /*User user = sqlSession.selectOne("dong.getUser", 1);
              System.out.println(user);*/
              //新增
              /*int insert = sqlSession.insert("dong.insertUser", new User(4, "丁丁", 18));
              //事务提交
              sqlSession.commit();
              System.out.println("a!!!!!!!!!!");*/
              //删除
              /*int delete = sqlSession.delete("dong.deleteUser", 4);
              sqlSession.commit();
              System.out.println("a~~~~~~~~~~`");*/
              //修改
              int jhon = sqlSession.update("dong.updateUser", new User(2, "Jhon", 11));
              sqlSession.commit();
              System.out.println("a~~~~~~~~~~~~~~``");
      

三、操作user表的crud

3.1 XML的实现

  1. 定义SQL映射xml文件:
<insert id="insertUser" parameterType="com.hong.entity.User">
insert into user(name, age) values(#{name}, #{age});
</insert>
<delete id="deleteUser" parameterType="int">
delete from user where id=#{id}
</delete>
<update id="updateUser" parameterType="com.hong.entity.User">
update user set name=#{name},age=#{age} where id=#{id}
</update>
<select id="getOneUser" parameterType="int" resultType="com.hong.entity.User">
select * from user where id=#{id}
</select>
<select id="getAllUser" resultType="com.hong.entity.User">
select * from user
</select>
  1. 在mybatis-config.xml中注册这个映射文件
<mappers>
	<mapper resource="com/hong/mybatis_test/test1/UserMapper.xml"/>
</mappers>

四、实际开发的模式

接口结合映射文件一起用

1.创建一个接口

public interface UserDao {
    /**
     * 查询所有的用户信息
     */
    public List<User> getAllUser();

    /**
     * 根据id查询用户信息
     */
    //@Param:表示把该参数的名称作为映射文件的参数名
    public Users getByNameAndAge(int id);
}

接口中写出要写的方法

2. 创建映射文件

<?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必须和接口的全路径匹配-->
<mapper namespace="com.hong.dao.UserDao">

    <!--
		id 名称必须和接口中的方法名一致
		查询语句中的resultType必须写
	-->
    <select id="getAllUser"  resultType="com.hong.entity.User">
         select * from users
    </select>
    
    <select id="getByNameAndAge" resultType="com.hong.entity.User">
         select * from users where id=#{id}
    </select>
</mapper>

猜你喜欢

转载自blog.csdn.net/qq_54605990/article/details/115017460
今日推荐