Mybatis中的常用的三个查询方法
selectList
用于查询多条数据的情况,返回值是一个list集合。如果没有查到任何数据,返回没有元素的集合(空集合,不是null)
selectOne
用于查询单条数据的情况,返回值是一个对象,如果没有查到任何数据,返回一个null。
selectMap
用于查询多条数据的情况,多条数据要形成一个map集合。如果查不到,返回一个空map集合(不是null)
1 package com.bjsxt.pojo; 2 3 import java.io.Serializable; 4 5 public class User implements Serializable { 6 private int id; 7 private String username; 8 private String password; 9 public String toString() { 10 return "User [id=" + id + ", username=" + username + ", password=" 11 + password + "]"; 12 } 13 public int hashCode() { 14 final int prime = 31; 15 int result = 1; 16 result = prime * result + id; 17 result = prime * result + ((password == null) ? 0 : password.hashCode()); 18 result = prime * result + ((username == null) ? 0 : username.hashCode()); 19 return result; 20 } 21 public boolean equals(Object obj) { 22 if (this == obj) 23 return true; 24 if (obj == null) 25 return false; 26 if (getClass() != obj.getClass()) 27 return false; 28 User other = (User) obj; 29 if (id != other.id) 30 return false; 31 if (password == null) { 32 if (other.password != null) 33 return false; 34 } else if (!password.equals(other.password)) 35 return false; 36 if (username == null) { 37 if (other.username != null) 38 return false; 39 } else if (!username.equals(other.username)) 40 return false; 41 return true; 42 } 43 public int getId() { 44 return id; 45 } 46 public void setId(int id) { 47 this.id = id; 48 } 49 public String getUsername() { 50 return username; 51 } 52 public void setUsername(String username) { 53 this.username = username; 54 } 55 public String getPassword() { 56 return password; 57 } 58 public void setPassword(String password) { 59 this.password = password; 60 } 61 public User(int id, String username, String password) { 62 super(); 63 this.id = id; 64 this.username = username; 65 this.password = password; 66 } 67 public User() { 68 super(); 69 } 70 71 }
mybatis.xml
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 5 <configuration> 6 <!-- 用于指定使用哪个开发 7 用于指定使用的环境id 8 --> 9 <environments default="dev"> 10 <!-- 用于配置开发环境 11 id:环境的唯一识别码 12 --> 13 <environment id="dev"> 14 <!-- 事务管理器 15 type:用于设定mybatis采用什么方式管理事务 16 JDBC表示和JDBC一样事务的管理方式 17 --> 18 <transactionManager type="JDBC"></transactionManager> 19 <!-- 数据源/连接池 20 用于配置链接池和数据库链接的参数 21 type:用于设置mybatis是否采用链接池技术 22 连接池:用来存数据库链接的,减少数据库的频繁开关 23 POOLED表示mybatis采用连接池技术 24 --> 25 <dataSource type="POOLED"> 26 <property name="driver" value="com.mysql.jdbc.Driver"/> 27 <property name="url" value="jdbc:mysql://localhost:3306/java505?useSSL=true&characterEncoding=utf8&useSSL=true"/> 28 <property name="username" value="root"/> 29 <property name="password" value="root"/> 30 </dataSource> 31 </environment> 32 </environments> 33 <!-- 扫描mapper文件 --> 34 <!-- 文件的全限制路径要用/ --> 35 <mappers> 36 <mapper resource="com/bjsxt/mapper/UserMapper.xml"/> 37 </mappers> 38 </configuration>
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-|3-mapper.dtd"> 5 <!-- namespa:命名空间,可以随意定义,一般情况下要写全限定路径(包名加类) 6 MyBatis管理SQL语句是通过namespace+id来定位的 7 --> 8 <mapper namespace="com.bjsxt.mapper.UserMapper"> 9 <!-- select标签用于编写查询语句 10 id:sql语句的唯一的标识,类比为方法名 11 resultType:用于设定返回结果的类型(全限定路径) 12 如果返回结果是集合,要写集合泛型的类型 13 --> 14 <select id="sellAll" resultType="com.bjsxt.pojo.User"> 15 select * from t_user 16 </select> 17 <select id="selOne" resultType="com.bjsxt.pojo.User"> 18 select * from t_user where id=1 19 </select> 20 </mapper>
1 package com.bjsxt.test; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.util.List; 6 import java.util.Map; 7 import java.util.Set; 8 9 import org.apache.ibatis.io.Resources; 10 import org.apache.ibatis.session.SqlSession; 11 import org.apache.ibatis.session.SqlSessionFactory; 12 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 13 import org.junit.Test; 14 15 import com.bjsxt.pojo.User; 16 17 public class TestMyBatis { 18 @Test 19 public void testSellAll()throws IOException{ 20 System.out.println(123); 21 22 //加载mybatis核心配置文件 23 InputStream is=(InputStream) Resources.getResourceAsStream("mybatis.xml"); 24 //构建sqlSessionFactory工厂对象 25 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is); 26 //通过工厂打开Sqlsession 27 SqlSession session = factory.openSession(); 28 //通过session执行查询操作 29 List<User> list = session.selectList("com.bjsxt.mapper.UserMapper.sellAll"); 30 for(User user:list){ 31 System.out.println(user); 32 } 33 //关闭资源 34 session.close(); 35 } 36 @Test 37 public void testSelectOne()throws IOException{ 38 System.out.println(123); 39 40 //加载mybatis核心配置文件 41 InputStream is=(InputStream) Resources.getResourceAsStream("mybatis.xml"); 42 //构建sqlSessionFactory工厂对象 43 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is); 44 //通过工厂打开Sqlsession 45 SqlSession session = factory.openSession(); 46 //通过session执行查询操作 47 User user = session.selectOne("com.bjsxt.mapper.UserMapper.selOne"); 48 System.out.println(user); 49 //关闭资源 50 session.close(); 51 } 52 53 @Test 54 public void testSelectMap()throws IOException{ 55 System.out.println(123); 56 57 //加载mybatis核心配置文件 58 InputStream is=(InputStream) Resources.getResourceAsStream("mybatis.xml"); 59 //构建sqlSessionFactory工厂对象 60 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is); 61 //通过工厂打开Sqlsession 62 SqlSession session = factory.openSession(); 63 //通过session执行查询操作 64 Map<Integer, User> map = session.selectMap("com.bjsxt.mapper.UserMapper.sellAll", "id"); 65 System.out.println(map); 66 Set<Integer>set=map.keySet(); 67 for (Integer k: set) { 68 System.out.println(map.get(k)); 69 } 70 //关闭资源 71 session.close(); 72 } 73 }
个人学习笔记,记录日常学习,便于查阅及加深,仅为方便个人使用。