MyBatis的数据库操作入门(二)

前面写了个实体类,不过没有用到,下面我想打印smbms_user表的所有信息

还是原来那个项目,在这里有个问题,比如你要食物,就要建造一次工厂(工厂是用完就摧毁)来生产,那这样就很麻烦了,每要一次食物就要建造一次工厂

下面我们可以把工厂封装起来,放到工具类util里面,以后要用到就调用就行了

新建一个包cn.bdqn.util,java名字为MyBatisUtil

package cn.bdqn.util;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MyBatisUtil {
	
	
	private static SqlSessionFactory sqlSessionFactory;
	
	/**
	 * 创建SqlSessionFactory   只创建一次
	 */
	static{
		try {
			String resource = "mybatis-config.xml";
			InputStream inputStream;
			inputStream = Resources.getResourceAsStream(resource);
			//创建SqlSessionFactory对象,读取配置文件
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
	}
	/**
	 * 获得SqlSessionFactory
	 * @return SqlSessionFactory
	 */
	public static SqlSessionFactory getSqlSessionFactory(){
		
		return sqlSessionFactory;
		
	}
	/**
	 * 获得 SqlSession
	 * @return SqlSession
	 */
	public static SqlSession getSqlSession(){
		return sqlSessionFactory.openSession(false);
	}
	/**
	 * 关闭sqlSession
	 * @param sqlSession
	 */
	public static void closeSession(SqlSession sqlSession){
		if(sqlSession!=null){
			sqlSession.close();
		}
	}
	

}

静态代码块:

在java中使用static关键字声明的代码块。静态块用于初始化类,为类的属性初始化。每个静态代码块只会执行一次。 由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行。
注意:1 静态代码块不能存在于任何方法体内。2 静态代码块不能直接访问静态实例变量和实例方法,需要通过类的实例对象来访问。且只执行一次

然后在cn.bdqn.dao里面新建一个接口,名字要和映射文件一样

代码如下,用集合的形式

package cn.bdqn.dao;

import java.util.List;

import cn.bdqn.pojo.User;

public interface UserMapper {

	List<User> getUserList();
}

cn.bdqn.dao里面的UserMapper.xml也要增加一个select代码

<?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="cn.bdqn.dao.UserMapper">

	<select id="count" resultType="int"> 
		Select count(1) from smbms_user
	</select>
	
	<select id="getUserList" resultType="cn.bdqn.pojo.User">
		Select * from smbms_user
	</select>
</mapper>

第一个select里面的在这里我们就没有用到,看第二个新增的select

id要和接口里面的方法名字一致,返回类型是实体类的路径,注意是.,sql语句的意思是查询这个表的详细信息

现在改写Test类,代码如下:

package cn.bdqn.test;


import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;

import cn.bdqn.dao.UserMapper;
import cn.bdqn.pojo.User;
import cn.bdqn.util.MyBatisUtil;

public class Test {

	private static Logger logger = Logger.getLogger("Test");

	public static void main(String[] args) {
		
		//getUserCount();
		getUserList();
	}
	
	public static void getUserList(){
		SqlSession session = MyBatisUtil.getSqlSession();
		//綁定Mapper接口
		List<User> userList = session.getMapper(UserMapper.class).getUserList();
		/*List<User> userList = session.getMapper(UserMapper.class).getUserList();*/
		for (User user : userList) {
			logger.debug("用户:" + user);
		}
		MyBatisUtil.closeSession(session);
	}
	

/*	private static void getUserCount() {
		SqlSession session = MyBatisUtil.getSqlSession();
		// 调用mapper文件进行数据操作
		int count = session.selectOne("cn.bdqn.dao.UserMapper.count");

		logger.debug("用户数量是:" + count);
		MyBatisUtil.closeSession(session);
	}*/
}

把上一个求记录数的代码封装了一下,因为没有使用,就注释掉了

运行了一下,结果如下:

[DEBUG] 2018-09-29 17:29:39,662 org.apache.ibatis.logging.LogFactory - Logging initialized using 'class org.apache.ibatis.logging.log4j.Log4jImpl' adapter.
[DEBUG] 2018-09-29 17:29:39,663 org.apache.ibatis.logging.LogFactory - Logging initialized using 'class org.apache.ibatis.logging.log4j.Log4jImpl' adapter.
[DEBUG] 2018-09-29 17:29:39,675 org.apache.ibatis.datasource.pooled.PooledDataSource - PooledDataSource forcefully closed/removed all connections.
[DEBUG] 2018-09-29 17:29:39,675 org.apache.ibatis.datasource.pooled.PooledDataSource - PooledDataSource forcefully closed/removed all connections.
[DEBUG] 2018-09-29 17:29:39,675 org.apache.ibatis.datasource.pooled.PooledDataSource - PooledDataSource forcefully closed/removed all connections.
[DEBUG] 2018-09-29 17:29:39,675 org.apache.ibatis.datasource.pooled.PooledDataSource - PooledDataSource forcefully closed/removed all connections.
[DEBUG] 2018-09-29 17:29:39,806 org.apache.ibatis.transaction.jdbc.JdbcTransaction - Opening JDBC Connection
[DEBUG] 2018-09-29 17:29:40,131 org.apache.ibatis.datasource.pooled.PooledDataSource - Created connection 269468037.
[DEBUG] 2018-09-29 17:29:40,132 cn.bdqn.dao.UserMapper.getUserList - ooo Using Connection [com.mysql.jdbc.JDBC4Connection@100fc185]
[DEBUG] 2018-09-29 17:29:40,133 cn.bdqn.dao.UserMapper.getUserList - ==>  Preparing: Select * from smbms_user 
[DEBUG] 2018-09-29 17:29:40,153 cn.bdqn.dao.UserMapper.getUserList - ==> Parameters: 
[DEBUG] 2018-09-29 17:29:40,223 Test - 用户:User [address=北京市海淀区成府路207号, birthday=Mon Oct 10 00:00:00 CST 1983, createdBy=1, creationDate=Thu Mar 21 16:52:07 CST 2013, gender=1, id=1, modifyBy=null, modifyDate=null, phone=13688889999, userCode=admin, userName=系统管理员, userPassword=1234567, userRole=1]
[DEBUG] 2018-09-29 17:29:40,223 Test - 用户:User [address=北京市东城区前门东大街9号, birthday=Sat Dec 10 00:00:00 CST 1983, createdBy=1, creationDate=Fri Sep 28 22:58:39 CST 2018, gender=2, id=2, modifyBy=null, modifyDate=null, phone=13688884457, userCode=liming, userName=李明, userPassword=0000000, userRole=2]
[DEBUG] 2018-09-29 17:29:40,223 Test - 用户:User [address=北京市朝阳区北辰中心12号, birthday=Tue Jun 05 00:00:00 CST 1984, createdBy=1, creationDate=Wed Dec 31 19:52:09 CST 2014, gender=2, id=5, modifyBy=null, modifyDate=null, phone=18567542321, userCode=hanlubiao, userName=韩路彪, userPassword=0000000, userRole=2]
[DEBUG] 2018-09-29 17:29:40,223 Test - 用户:User [address=北京市海淀区学院路61号, birthday=Wed Jun 15 00:00:00 CST 1983, createdBy=1, creationDate=Mon Feb 11 10:51:17 CST 2013, gender=1, id=6, modifyBy=null, modifyDate=null, phone=13544561111, userCode=zhanghua, userName=张华, userPassword=0000000, userRole=3]
[DEBUG] 2018-09-29 17:29:40,223 Test - 用户:User [address=北京市海淀区西二旗辉煌国际16层, birthday=Fri Dec 31 00:00:00 CST 1982, createdBy=1, creationDate=Wed Jun 11 19:09:07 CST 2014, gender=2, id=7, modifyBy=null, modifyDate=null, phone=13444561124, userCode=wangyang, userName=王洋, userPassword=0000000, userRole=3]
[DEBUG] 2018-09-29 17:29:40,223 Test - 用户:User [address=北京市海淀区回龙观小区10号楼, birthday=Fri Mar 07 00:00:00 CST 1986, createdBy=1, creationDate=Thu Apr 21 13:54:07 CST 2016, gender=1, id=8, modifyBy=null, modifyDate=null, phone=18098764545, userCode=zhaoyan, userName=赵燕, userPassword=0000000, userRole=3]
[DEBUG] 2018-09-29 17:29:40,224 Test - 用户:User [address=北京市朝阳区管庄新月小区12楼, birthday=Sun Jan 04 00:00:00 CST 1981, createdBy=1, creationDate=Wed May 06 10:52:07 CST 2015, gender=2, id=10, modifyBy=null, modifyDate=null, phone=13387676765, userCode=sunlei, userName=孙磊, userPassword=0000000, userRole=3]
[DEBUG] 2018-09-29 17:29:40,224 Test - 用户:User [address=北京市朝阳区建国门南大街10号, birthday=Sun Mar 12 00:00:00 CST 1978, createdBy=1, creationDate=Wed Nov 09 16:51:17 CST 2016, gender=2, id=11, modifyBy=null, modifyDate=null, phone=13367890900, userCode=sunxing, userName=孙兴, userPassword=0000000, userRole=3]
[DEBUG] 2018-09-29 17:29:40,224 Test - 用户:User [address=朝阳区管庄路口北柏林爱乐三期13号楼, birthday=Fri Mar 28 00:00:00 CST 1986, createdBy=1, creationDate=Tue Aug 09 05:52:37 CST 2016, gender=1, id=12, modifyBy=1, modifyDate=Thu Apr 14 14:15:36 CST 2016, phone=18098765434, userCode=zhangchen, userName=张晨, userPassword=0000000, userRole=3]
[DEBUG] 2018-09-29 17:29:40,224 Test - 用户:User [address=北京市海淀区北航家属院10号楼, birthday=Wed Nov 04 00:00:00 CST 1981, createdBy=1, creationDate=Mon Jul 11 08:02:47 CST 2016, gender=2, id=13, modifyBy=null, modifyDate=null, phone=13689674534, userCode=dengchao, userName=邓超, userPassword=0000000, userRole=3]
[DEBUG] 2018-09-29 17:29:40,224 Test - 用户:User [address=北京市朝阳区北苑家园茉莉园20号楼, birthday=Tue Jan 01 00:00:00 CST 1980, createdBy=1, creationDate=Sun Feb 01 03:52:07 CST 2015, gender=2, id=14, modifyBy=null, modifyDate=null, phone=13388886623, userCode=yangguo, userName=杨过, userPassword=0000000, userRole=3]
[DEBUG] 2018-09-29 17:29:40,224 Test - 用户:User [address=北京市昌平区天通苑3区12号楼, birthday=Fri Dec 04 00:00:00 CST 1987, createdBy=1, creationDate=Sat Sep 12 12:02:12 CST 2015, gender=1, id=15, modifyBy=null, modifyDate=null, phone=18099897657, userCode=zhaomin, userName=赵敏, userPassword=0000000, userRole=2]
[DEBUG] 2018-09-29 17:29:40,224 org.apache.ibatis.transaction.jdbc.JdbcTransaction - Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@100fc185]
[DEBUG] 2018-09-29 17:29:40,226 org.apache.ibatis.transaction.jdbc.JdbcTransaction - Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@100fc185]
[DEBUG] 2018-09-29 17:29:40,227 org.apache.ibatis.datasource.pooled.PooledDataSource - Returned connection 269468037 to pool.

猜你喜欢

转载自blog.csdn.net/weixin_42717928/article/details/82899468