• mybatis入门


    首先来回顾一下jdbc

    @Test
    	public void testJdbc(){
    		Connection connection=null;
    		PreparedStatement prepareStatement=null;
    		ResultSet resultSet=null;
    		try {
    			//加载驱动
    			Class.forName("com.mysql.jdbc.Driver");
    			
    			//建立连接
    			connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/ssm?characterEncoding=utf-8","root", "root");
    			
    			//创建sql语句并执行
    			String sql="select * from user ";
    			prepareStatement = connection.prepareStatement(sql);
    			//prepareStatement.setString(1, "王五");
    			resultSet = prepareStatement.executeQuery();
    			
    			//返回结果集并处理
    			while (resultSet.next()) {
    				System.out.println(resultSet.getString("id")+"------>"+resultSet.getString("userName"));
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}finally {
    			if(resultSet!=null){
    				try {
    					resultSet.close();
    				} catch (SQLException e) {
    					e.printStackTrace();
    				}
    			}
    			if(prepareStatement!=null){
    				try {
    					prepareStatement.close();
    				} catch (SQLException e) {
    					e.printStackTrace();
    				}
    			}
    			if(connection!=null){
    				try {
    					connection.close();
    				} catch (SQLException e) {
    					e.printStackTrace();
    				}
    			}
    		}
    	}
    

      

    最基础的xml开发

    然后再来看看mybatis

    建立maven工程

    file--new--project---maven--maven project--next

    然后在pom中添加依赖

    	<dependencies>
    		<!-- mybatis依赖 -->
    		<dependency>
    			<groupId>org.mybatis</groupId>
    			<artifactId>mybatis</artifactId>
    			<version>3.4.6</version>
    		</dependency>
    		<!-- mysql依赖 -->
    		<dependency>
    			<groupId>mysql</groupId>
    			<artifactId>mysql-connector-java</artifactId>
    			<version>5.1.35</version>
    		</dependency>
    
    		<dependency>
    			<groupId>log4j</groupId>
    			<artifactId>log4j</artifactId>
    			<version>1.2.17</version>
    		</dependency>
    
    
    		<!-- 单元测试 -->
    		<dependency>
    			<groupId>junit</groupId>
    			<artifactId>junit</artifactId>
    			<version>4.12</version>
    		</dependency>
    	</dependencies>
    

      

     建立pojo类

    public class User {
    
    	private int id;
    	private String userId;
    	private String userName;
    	private String birthday;
    	private String gender;
    	private String address;
    	private String tel;
    	public int getId() {
    		return id;
    	}
    	public void setId(int id) {
    		this.id = id;
    	}
    	public String getUserId() {
    		return userId;
    	}
    	public void setUserId(String userId) {
    		this.userId = userId;
    	}
    	public String getUserName() {
    		return userName;
    	}
    	public void setUserName(String userName) {
    		this.userName = userName;
    	}
    	public String getBirthday() {
    		return birthday;
    	}
    	public void setBirthday(String birthday) {
    		this.birthday = birthday;
    	}
    	public String getGender() {
    		return gender;
    	}
    	public void setGender(String gender) {
    		this.gender = gender;
    	}
    	public String getAddress() {
    		return address;
    	}
    	public void setAddress(String address) {
    		this.address = address;
    	}
    	public String getTel() {
    		return tel;
    	}
    	public void setTel(String tel) {
    		this.tel = tel;
    	}
    	@Override
    	public String toString() {
    		return "User [id=" + id + ", userId=" + userId + ", userName=" + userName + ", birthday=" + birthday
    				+ ", gender=" + gender + ", address=" + address + ", tel=" + tel + "]";
    	}
    	
    	
    
    }
    

      

    dao接口以及实现类daoImpl

    public interface UserDao {
    	public User findUserById(int id) ;
    	public void insertUser(User user) ;
    }
    

      

    public class UserDaoImpl implements UserDao {
    
    	// 注入SqlSessionFactory
    	public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {
    		this.sqlSessionFactory = sqlSessionFactory;
    	}
    
    	private SqlSessionFactory sqlSessionFactory;
    
    	@Override
    	public User findUserById(int id)  {
    		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 void insertUser(User user)  {
    		SqlSession sqlSession = sqlSessionFactory.openSession();
    		try {
    			sqlSession.insert("insertUser", user);
    			sqlSession.commit();
    		} finally {
    			sqlSession.close();
    		}
    
    	}
    
    }
    

      

    关键是配置文件

    全局配置

    <?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 配置文件 -->
    	<properties resource="properties/db.properties"></properties>
    
    	<!-- 配置数据源 -->
    	<environments default="development">
    		<environment id="development">
    			<!-- 事务管理:采用的是JDBC的事务管理 -->
    			<transactionManager type="JDBC" />
    			<!-- 配置数据源连接池: POOLED使用的是Mybatis自己的连接池 -->
    			<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>
    
    	<!-- 读取mapper映射文件 -->
    	<mappers>
    		<mapper resource="dao/UserMapper.xml" />
    	</mappers>
    </configuration>
    

      

    映射文件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">
    	<select id="findUserById" parameterType="int"
    		resultType="com.kkb.mybatis.dao.po.User">
    		SELECT * 
    		FROM user
    		WHERE id = #{id}
    	</select>
    	<insert id="insertUser"
    		parameterType="com.kkb.mybatis.dao.po.User" useGeneratedKeys="true">
    		INSERT
    		INTO user (username,gender,birthday,address)
    		VALUES (#{userName},#{gender},#{birthday},#{address})
    	</insert>
    </mapper>
    

      

    db.properties

    db.driver=com.mysql.jdbc.Driver
    db.url=jdbc:mysql://localhost:3306/ssm?characterEncoding=utf-8
    db.username=root
    db.password=root
    

      

    log4j.properties

    # Global logging configuration
    log4j.rootLogger=DEBUG, stdout
    # MyBatis logging configuration...
    log4j.logger.com.kkb.mybatis.mapper=DEBUG
    # Console output...
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
    

      

    测试

    public class UserDaoTest {
    
    	private SqlSessionFactory sqlSessionFactory;
    
    	@Before
    	public void before() {
    		try {
    			// 指定全局配置文件路径
    			String resource = "dao/SqlMapConfig.xml";
    			// 加载资源文件(全局配置文件和映射文件)
    			InputStream inputStream = Resources.getResourceAsStream(resource);
    			// 还有构建者模式,去创建SqlSessionFactory对象
    			sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    
    	@Test
    	public void testFindUserById() {
    		UserDao dao = new UserDaoImpl(sqlSessionFactory);
    		User user = dao.findUserById(2);
    		System.out.println(user);
    	}
    
    	@Test
    	public void testInsertUser() {
    		UserDao dao = new UserDaoImpl(sqlSessionFactory);
    		User user = new User();
    		user.setUserName("lucas");
    		user.setGender("男");
    		user.setAddress("上海");
    		// 调用dao的添加用户操作
    		dao.insertUser(user);
    		// 打印通过主键返回策略生成的ID
    		System.out.println(user.getId());
    	}
    
    }
    

      

    控制台信息

    DEBUG [main] - Logging initialized using 'class org.apache.ibatis.logging.log4j.Log4jImpl' adapter.
    DEBUG [main] - PooledDataSource forcefully closed/removed all connections.
    DEBUG [main] - PooledDataSource forcefully closed/removed all connections.
    DEBUG [main] - PooledDataSource forcefully closed/removed all connections.
    DEBUG [main] - PooledDataSource forcefully closed/removed all connections.
    DEBUG [main] - Opening JDBC Connection
    DEBUG [main] - Created connection 813656972.
    DEBUG [main] - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@307f6b8c]
    DEBUG [main] - ==>  Preparing: SELECT * FROM user WHERE id = ? 
    DEBUG [main] - ==> Parameters: 2(Integer)
    DEBUG [main] - <==      Total: 1
    User [id=2, userId=001, userName=王五, birthday=2019-05-17, gender=男, address=上海, tel=110]
    DEBUG [main] - Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@307f6b8c]
    DEBUG [main] - Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@307f6b8c]
    DEBUG [main] - Returned connection 813656972 to pool.
    User [id=2, userId=001, userName=王五, birthday=2019-05-17, gender=男, address=上海, tel=110]
    

      

  • 相关阅读:
    php RSA 简单实现
    redis 常用操作命令
    ajax短轮询+php与服务器交互制作简易即时聊天网站
    PHP解决网站大数据大流量与高并发
    Memcache所有方法及参数详解
    apache 与 nginx 详解
    apache 与 nginx的区别
    Redis,Memcache的区别和具体应用场景
    Memcache Redis 与Mogodb优缺点
    MySQL 存储
  • 原文地址:https://www.cnblogs.com/1906859953Lucas/p/10880636.html
Copyright © 2020-2023  润新知