MyBatis(二) 使用MyBatis改写及SqlSession

来源:互联网 发布:java架构师要求 编辑:程序博客网 时间:2024/05/17 07:21


MyBatis中的SqlSession


作用:

1.向SQL语句传入参数

2.执行SQL语句

3.获取执行SQL语句的结果

4.事务的控制


获取SqlSession

1.通过配置文件获取数据库连接相关信息

2.通过配置信息构建SqlSessionFactory

3.通过SqlSessionFactory打开数据库会话




DBAccess.java

package com.example.db;import java.io.IOException;import java.io.Reader;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;/** * 访问数据库类 *  * @author Jeremy_Lin * */public class DBAccess {// 异常抛给Dao层去处理 public SqlSession getSqlSession() throws IOException {// 通过配置文件获取数据库连接信息Reader reader = Resources.getResourceAsReader("com/example/config/Configuration.xml");// 通过配置信息构建一个SqlSessionFactorySqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);// 通过sqlSessionFactory打开一个数据库会话SqlSession sqlSession = sqlSessionFactory.openSession();return sqlSession;}}


Configuration.xml

来自mybatis下src\test\java\org\apache\ibatis\submitted\complex_property

<?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><!--    <settings>    <setting name="useGeneratedKeys" value="false"/>    <setting name="useColumnLabel" value="true"/>  </settings>  <typeAliases>    <typeAlias alias="UserAlias" type="org.apache.ibatis.submitted.complex_property.User"/>  </typeAliases> -->  <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"/>      </dataSource>    </environment>  </environments>  <mappers>    <mapper resource="com/example/config/sqlxml/Message.xml"/>  </mappers></configuration>


Message.xml

来自mybatis下src\test\java\org\apache\ibatis\submitted\complex_property的User.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="Message">  <resultMap type="com.example.bean.Message" id="MessageResult">  <!-- 主键  -->    <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>  <!-- id唯一 可通过namespace区分 即不同的namespace下可以有相同的id  -->  <select id="queryMessageList" resultMap="MessageResult">    select ID, COMMAND, DESCRIPTION, CONTENT from MESSAGE where 1 = 1  </select></mapper>


MessageDao.java

package com.example.dao;import java.io.IOException;import java.util.ArrayList;import java.util.List;import org.apache.ibatis.session.SqlSession;import com.example.bean.Message;import com.example.db.DBAccess;/** *  * 和message表相关的数据库操作 *  * @author Jeremy_Lin * */public class MessageDao {/** * 根据查询条件查询消息列表 */public List<Message> queryMessageList(String command, String description) {DBAccess dbAccess = new DBAccess();List<Message> messageList = new ArrayList<Message>();SqlSession sqlSession = null;try {sqlSession = dbAccess.getSqlSession();// 通过sqlSession执行SQL语句      namespace.idmessageList = sqlSession.selectList("Message.queryMessageList");} catch (IOException e) { // 在Dao层处理异常e.printStackTrace();} finally {if (sqlSession != null) {sqlSession.close();}}return messageList;}public static void main(String[] args) {MessageDao messageDao = new MessageDao();messageDao.queryMessageList("", "");}}


代码:点击打开链接



原创粉丝点击