学习笔记:mybaits的环境搭建和增删改查操作

来源:互联网 发布:淘宝店铺等级快速升级 编辑:程序博客网 时间:2024/06/10 16:18

configuration.xml用来连接数据库(这里是sqlsever2008)和对应的映射文件

<?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="User" type="nankang.po.Agent"/>

</typeAliases>


<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
<property name="url" value="jdbc:sqlserver://localhost:1433;DatabaseName=BK"/>
<property name="username" value="sa"/>
<property name="password" value="112358"/>
</dataSource>
</environment>
</environments>

<mappers>
<mapper resource="nankang/dao/agentMapper.xml"/>
</mappers>

</configuration>

******************************************************************************************************************************

Agent .class为实体类用于打包数据传入数据库,或者接受数据库传出的数据

package nankang.po;

public class Agent {
private int id;
private String userName;
private String userAge;
private String userAddress;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserName() {
return userName;

}
public void setUserName(String userName) {
System.out.println(userName);

this.userName = userName;
}
public String getUserAge() {
return userAge;
}
public void setUserAge(String userAge) {
this.userAge = userAge;
}
public String getUserAddress() {
return userAddress;
}
public void setUserAddress(String userAddress) {
this.userAddress = userAddress;
}
}

******************************************************************************************************************************

映射文件agentMapper.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="nankang.dao.AgentMapper">

<!-- 使用resultMap时可以数据库列名不需要和实体类属性一致 -->
<resultMap type="nankang.po.Agent" id="AgentResultMap"  >
<id property="id" column="id"/>
<result property="userName" column="userName"/>
<result property="userAge" column="userAge"/>
<result property="userAdress" column="userAdress"/>
</resultMap>

<!--    id对应接口中的方法名,parameterType对应方法参数类型 -->
<select id="selectAgentById" parameterType="String" resultMap="AgentResultMap">
select * from [user] where id=#{id}
</select>


<!-- 使用resultType时数据库列名必须要和实体类属性一致 
<select id="selectAgentById" parameterType="String" resultType="nankang.po.Agent">
select * from [user] where id=#{id}
</select>
 -->
 
<!-- userGeneratedKeys设置为true可以获取表中自增长字段,和keyproperty=id 就是把自增长属性赋给id属性,
即之后的insert中id就不需要再赋值,会自增长-->

<insert id="addUser" parameterType="nankang.dao.AgentMapper" >
insert into [user](id,userName,userAge,userAddress) values (#{id},#{userName},#{userAge},#{userAddress})
</insert>

<update id="update" parameterType="nankang.dao.AgentMapper">
update [user] set userName=#{userName},userAge=#{userAge},userAddress=#{userAddress} where id=#{id}
</update>

<delete id="delete" parameterType="int">
delete from [user] where id=#{id}
</delete>
<!--delete from [user] where id=2  会直接执行删除id为2的记录,从而不需要单独传参数-->
</mapper>

******************************************************************************************************************************

接口 AgentMapper.java

package nankang.dao;

import nankang.po.Agent;

public interface AgentMapper {
public Agent selectAgentById(String string);
public void addUser(Agent agent);
public void update(Agent agent);
public void delete(int agent);
}

******************************************************************************************************************************

测试类getSqlSessionFactory.java

package nankang.test;

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 nankang.dao.AgentMapper;
import nankang.po.Agent;

public class getSqlSessionFactory {

public static SqlSessionFactory getSessionFactory(){
SqlSessionFactory SessionFactory=null;
String resource="nankang/configuration.xml";

try{
SessionFactory=new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader(resource));

}catch(Exception e){
System.out.println("dsdsdsd");
e.printStackTrace();
}
return SessionFactory;

}

public static void main(String[] args) {
try{
//select数据,把数据库结果发送实体类(set方法赋值)再get方法获取
SqlSession sqlSession=getSqlSessionFactory.getSessionFactory().openSession();
AgentMapper dao=sqlSession.getMapper(AgentMapper.class);
Agent user=dao.selectAgentById("1");
System.out.println(user.getUserName()+user.getId()+" "+user.getUserAge());

//insert数据,把插入数据先set赋值给实体类,再把数据打包发送数据库
SqlSession sqlSession2=getSqlSessionFactory.getSessionFactory().openSession();
AgentMapper dao2=sqlSession2.getMapper(AgentMapper.class);
Agent agent=new Agent();
agent.setId(16);
agent.setUserName("钢铁侠");
agent.setUserAge("20");
agent.setUserAddress("工厂");
dao2.addUser(agent);
sqlSession2.commit();

//update数据
SqlSession sqlSession3=getSqlSessionFactory.getSessionFactory().openSession();
AgentMapper dao3=sqlSession3.getMapper(AgentMapper.class);
Agent agent2=new Agent();
agent2.setId(7);
agent2.setUserName("超人");
agent2.setUserAge("30");
agent2.setUserAddress("纽约");
dao3.update(agent2);
sqlSession3.commit();

//delete数据
SqlSession sqlSession4=getSqlSessionFactory.getSessionFactory().openSession();
AgentMapper dao4=sqlSession4.getMapper(AgentMapper.class);
dao4.delete(7);
sqlSession4.commit();

//关闭
 sqlSession.close();
sqlSession2.close();
sqlSession3.close();
sqlSession4.close();
}catch(Exception ex){
System.out.println(ex.getMessage());
}
}
}

阅读全文
0 0
原创粉丝点击