MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis eliminates almost all of the JDBC code and manual setting of parameters and retrieval of results. MyBatis can use simple XML or Annotations for configuration and map primitives, Map interfaces and Java POJOs (Plain Old Java Objects) to database records. – MyBatis項目地址/在線文檔.
<?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"><select id="selectUserById" parameterType="java.lang.Integer" resultType="com.fq.domain.User">SELECT * FROM user WHERE id = #{id};</select><select id="selectUserByName" parameterType="java.lang.String" resultType="com.fq.domain.User">SELECT * FROM user WHERE name LIKE '%${value}%';</select></mapper>
public class UserDAOImpl implements UserDAO {private SqlSessionFactory factory;public UserDAOImpl(SqlSessionFactory factory) {this.factory = factory;}@Overridepublic User selectUserById(Integer id) throws Exception {SqlSession session = factory.openSession();User user = session.selectOne("namespace.selectUserById", id);session.close();return user;}
}
Client
public class MyBatisClient {@Testpublic void originalClient() throws Exception {UserDAO dao = new UserDAOImpl(new SqlSessionFactoryBuilder().build(ClassLoader.getSystemResourceAsStream("mybatis/mybatis-configuration.xml")));User user = dao.selectUserById(1);System.out.println(user);}
}
<?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="com.fq.mybatis.UserDAO"><select id="selectUserById" parameterType="java.lang.Integer" resultType="com.fq.domain.User">SELECT * FROM user WHERE id = #{id};</select>
</mapper>
注意: 此時namespace必須與UserDAO接口的全限定名相同.
UserDAO接口與前面相同, 但不再使用UserDAOImpl
Client
/*** @author jifang* @since 16/2/22 下午2:57.*/
public class MyBatisClient {private SqlSession session;private SqlSessionFactory factory;@Beforepublic void setUp() {factory = new SqlSessionFactoryBuilder().build(ClassLoader.getSystemResourceAsStream("mybatis/mybatis-configuration.xml"));session = factory.openSession();}@Testpublic void mapperClient() throws Exception {UserDAO dao = session.getMapper(UserDAO.class);User user = dao.selectUserById(1);System.out.println(user);}@Afterpublic void tearDown() {session.close();}
}
<select id="selectUserByNamePassword" parameterType="com.fq.domain.User" resultType="com.fq.domain.User">SELECT *FROM userWHERE name = #{name} AND password = #{password};
</select>
UserDAO
User selectUserByNamePassword(User user) throws Exception;
傳入Map
mapper
<select id="selectUserByMap" parameterType="java.util.Map" resultType="com.fq.domain.User">SELECT *FROM userWHERE name = #{name} AND password = #{password};
</select>
#{}花括號內對應Map的key.
UserDAO
User selectUserByMap(Map<String, Object> map) throws Exception;
輸出映射
輸出簡單類型
mapper
<select id="selectUserCount" parameterType="java.lang.String" resultType="java.lang.Integer">SELECT count(*)FROM userWHERE name LIKE '%${value}%';
</select>