Mybaits的第一个程序

来源:互联网 发布:南风知我意七微txt下载 编辑:程序博客网 时间:2024/04/30 07:37

步骤:

1、导入相应的jar包


2、在src下导入mybaits的主配置文件(SqlMapConfig.xml)和日志文件(log4j.properties)

3、创建JavaBean(User)和相应的配置文件(User.xml),放在同一个包下

相关代码如下

User.java


package com.caokaiyuan.domain;


public class User 
{
private int id;
private String username;
private String sex;
private String address;

public int getId() 
{
return id;
}

public void setId(int id)
{
this.id = id;
}

public String getUsername()
{
return username;
}

public void setUsername(String username)
{
this.username = username;
}

public String getSex()
{
return sex;
}

public void setSex(String sex)
{
this.sex = sex;
}

public String getAddress()
{
return address;
}

public void setAddress(String address)
{
this.address = address;
}


}



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="user">
<!-- 通过id查询 -->
<select id="findById" parameterType="int" resultType="com.caokaiyuan.domain.User">
select * from user where id=#{id}
</select>

<!-- 通过姓名查询 -->
<select id="findByName" parameterType="String" resultType="com.caokaiyuan.domain.User">
select * from user where username like '%${value}%' 
</select>

<!-- 添加数据 -->
<insert id="add" parameterType="com.caokaiyuan.domain.User">
insert into user(username,sex,address) values(#{username},#{sex},#{address})
</insert>

<!-- 删除数据 -->
<delete id="delete" parameterType="int">
delete from user where id=#{id}
</delete>

<!-- 更新数据 -->
<update id="update" parameterType="com.caokaiyuan.domain.User">
update user set username=#{username},sex=#{sex},address=#{address} where id=#{id}
</update>
</mapper>

注:上面配置文件的namespace随意,建议与相关类的名称相同,id用来唯一标识操作的模块,parameterType为方法的参数类型,resultType为调用掉模块的返回类型


测试类

package com.caokaiyuan.test;


import java.io.IOException;
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 org.junit.Before;
import org.junit.Test;


import com.caokaiyuan.domain.User;


public class TestClass
{
private SqlSessionFactory sqlSessionFactory;

@Before
public void before()
{
try 
{
sqlSessionFactory = new SqlSessionFactoryBuilder().
build(Resources.getResourceAsStream("SqlMapConfig.xml"));


catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}

//通过id查询
@Test
public void findById()
{
SqlSession session = sqlSessionFactory.openSession();
User user = session.selectOne("user.findById", 5);
System.out.println(user.getAddress());
}

//模糊查询
@Test
public void findByName()
{
SqlSession session = sqlSessionFactory.openSession();
List<User> lists = session.selectList("user.findByName","a");

for (User user : lists)
{
System.out.println(user.getUsername());
}
}

//添加数据
@Test
public void insert()
{
SqlSession session = sqlSessionFactory.openSession();
User user = new User();
user.setAddress("广东");
user.setSex("男");
user.setUsername("test");
session.insert("user.add", user);
session.commit();
}

//删除数据
@Test
public void delete()
{
SqlSession session = sqlSessionFactory.openSession();
session.delete("user.delete", 11);
session.commit();
}

//更新数据
@Test
public void update()
{
SqlSession session = sqlSessionFactory.openSession();
User user = session.selectOne("user.findById", 5);
user.setUsername("hahahha");
session.update("user.update", user);
session.commit();
}
}


注释

selectOne("user.findById", 5);方法,第一个参数标识调用User.xml的那个模块,通过namespace和id决定。


parameterTyperesultType

parameterType:指定输入参数类型,mybatis通过ognl从输入对象中获取参数值拼接在sql中。

resultType:指定输出结果类型,mybatissql查询结果的一行记录数据映射为resultType指定类型的对象。


 #{}${}

#{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换,#{}可以有效防止sql注入。 #{}可以接收简单类型值或pojo属性值如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。

 

${}表示拼接sql串,通过${}可以将parameterType传入的内容拼接在sql中且不进行jdbc类型转换,${}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,${}括号中只能是value


1.1.1.1.1 selectOneselectList

 

selectOne查询一条记录,如果使用selectOne查询多条记录则抛出异常:

org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 3

at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:70)

 

selectList可以查询一条或多条记录。


0 0
原创粉丝点击