mybatis 简单快速入门

一、mybatis 简单搭建运用,以查询为例

1、项目,导入依赖

<!-- mybatis坐标 -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.5</version>
</dependency>
<!-- mysql驱动坐标 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.21</version>
    <scope>runtime</scope>
</dependency>
<!-- 单元测试坐标 -->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>
<!-- 日志坐标 -->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.13.3</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.30</version>
</dependency>

2、数据库,创建数据表,user

在这里插入图片描述

3、代码,编写 java 实体类 User

public class User {
    private int id;
    private String username; 
    private String password; 
    //省略get/set方法
}

4、编写 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="userMapper">
    <select id="findAll" resultType="com.lagou.domain.User">
        select * from User
    </select>
</mapper>

5、编写 MyBatis 核心配置文件,SqlMapConfig.xml

<!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:///test"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!-- mapper.xml配置 -->
        <mapper resource="com/lagou/mapper/UserMapper.xml"/>
        <!-- 扫描使用注解的类 -->
        <mapper class="com.lagou.mapper.UserMapper"></mapper>
        <!-- 扫描使用注解的类所在的包 -->
        <package name="com.lagou.mapper"></package>
    </mappers>
</configuration>

6、编写测试代码

//加载核心配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml"); 
//获得sqlSession工厂对象
SqlSessionFactory sqlSessionFactory = new
                           SqlSessionFactoryBuilder().build(resourceAsStream);
//获得sqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession(); 
//执行sql语句
List<User> userList = sqlSession.selectList("userMapper.findAll"); 
//打印结果
System.out.println(userList);
//释放资源
sqlSession.close();

7、代理开发方式(Mapper 接口开发)

1)mapper 接口开发,UserMapper

Mapper 接口开发需要遵循以下规范:

  1. Mapper.xml 文件中的 namespace 与 mapper 接口的全限定名相同;
  2. Mapper 接口方法名和 Mapper.xml 中定义的每个 statement 的 id 相同;
  3. Mapper 接口方法的输入参数类型和 mapper.xml 中定义的每个 sql 的 parameterType 的类型相同;
  4. Mapper 接口方法的输出参数类型和 mapper.xml 中定义的每个 sql 的 resultType 的类型相同;

编写 UserMapper 接口:

pulic interface UserMapper {
    User findById(int id);
}

相应的 mapper 配置:

<mapper namespace="com.lagou.mapper.UserMapper">
    <select id="findById" parameterType="int" resultType="user">
        select * from User where id=#{id}
    </select>
</mapper>

在这里插入图片描述

2)测试代理方式

@Test
public void testProxyDao() throws IOException {
    InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); 
    SqlSession sqlSession = sqlSessionFactory.openSession(); 
    // 获得MyBatis框架生成的UserMapper接口的实现类
    UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    User user = userMapper.findById(1);
    System.out.println(user);
    sqlSession.close();
}

8、注解开发方式

注解用于替代 mapper 配置。

1)注解代码 Mapper 接口:

pulic interface UserMapper {
    @Select("select * from User where id=#{id}")
    User findById(int id);
}

2)测试代码与上方代理接口代码相同,略。

二、mybatis 的其他增删改的搭建运用

项目导入依赖,数据库创建数据表,代码实体类,配置 myBatis 核心文件等都与上方查询相同。

1、mybatis 插入 insert 搭建运用

1)编写 mapper 接口,UserMapper

public interface UserMapper {
    int insertUser(User user);
}

2)插入 mapper 映射文件

<mapper namespace="com.lagou.mapper.UserMapper">
    <insert id="insertUser" parameterType="com.lagou.domain.User">
        insert into user values(#{id},#{username},#{password})
    </insert>
</mapper>

3)或者不用 mapper 映射文件,在 mapper 接口方法上,用注解标注

public interface UserMapper {
    @Insert("insert into user values (#{id},#{username},#{password})")
    int insertUser(User user);
}

4)测试插入代码

InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
int insert = userMapper.insertUser(user);
System.out.println(insert);
//提交事务
sqlSession.commit();
sqlSession.close();

5)插入数据注意要点

  • 插入语句使用 insert 标签;
  • 在映射文件中使用 parameterType 属性指定要插入的数据类型;
  • Sql 语句中使用 #{实体属性名} 方式引用实体中的属性值;
  • 插入操作使用的 API 是 sqlSession.insert(“命名空间.id”,实体对象);
  • 插入操作涉及数据库数据变化,所以要使用 sqlSession 对象显示的提交事务,即 sqlSession.commit();

2、mybatis 更新 update 搭建运用

1)编写 mapper 接口,UserMapper

public interface UserMapper {
    int updateMapper(User user);
}

2)修改更新 mapper 映射文件

<mapper namespace="com.lagou.mapper.UserMapper">
    <update id="updateMapper" parameterType="com.lagou.domain.User">
        update user set username=#{username},password=#{password} where id=#{id}
    </update>
</mapper>

3)mybatis 注解,mapper 接口代码

public interface UserMapper {
    @Update("update user set username=#{username},password=#{password} where id=#{id}")
    int updateMapper(User user);
}

4)测试修改更新代码

InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
int update = userMapper.updateMapper(user);
System.out.println(update);
sqlSession.commit();
sqlSession.close();

5)修改数据注意要点

  • 修改语句使用 update 标签;
  • 修改操作使用的 API 是 sqlSession.update(“命名空间.id”,实体对象);

3、mybatis 删除 delete 搭建运用

1)编写 mapper 接口,UserMapper

public interface UserMapper {
    int deleteById(int id);
}

2)删除 mapper 映射文件

<mapper namespace="com.lagou.mapper.UserMapper">
    <delete id="deleteById" parameterType="java.lang.Integer">
        delete from user where id=#{id}
    </delete>
</mapper>

3)mybatis 注解,mapper 接口代码

public interface UserMapper {
    @Delete("delete from user where id=#{id}")
    int deleteById(int id);
}

4)测试删除代码

InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
int delete = userMapper.deleteById(3);
System.out.println(delete);
sqlSession.commit();
sqlSession.close();

5)删除数据注意要点

  • 删除语句使用 delete 标签;
  • Sql 语句中使用 #{任意字符串} 方式引用传递的单个参数;
  • 删除操作使用的 API 是 sqlSession.delete(“命名空间.id”,Object);

文章内容输出来源:拉勾教育Java高薪训练营

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jason559

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值