请各位大神帮忙看看,改了很还是这样:
下面时源码:
1.项目结构
2.主配置文件;
3.映射文件
4.测试类;
请各位大神帮忙看看,改了很还是这样:
下面时源码:
1.项目结构
2.主配置文件;
3.映射文件
4.测试类;
你的dao怎么没有啊,你居然把mapper当成dao来用了,真正的实例代码如下
mybatis-config.xml
<?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>
<!-- 数据库链接配置信息池
default:当前使用的链接配置
-->
<environments default="e1">
<!-- 数据库链接配置信息
id:给当前配置起名字
-->
<environment id="e1">
<!-- 设置事务控制机制
type:JDBC 使用原始的自动控制事务机制
Managered 使用第三方插件控制事务
-->
<transactionManager type="JDBC"> </transactionManager>
<!-- 数据库连接池配置
type:POOLED 使用数据库连接池 占内存,crud效率提高
UNPOOLED 不是用数据库连接池 不占内存,效率低
-->
<dataSource type="POOLED">
<property name="driver" value=""/>
<property name="url" value=""/>
<property name="username" value=""/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
<!-- 注冊dao接口对应的配置文件 -->
<mappers>
<mapper resource="dao/UserDaoMapper.xml"/>
</mappers>
</configuration>
user类
package entity;
public class User {
private int u_id;
private String u_name;
private int age;
private String phone;
private String address;
public int getU_id() {
return u_id;
}
public void setU_id(int u_id) {
this.u_id = u_id;
}
public String getU_name() {
return u_name;
}
public void setU_name(String u_name) {
this.u_name = u_name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public User() {
super();
// TODO Auto-generated constructor stub
}
public User(int u_id, String u_name, int age, String phone, String address) {
super();
this.u_id = u_id;
this.u_name = u_name;
this.age = age;
this.phone = phone;
this.address = address;
}
@Override
public String toString() {
return "User [u_id=" + u_id + ", u_name=" + u_name + ", age=" + age + ", phone=" + phone + ", address="
+ address + "]";
}
}
UserDao.java
package dao;
import java.util.List;
import entity.User;
public interface UserDao {
public User selectById(int id);
public List<User> selectAll();
public void delete(int id);
public void update(User u);
public void insert(User u);
}
UserMapper.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" >
<!-- namespace:此maper的对应的dao接口全类名 -->
<mapper namespace="dao.UserDao">
<!-- 实现selectById
id :该标签对应的方法名
resultaType:声明返回值类型
-->
<select id="selectById" resultType="entity.User">
select * from t_user where u_id = #{id}
</select>
<select id="selectAll" resultType="entity.User">
select * from t_user
</select>
<delete id="delete" >
delete t_user where u_id=#{id}
</delete>
<update id="update" >
update t_user set u_name=#{u_name},age=#{age},phone=#{phone},address=#{address} where u_id=#{u_id}
</update>
<insert id="insert">
insert into t_user values(seq_u.nextval,#{u_name},#{age},#{phone},#{address})
</insert>
</mapper>
test
package test;
import java.io.IOException;
import java.io.InputStream;
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 dao.UserDao;
import entity.User;
public class FristMybatis {
public static void main(String[] args) throws IOException {
//1.加载主配置文件
InputStream stream=Resources.getResourceAsStream("mybatis-config.xml");
//2.创建sqlsession的工厂对象
SqlSessionFactory ssf=new SqlSessionFactoryBuilder().build(stream);
//3.获取sqlsession
SqlSession session=ssf.openSession();
//4.获取dao的代理对象
UserDao dao=session.getMapper(UserDao.class);
// // 5.调用dao方法
// User user=dao.selectById(1);
// System.out.println("此时查询的user对象是:"+user);
// List<User>list=dao.selectAll();
// for (User user : list) {
// System.out.println(user);
// }
// dao.delete(26);
// session.commit();
//
// dao.update(new User(61,"长吗",18,"54188541881","合肥"));
// session.commit();
dao.insert(new User(12,"张贺",19,"13598564754","天上人间"));
session.commit();
//6,关流
session.close();
}
}
你的命名也不规范,以user为例,实体类(映射数据库表的类,包括属性,构造方法,toString.....)你要放在entity文件夹里面,命名User,dao就放在dao文件夹里面,命名为UserDao