輸入參數可以有三種:簡單類型,POJO,包裝類
關於前兩種:
http://www.cnblogs.com/xuyiqing/p/8600888.html
這里寫一下傳遞包裝類參數:
一個POJO:User

package pojo; import java.io.Serializable; import java.util.Date; public class User implements Serializable { private static final long serialVersionUID = 1L; private Integer id; private String username; private String sex; private Date birthday; private String address; public Integer getId() { return id; } public void setId(Integer 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 Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "User [id=" + id + ", username=" + username + ", sex=" + sex + ", birthday=" + birthday + ", address=" + address + "]"; } }
POJO的包裝類QueryVo:
package pojo; import java.io.Serializable; public class QueryVo implements Serializable { private static final long serialVersionUID = 1L; private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } }
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="mapper.UserMapper"> <!-- 根據用戶名模糊查詢 --> <select id="findUserByQueryVo" parameterType="pojo.QueryVo" resultType="pojo.User"> select * from user where username like "%"#{user.username}"%" </select> </mapper>
采用Mapper動態代理開發方式測試
UserMapper接口:
package mapper; import java.util.List; import pojo.QueryVo; import pojo.User; public interface UserMapper { public List<User> findUserByQueryVo(QueryVo vo); }
測試類:
package junit; 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 org.junit.Test; import mapper.UserMapper; import pojo.QueryVo; import pojo.User; public class MybatisMapperTest { @Test public void testMapper() throws Exception { String resource = "sqlMapConfig.xml"; InputStream in = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in); SqlSession sqlSession = sqlSessionFactory.openSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); QueryVo vo = new QueryVo(); User user = new User(); user.setUsername("王"); vo.setUser(user); List<User> users = userMapper.findUserByQueryVo(vo); for (User u : users) { System.out.println(u); } } }
核心配置文件:sqlMapConfig.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> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" /> <property name="username" value="root" /> <property name="password" value="12345" /> </dataSource> </environment> </environments> <mappers> <mapper resource="sqlmap/User.xml"/> </mappers> </configuration>
輸出參數:
1.輸出簡單類型參數:
User.xml:
<!-- 查詢總條數 --> <select id="countUser" resultType="Integer"> select COUNT(*) from user </select>
UserMapper:
public Integer countUser();
測試類:
@Test public void testCount() throws Exception { String resource = "sqlMapConfig.xml"; InputStream in = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in); SqlSession sqlSession = sqlSessionFactory.openSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); Integer i = userMapper.countUser(); System.out.println(i); }
2.輸出POJO對象
3.輸出POJO列表
這里都有寫過:
http://www.cnblogs.com/xuyiqing/p/8601506.html
另外,這里輸出類型都是resultType:這個前提是表的字段名和POJO的屬性名一致。
如果不一致,其實也有解決方法:需要使用resultMap,不過通常不會用,盡量保持一致即可