ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Mybatis实现Mapper配置

2021-04-07 13:57:51  阅读:138  来源: 互联网

标签:username Mapper demo 配置 UserMapper mybatis Mybatis Integer id


准备数据源

# 删除mybatis_demo数据库
drop database if exists mybatis_demo;

# 创建mybatis_demo数据库
create database mybatis_demo;

# 使用mybatis_demo数据库
use mybatis_demo;

# 创建account表
create table user (
    id int auto_increment primary key,
    username varchar(20),
    age int,
    score int
);

# 新增数据
insert into user (id, username, age, score) values
(1,'peter', 18, 100), (2,'pedro', 24, 200),
(3,'jerry', 28, 500), (4,'mike', 12, 300),
(5,'tom', 27, 1000);

使用注解方式配置Mapper

导入mysql驱动包和mybatis依赖

<!--MySQL数据库驱动-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.22</version>
    </dependency>

    <!--mybatis核心包-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.2</version>
    </dependency>

添加mybatis配置文件和db.properties

<?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>
	<properties resource="db.properties"/>

	<environments default="mysql">
		<!-- 1.2配置id 为mysql的数据库环境 -->
		<environment id="mysql">
			<!-- 使用jdbc事务管理 -->
			<transactionManager type="JDBC"/>
			<!-- 数据库连接池 -->
			<dataSource type="POOLED">
				<property name="driver" value="${driverClassName}"/>
				<property name="url" value="${url}"/>
				<property name="username" value="${username}"/>
				<property name="password" value="${password}"/>
			</dataSource>
		</environment>
	</environments>

	<mappers>
		<package name="com.mapper"/>
	</mappers>
</configuration>
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis_demo?characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
username=root
password=hs20010224

创建mapper接口

public interface UserMapper {
    @Select("SELECT username FROM user WHERE id = #{id}")
    String selectUsernameById(Integer id);
}

测试类

@SuppressWarnings({"Duplicates"})
public class UserTest {
    public static void main(String[] args) throws IOException {
        // 读取配置文件
        InputStream configuration = Resources.getResourceAsStream("mybatis-config.xml");
        // 得到 SqlSessionFactory 核心类
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
        // 开始一个 sql 会话
        SqlSession session = sqlSessionFactory.openSession();
        // 得到 mapper
        UserMapper mapper = session.getMapper(UserMapper.class);
        // 调用注解的SQL
        String username = mapper.selectUsernameById(1);
        System.out.println("username: " + username);
        // 关闭会话
        session.close();
    }
}

测试结果

在这里插入图片描述

使用XML方式配置Mapper

代码实现

在UserMapper接口中添加一个方法selectUserAgeById

Integer selectUserAgeById(Integer id);

在resources文件夹下创建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">
<!-- namespace表示命名空间 -->
<mapper namespace="com.mapper.UserMapper">

	<select id="selectUserAgeById" resultType="java.lang.Integer">
		SELECT age FROM user WHERE id = #{id}
	</select>

</mapper>

注意:UserMapper.xml必须和UserMapper接口放在同一包下,而且如果有多个包,则包必须一个一个创建。
select标签中id对应接口中的方法名,resultType对应接口中方法的返回值类型

测试
在测试类中添加下列方法

Integer age = mapper.selectUserAgeById(1);
System.out.println("age: " + age);

测试结果

在这里插入图片描述

resultType

代码实现

创建User实体类

@ToString
@Data
public class User {
    private Integer id;
    private String username;
    private Integer age;
    private Integer score;
}

在UserMapper接口中添加selectUserById方法

User selectUserById(Integer id);

在UserMapper.xml添加一个select标签

<select id="selectUserById" parameterType="java.lang.Integer" resultType="com.entity.User" >
		select * from user where id =#{id}
</select>

在测试类中添加测试代码

User user = mapper.selectUserById(1);
System.out.println(user);

测试结果

在这里插入图片描述

resultMap

代码实现

在UserMapper.xml添加下列代码

	<resultMap id="userMap" type="com.entity.User">
		<id property="id" column="id"/>
		<result property="username" column="username"/>
		<result property="age" column="age"/>
		<result property="score" column="score"/>
	</resultMap>

resultMap 标签的id表示resultMap 的唯一标识,type标识返回值类型;子标签中id标签表示主键,其他属性用result 标签表示,其中的property表示实体类的属性名称,column表示数据表的列名。

将selectUserById标签的返回值类型改为上面的resultMap

resultMap="userMap" 

测试结果

在这里插入图片描述

注意

MyBatis自动会帮助我们映射数据库数据和Java对象,但是如果要映射的对象比较复杂时就需要我们手动去映射。
resultMap标签通常在实体类的属性名称和数据表的列名不一致时使用

标签:username,Mapper,demo,配置,UserMapper,mybatis,Mybatis,Integer,id
来源: https://blog.csdn.net/weixin_45402151/article/details/115483026

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有