首页 > 编程语言 > 详细

java# 认识mybatis# mybatis基础篇

时间:2021-01-21 12:57:05      阅读:44      评论:0      收藏:0      [点我收藏+]

what is mybatis

mybatis是一款优秀的持久层框架,支持定制化sql,存储过程以及高级映射。封装了几乎所有JDBC接口避免手动设置入参与过去结果集。可以简单使用xml或注解来配置和映射sql信息。将接口和java的pojo映射成对应的数据库记录。

mybatis 配置

项目依赖

<dependencies>
  <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.5</version>
  </dependency>

  <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.6</version>
  </dependency>

</dependencies>

mybatis 全局配置文件

<?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"></properties>    
      <environments default="development">        
            <environment id="development">            
                  <transactionManager type="JDBC" />            
                  <dataSource type="POOLED">               
                        <property name="driver" value="${db.driver}" />                
                        <property name="url" value="${db.url}" />                
                        <property name="username" value="${db.username}" />                
                        <property name="password" value="${db.password}" />            
                  </dataSource>        
            </environment>    
      </environments>    
      <mappers>        
            <mapper resource="UserMapper.xml" />    
      </mappers> 
</configuration>

Mapper.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="test"> 
<!-- 根据id获取用户信息 --> 
<select id="findUserById" parameterType="int" resultType="com.kkb.mybatis.po.User">    
      select * from user where id = #{id} 
</select>
<!-- 根据名称模糊查询用户列表 --> 
<select id="findUserByUsername" parameterType="java.lang.String"  resultType="com.kkb.mybatis.po.User">
     select * from user where username like ‘%${value}%‘ 
</select>
</mapper>

映射文件参数配置说明:

  • parameterType:定义输入参数的Java类型
  • resultType:定义结果映射类型
  • #{}相当于JDBC中的?占位符
  • #{id}表示使用preparedstatement设置占位符号并将输入变量id传到sql
  • ${value}取出参数名为value的值。将${value}占位符替换
    注意:如果是取简单数量类型的参数,括号中的参数名称必须为value

Dao接口及实现

生命周期(作用范围)
  1. sqlsession:方法级别
  2. sqlsessionFactory:全局范围(应用级别)
  3. sqlsessionFactoryBuilder:方法级别
public interface UserDao {    
      public User findUserById(int id) throws Exception;    
      public List<User> findUsersByName(String name) throws Exception; 
}
public class UserDaoImpl implements UserDao {    
      //注入SqlSessionFactory    
      public UserDaoImpl(SqlSessionFactory sqlSessionFactory){        
            this. sqlSessionFactory = sqlSessionFactory;    
      }        private SqlSessionFactory sqlSessionFactory;       
      @Override    
      public User findUserById(int id) throws Exception {        
            SqlSession session = sqlSessionFactory.openSession();        
            User user = null;        
            try {            
                  //通过sqlsession调用selectOne方法获取一条结果集            
                  //参数1:指定定义的statement的id,参数2:指定向statement中传递的参数            
                  user = session.selectOne("test.findUserById", id);            
                  System.out.println(user);                                
            } finally{            
                  session.close();        
            }        return user;    
      }           
      @Override    
      public List<User> findUsersByName(String name) throws Exception {        
            SqlSession session = sqlSessionFactory.openSession();        
            List<User> users = null;        
            try {            
                  users = session.selectList("test.findUsersByName", name);           
                  System.out.println(users);                                
            } finally{            
                  session.close();        
            }        return users;    
      }    
}

测试代码

public class MybatisTest {        
      private SqlSessionFactory sqlSessionFactory;        
      @Before    
      public void init() throws Exception {        
            SqlSessionFactoryBuilder sessionFactoryBuilder = new SqlSessionFactoryBuilder();        
            InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");        
            sqlSessionFactory = sessionFactoryBuilder.build(inputStream);    
      }
      @Test    
      public void testFindUserById() {        
            UserDao userDao = new UserDaoImpl(sqlSessionFactory);        
            User user = userDao.findUserById(22);        
            System.out.println(user);    
      }    
      @Test    
      public void testFindUsersByName() {        
            UserDao userDao = new UserDaoImpl(sqlSessionFactory);        
            List<User> users = userDao.findUsersByName("老郭");        
            System.out.println(users);    
      } 
}

java# 认识mybatis# mybatis基础篇

原文:https://www.cnblogs.com/xy-c/p/14307283.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!