pojo类:
-
- /**
- * 和数据库表 t_user 对应的实体类
- */
- public class User {
- private Integer id;
- private String username;
- private String password;
- private Integer age;
- private String gender;
- private String email;
-
- public User() {
- }
-
- public User(Integer id, String username, String password, Integer age, String gender, String email) {
- this.id = id;
- this.username = username;
- this.password = password;
- this.age = age;
- this.gender = gender;
- this.email = email;
- }
-
- public Integer getId() {
- return id;
- }
-
- public void setId(Integer id) {
- this.id = id;
- }
-
- public String getUsername() {
- return username;
- }
-
- public void setUsername(String username) {
- this.username = username;
- }
-
- public String getPassword() {
- return password;
- }
-
- public void setPassword(String password) {
- this.password = password;
- }
-
- public Integer getAge() {
- return age;
- }
-
- public void setAge(Integer age) {
- this.age = age;
- }
-
- public String getGender() {
- return gender;
- }
-
- public void setGender(String gender) {
- this.gender = gender;
- }
-
- public String getEmail() {
- return email;
- }
-
- public void setEmail(String email) {
- this.email = email;
- }
-
- @Override
- public String toString() {
- return "User{" +
- "id=" + id +
- ", username='" + username + '\'' +
- ", password='" + password + '\'' +
- ", age=" + age +
- ", gender='" + gender + '\'' +
- ", email='" + email + '\'' +
- '}';
- }
- }
工具类:
- package com.chenyixin.ssm.utils;
-
- 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 java.io.InputStream;
-
- public class SqlSessionUtil {
-
- public static SqlSession getSqlSession() {
- try {
- // 获取核心的配置文件
- InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
- // 创建 SqlSessionFactoryBuilder 对象
- SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
-
- // 通过核心配置文件多对应的字节输入流创建工厂类 SqlSessionFactory ,生产 SqlSession 对象
- SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(in);
-
- // 创建 SqlSession 对象(自动操作事务)
- return sqlSessionFactory.openSession(true);
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
-
- }
- }
mybatis-config.xml:
- configuration
- PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-config.dtd">
- <configuration>
-
-
-
- <properties resource="jdbc.properties"/>
-
- <typeAliases>
- <package name="com.chenyixin.ssm.pojo"/>
- typeAliases>
-
-
- <environments default="development">
- <environment id="development">
- <transactionManager type="JDBC"/>
- <dataSource type="POOLED">
- <property name="driver" value="${jdbc.driver}"/>
- <property name="url" value="${jdbc.url}"/>
- <property name="username" value="${jdbc.username}"/>
- <property name="password" value="${jdbc.password}"/>
- dataSource>
- environment>
-
- environments>
-
-
- <mappers>
-
- <package name="com.chenyixin.ssm.mapper"/>
- mappers>
- configuration>
数据库中的数据:

接口:
- public interface SelectMapper {
-
- /**
- * 根据 id 获取用户信息
- * @param id 要查询的id
- * @return 返回查询到的用户信息
- */
- User getUserById(@Param("id") Integer id);
-
- }
配置文件:
- mapper
- PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
- <mapper namespace="com.chenyixin.ssm.mapper.SelectMapper">
-
- <select id="getUserById" resultType="user">
- select *
- from t_user
- where id = #{id};
- select>
-
- mapper>
测试类:
- public class SelectMapperTest {
-
- SqlSession sqlSession = SqlSessionUtil.getSqlSession();
- SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
-
- @Test
- public void getUserById() {
- User user = mapper.getUserById(3);
- System.out.println(user);
- // User{id=3, username='李四', password='123', age=19, gender='男', email='123456@qq.com'}
- }
- }
SelectMapper 接口:
- /**
- * 查询所有用户信息
- * @return 返回所有用户信息的 list 集合
- */
- List
getAllUser();
SelectMapper.xml配置文件:
-
- <select id="getAllUser" resultType="user">
- select * from t_user
- select>
测试:
- @Test
- public void getAllUser() {
- List
allUser = mapper.getAllUser(); - allUser.forEach(System.out::println);
- // User{id=1, username='张三', password='123456', age=19, gender='男', email='123456@qq.com'}
- // User{id=3, username='李四', password='123', age=19, gender='男', email='123456@qq.com'}
- // User{id=13, username='王五', password='321', age=23, gender='女', email='321@qq.com'}
- }
注意:
若 sql 语句查询的结果为多条时,一定不能以实体类类型作为方法的返回值,否则会抛出异常
TooManyResultsException
若 sql 语句查询的结果为 1 时,此时可以使用实体类类型或 list 集合类型作为方法的返回值
SelectMapper 接口:
- /**
- * 查询用户信息的总记录数
- * @return 返回总记录数值
- */
- Integer getCount();
SelectMapper.xml配置文件:
-
-
- <select id="getCount" resultType="Integer">
- select count(*) from t_user
- select>
测试:
- @Test
- public void getCount() {
- Integer count = mapper.getCount();
- System.out.println(count); //3
- }
SelectMapper 接口:
- /**
- * 根据 id 查询用户信息,并存储到 map 集合中
- * @param id 要查询的id
- * @return 返回查询到的用户信息,用 map 集合存储
- */
- Map
getUserByIdToMap(@Param("id") Integer id);
SelectMapper.xml配置文件:
-
- <select id="getUserByIdToMap" resultType="map">
- select *
- from t_user
- where id = #{id};
- select>
测试:
- @Test
- public void getUserByIdToMap() {
- Map
user1 = mapper.getUserByIdToMap(3); - Map
user2 = mapper.getUserByIdToMap(14); - System.out.println(user1);
- // {password=123, gender=男, id=3, age=19, email=123456@qq.com, username=李四}
- System.out.println(user2);
- // {password=123456, gender=男, id=14, username=赵六}
- }
注意:
1、map 中的数据是无序的
2、若查询到的字段值为 null ,则在 map 中不保存
查询所有的用户信息为 map 集合
若查询的数据有多条时,并且要将每一条数据转化为 map 集合
此时有两种解决方案:
1、经 mapper 接口方法的返回值设置为泛型是 map 的 list 集合
2、可以将查询到的每条数据转换的 map 集合放在一个大的 map 集合中,但是必须要通过 @MapKey 注解将查询到的某个字段的值作为大的 map 集合的键
代码示例:
SelectMapper 接口:
-
- /**
- * 查询所有用户信息为map集合
- * @return
- * 将表中的数据以map集合的方式查询,一条数据对应一个map;
- * 若有多条数据,就会产生多个map集合,此时可以将这些map放在一个list集合中获取
- */
- List
-
- /**
- * 查询所有用户信息为map集合
- * @return
- * 将表中的数据以map集合的方式查询,一条数据对应一个map;
- * 若有多条数据,就会产生多个map集合,并且最终要以一个map的方式返回数据,
- * 此时需要通过@MapKey注解设置map集合的键,值是每条数据所对应的map集合
- */
- @MapKey("id")
- Map
getAllUserToMap2();
SelectMapper.xml配置文件:
-
- <select id="getAllUserToMap1" resultType="map">
- select * from t_user
- select>
-
-
- <select id="getAllUserToMap2" resultType="map">
- select * from t_user
- select>
测试:
- @Test
- public void getAllUserToMap1() {
- List
- list.forEach(System.out::println);
- // {password=123456, gender=男, id=1, age=19, email=123456@qq.com, username=张三}
- // {password=123, gender=男, id=3, age=19, email=123456@qq.com, username=李四}
- // {password=321, gender=女, id=13, age=23, email=321@qq.com, username=王五}
- // {password=123456, gender=男, id=14, username=赵六}
- }
-
- @Test
- public void getAllUserToMap2() {
- Map
map = mapper.getAllUserToMap2(); - for (Map.Entry
entry : map.entrySet()) { - System.out.println(entry);
- }
- // 1={password=123456, gender=男, id=1, age=19, email=123456@qq.com, username=张三}
- // 3={password=123, gender=男, id=3, age=19, email=123456@qq.com, username=李四}
- // 13={password=321, gender=女, id=13, age=23, email=321@qq.com, username=王五}
- // 14={password=123456, gender=男, id=14, username=赵六}
- }