搭建环境:导入相关的jar包
jdbc驱动 mybatis
配置文件:
Jdbc连接的属性文件(driver,url,username,password)
SqlSession:
1.向SQL语句传入参数
2.执行SQL语句
3.获取执行SQL语句的结果
4.事务的控制
如何得到SqlSession
1.通过配置文件获取数据库连接相关信息
2.通过配置信息构建SqlSessionFactory
3.通过SQLSessionFactory打开数据库的会话
访问数据库类
public class DBAccess{
public SqlSession getSqlSession() throws IOException{
通过配置文件获取数据库连接相关信息
Reader reader=Resources.getResourceAsReader("配置文件")
通过配置信息构建SqlSessionFactory
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
通过SQLSessionFactory打开数据库的会话
SqlSession sqlSession=sqlSessionFactory.openSession();
return sqlSession;
}
}
Dao的方法中
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();
messageList=sqlSession.selectList("Message.queryMessageList")
}
catch(IOException){
e.printStackTrace();
}finally{
if(sqlSession!=null){
sqlSession.close();}
}
return messageList;
<mapper namespace="Message">
<resultMap id="MessageResult" type="javaBean的全路径">
property是数据库中的列名,jdbcType是列名的类型 int 是 Integer ,column是java对应类的属性名
<id property="id" jdbcType="INTEGER" column="id"/> /主键标签
<result property="username" jdbcType="VARCHAR" column="username"/>
<result property="password.encrypted" jdbcType="VARCHAR" column="password"/>
<result property="administrator" jdbcType="BOOLEAN" column="administrator"/>
</resultMap>
<select id="queryMessageList" resultMap="MessageResult" parameterType="long"> SELECT * FROM user WHERE id = #{id:INTEGER} </select>
id属性:为sql语句起名
<select id="queryMessageList" parameterType="long" resultType="int"> SELECT version FROM user WHERE id = #{id,jdbcType=INTEGER} </select>
<delete id="delete" parameterType="UserAlias"> DELETE FROM user WHERE id = #{id:INTEGER} </delete>
<insert id="insert" parameterType="UserAlias" useGeneratedKeys="false"> INSERT INTO user ( id, username, password, administrator ) VALUES ( #{id}, #{username,jdbcType=VARCHAR}, #{password.encrypted:VARCHAR}, #{administrator,jdbcType=BOOLEAN} ) </insert>
<update id="update" parameterType="UserAlias"> UPDATE user SET username = #{username,jdbcType=VARCHAR}, password = #{password.encrypted,jdbcType=VARCHAR}, administrator = #{administrator,jdbcType=BOOLEAN} WHERE id = #{id,jdbcType=INTEGER} </update>
<!-- Unique constraint check -->
<select id="isUniqueUsername" parameterType="map" resultType="boolean">
SELECT (count(*) = 0) FROM user WHERE ((#{userId,jdbcType=BIGINT} IS NOT NULL AND id != #{userId,jdbcType=BIGINT}) OR #{userId,jdbcType=BIGINT} IS NULL)
<!-- other than me -->
AND (username = #{username,jdbcType=VARCHAR})
</select>
</mapper>
<configuration>
<settings>
<setting value="false" name="useGeneratedKeys"/>
<setting value="true" name="useColumnLabel"/>
</settings>
<typeAliases>
<typeAlias type="org.apache.ibatis.submitted.complex_property.User" alias="UserAlias"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC">
<property value="" name=""/>
</transactionManager>
<dataSource type="UNPOOLED">
<property value="org.hsqldb.jdbcDriver" name="driver"/>
<property value="jdbc:hsqldb:mem:complexprop" name="url"/>
<property value="sa" name="username"/>
</dataSource>
</environment>
</environments>
<mappers> (配置文件)
<mapper resource="org/apache/ibatis/submitted/complex_property/User.xml"/>
</mappers>
</configuration>
jdbc驱动 mybatis
配置文件:
Jdbc连接的属性文件(driver,url,username,password)
SqlSession:
1.向SQL语句传入参数
2.执行SQL语句
3.获取执行SQL语句的结果
4.事务的控制
如何得到SqlSession
1.通过配置文件获取数据库连接相关信息
2.通过配置信息构建SqlSessionFactory
3.通过SQLSessionFactory打开数据库的会话
访问数据库类
public class DBAccess{
public SqlSession getSqlSession() throws IOException{
通过配置文件获取数据库连接相关信息
Reader reader=Resources.getResourceAsReader("配置文件")
通过配置信息构建SqlSessionFactory
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
通过SQLSessionFactory打开数据库的会话
SqlSession sqlSession=sqlSessionFactory.openSession();
return sqlSession;
}
}
Dao的方法中
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();
messageList=sqlSession.selectList("Message.queryMessageList")
}
catch(IOException){
e.printStackTrace();
}finally{
if(sqlSession!=null){
sqlSession.close();}
}
return messageList;
}
或者使DaoImpl继承SqlSessionDaoSupport
SqlSession sqlSession=this.getSqlSession();
<mapper namespace="Message">
<resultMap id="MessageResult" type="javaBean的全路径">
property是数据库中的列名,jdbcType是列名的类型 int 是 Integer ,column是java对应类的属性名
<id property="id" jdbcType="INTEGER" column="id"/> /主键标签
<result property="username" jdbcType="VARCHAR" column="username"/>
<result property="password.encrypted" jdbcType="VARCHAR" column="password"/>
<result property="administrator" jdbcType="BOOLEAN" column="administrator"/>
</resultMap>
<select id="queryMessageList" resultMap="MessageResult" parameterType="long"> SELECT * FROM user WHERE id = #{id:INTEGER} </select>
id属性:为sql语句起名
<select id="queryMessageList" parameterType="long" resultType="int"> SELECT version FROM user WHERE id = #{id,jdbcType=INTEGER} </select>
<delete id="delete" parameterType="UserAlias"> DELETE FROM user WHERE id = #{id:INTEGER} </delete>
<insert id="insert" parameterType="UserAlias" useGeneratedKeys="false"> INSERT INTO user ( id, username, password, administrator ) VALUES ( #{id}, #{username,jdbcType=VARCHAR}, #{password.encrypted:VARCHAR}, #{administrator,jdbcType=BOOLEAN} ) </insert>
<update id="update" parameterType="UserAlias"> UPDATE user SET username = #{username,jdbcType=VARCHAR}, password = #{password.encrypted,jdbcType=VARCHAR}, administrator = #{administrator,jdbcType=BOOLEAN} WHERE id = #{id,jdbcType=INTEGER} </update>
<!-- Unique constraint check -->
<select id="isUniqueUsername" parameterType="map" resultType="boolean">
SELECT (count(*) = 0) FROM user WHERE ((#{userId,jdbcType=BIGINT} IS NOT NULL AND id != #{userId,jdbcType=BIGINT}) OR #{userId,jdbcType=BIGINT} IS NULL)
<!-- other than me -->
AND (username = #{username,jdbcType=VARCHAR})
</select>
</mapper>
<configuration>
<settings>
<setting value="false" name="useGeneratedKeys"/>
<setting value="true" name="useColumnLabel"/>
</settings>
<typeAliases>
<typeAlias type="org.apache.ibatis.submitted.complex_property.User" alias="UserAlias"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC">
<property value="" name=""/>
</transactionManager>
<dataSource type="UNPOOLED">
<property value="org.hsqldb.jdbcDriver" name="driver"/>
<property value="jdbc:hsqldb:mem:complexprop" name="url"/>
<property value="sa" name="username"/>
</dataSource>
</environment>
</environments>
<mappers> (配置文件)
<mapper resource="org/apache/ibatis/submitted/complex_property/User.xml"/>
</mappers>
</configuration>