一、MyBatis的下载并搭建核心架构
1>.找开mybatis的下载页:https://github.com/mybatis/mybatis-3/releases
2>.下载Latest release或是之前的版本Source code(tar.gz)是源码包:里面的test是演示
3>.配置mybatis: a>..把相应的mybatis的jar包放到lib下
b>.核心配置文件 :在下面的路径下找配置文件
mybatis-3-mybatis-3.4.1\mybatis-3-mybatis-3.4.1\src\test\java\org\apache\ibatis\submitted\complex_property里的Configuration.xml复制到项目中-------->更改里面的数据库的配置的内容
<environments default="development"> <environment id="development"> <transactionManager type="JDBC"> <property name="" value=""/> </transactionManager> <dataSource type="UNPOOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://127.0.0.1:3306/micro_message"/> <property name="username" value="root"/> <property name="password" value="root"></property> </dataSource> </environment> </environments> |
4>.mybatis的相关知识:从Dao层的需求来看:1.对象能与数据库交互2.能执行SQL语句
Mybatis是如何向Dao层提供这样的对象的,这个对象叫SqlSession
(mybatis最核心的)
5>.SqlSession的作用:a>.向SQL语句传入参数
b>.执行SQL语句
C>.获取执行SQL语句的结果
D>.事务的控制
6>.如何得到SqlSession:a>.通过配置文件获取数据库连接相关的信息
B>.通过配置信息构建SqlSessionFactory
C>.通过SqlSessionFactory打开数据库会话
/** * 访问数据库类 */ public class DbAccess {
public SqlSession getSqlSession() throws IOException{ //通过配置文件获取数据库连接相关的信息,路径是从src包的根路径下面开始 Reader reader = Resources.getResourceAsReader("com/message/config/Configuration.xml"); //通过配置信息构建SqlSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); //通过SqlSessionFactory打开数据库会话 SqlSession sqlSession = sqlSessionFactory.openSession(); return sqlSession; } } |
7>.在Db包下建DbAccess得到SqlSession,编写Dao层的类(和表相关的数据库操作)
/** * 和Message表相关的数据库操作 */ public class MessageDao { /** * 根据查询条件查询消息列表 * @param command * @param description * @return */ public List<Message> queryMessageList(String command,String description){ DbAccess dbAccess = new DbAccess(); List<Message> messageList = new ArrayList<Message>(); SqlSession sqlSession = null; //通过SqlSession执行Sql语句 try { sqlSession = dbAccess.getSqlSession(); messageList = sqlSession.selectList("Message.queryMessageList"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(sqlSession != null){ sqlSession.close(); } } return messageList; } } |
二、SQL基本配置与执行
1>.Sql语句的配置文件 :
mybatis-3-mybatis-3.4.1\mybatis-3-mybatis-3.4.1\src\test\java\org\apache\ibatis\submitted\complex_property里的User.xml 复制到项目中-------->更改里面的Sql语句
注:namespace命名空间不同(必须有),id:不同namespace里的id是可以相同的。
resultMap的type属性表明数据库字段对应Java中的那个类,写包名
<?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="Message"> <resultMap type="com.message.bean.Message" id="MessageResult"> //此列为主键,用id;不是主键,用result //column 和数据库的列名相一致,property和数据库字段对应Java中的那个类的属性 //jdbcType====jdbc.sql.Types. <id column="id" jdbcType="INTEGER" property="id"/> <result column="command" jdbcType="VARCHAR" property="command"/> <result column="description" jdbcType="VARCHAR" property="description"/> <result column="content" jdbcType="VARCHAR" property="content"/> </resultMap>
<select id="queryMessageList" resultMap="MessageResult"> select id,command,description,content from message ; </select> </mapper> |
2>.在核心配置文件Configuration.xml中引入Sql语句的配置文件
<mappers> <!--引入其它的SQL文件 可以写多个mapper--> <mapper resource="com/message/config/sql/MessageDao.xml"/> </mappers> |
目录结构图