关于mybatis学习及本人遇到报错问题——适合初学者

来源:互联网 发布:数据库课程 编辑:程序博客网 时间:2024/06/10 03:10

刚刚学习了一下mybatis3.3.0框架问题,自己想记录一下东西,同时遇到一些问题跟大家分享学习!

首先配置conf.xml,把xml放置是src目录下

<?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> <typeAliases>         <typeAlias alias="Admin" type="com.sw.scool.entity.Admin"/>     </typeAliases>    <environments default="development">        <environment id="development">            <transactionManager type="JDBC" />            <!-- 配置数据库连接信息 -->            <dataSource type="POOLED">                <property name="driver" value="org.postgresql.Driver" />                <property name="url" value="jdbc:postgresql://localhost:5432/scool" />                <property name="username" value="postgres" />                <property name="password" value="longrise" />            </dataSource>        </environment>    </environments>    <mappers>        <!-- 注册userMapper.xml文件,         userMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/userMapper.xml-->        <mapper resource="com/sw/scool/mapping/AdminMapper.xml"/>        <!-- java累 注解查询 class指向类路径 -->        <mapper class="com.sw.scool.mapping.AdminMapp" />    </mappers>        </configuration>
数据库配置配置你自己的地址就可以了,建立实体类,可以根据自己的需求来写


下一步映射mybatis的sql

建立adminMapper.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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的例如namespace="me.gacl.mapping.userMapper"就是me.gacl.mapping(包名)+userMapper(userMapper.xml文件去除后缀) --><mapper namespace="com.sw.scool.mapping">    <!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getUser,id属性值必须是唯一的,不能够重复    使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型    resultType="me.gacl.domain.User"就表示将查询结果封装成一个User类的对象返回    User类就是users表所对应的实体类    -->    <!--         根据id查询得到一个user对象     -->    <select id="getAdmin"  resultType="com.sw.scool.entity.Admin">        select id,username,password from Admin where id=#{id}    </select>    <insert id="insetOne" parameterType="Admin">    insert into Admin (id,username,password) values (#{id},#{username},#{password})     </insert>    <update id="updateOne">    </update></mapper>
测试代码test.java


package com.sw.scool.test;

import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.util.List;

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

import com.sw.scool.entity.Admin;
import com.sw.scool.mapping.AdminMapp;


public class Test {
private static SqlSessionFactory sqlSessionFactory;
private static Reader reader;
//读取配置文件数据、实体类xml执行方法
static{
try{
reader = Resources.getResourceAsReader("conf.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
}catch(Exception e){
e.printStackTrace();
}
}

public static SqlSessionFactory getSession(){
return sqlSessionFactory;
}

public static void main(String[] args) {
SqlSession session = sqlSessionFactory.openSession();
try {
//查询id为1的数据,只能查一个对象
Admin user = session.selectOne("com.sw.scool.mapping.getAdmin","1");
System.out.println(user);
// //新增一条数据
// Admin a = new Admin();
// a.setId("3");
// a.setPassword("89we");
// a.setUsername("shucc");
// int count = session.insert("com.sw.scool.mapping.insetOne",a);
// System.out.println(count);
// AdminMapp mapper=session.getMapper(AdminMapp.class);
// Admin admin=mapper.getAdmin("2");
// System.out.println(admin);
} finally {
session.close();
}
}

}
如果配置成功后台打印

下来我们来用注解的形式代替xml文件,一般简单的查询我们可以直接用注解直接完成更加方法,看看直接实际需要

package com.sw.scool.mapping;




//import static org.apache.ibatis.jdbc.SelectBuilder.*;
//import static org.apache.ibatis.jdbc.SqlBuilder.*;


import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;


import com.sw.scool.entity.Admin;




public interface AdminMapp{

@Select("SELECT * FROM Admin WHERE id = #{id}")
Admin  getAdmin(@Param("id") String id);


}

调试过程中有可能出现出现这样的错误



那是因为你的conf.xml文件文件指向有错误,没有配置java类的路径


配置成功后调试将两者方式成为可能


0 0
原创粉丝点击