<?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>
<properties resource="database.properties" />
<settings>
<setting name="logImpl" value="LOG4J" />
</settings>
<typeAliases>
<typeAlias type="pd.entity.Book" alias="Book" />
<typeAlias type="pd.entity.User" alias="User" />
<typeAlias type="pd.entity.Group" alias="Group" />
<typeAlias type="pd.entity.Person" alias="Person" />
<typeAlias type="pd.entity.Table" alias="Table" />
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${user}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="pd/dao/UserMapper.xml" />
<mapper resource="pd/dao/BookMapper.xml" />
<mapper resource="pd/dao/PersonMapper.xml" />
<mapper resource="pd/dao/GroupMapper.xml" />
<mapper resource="pd/dao/TableMapper.xml" />
</mappers>
</configuration>
<?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="pd.dao.TestDao">
<resultMap type="Book" id="BookBasicMap">
<id property="bid" column="bid" />
<result property="bname" column="bname" />
</resultMap>
<resultMap type="Book" id="BookMap" extends="BookBasicMap">
<association property="user" column="userid" javaType="User"
resultMap="pd.dao.TestDao.UserBasicMap"></association>
</resultMap>
<select id="getBooks" resultMap="BookMap">
select *from t_book t1 left join
t_user t2 on t1.userid= t2.uid
</select>
<resultMap type="Book" id="BookMap2" extends="BookBasicMap">
<association property="user" column="userid" javaType="User"
select="pd.dao.TestDao.getUserByUid"></association>
</resultMap>
<select id="getBooks2" resultMap="BookMap2">
select *from t_book
</select>
</mapper>
<?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="pd.dao.TestDao">
<resultMap type="Group" id="GroupBasicMap">
<id property="gid" column="gid" />
<result property="gname" column="gname" />
</resultMap>
<resultMap type="Group" id="GroupMap" extends="GroupBasicMap">
<collection property="personList" ofType="Person"
resultMap="pd.dao.TestDao.PerBasicMap"></collection>
</resultMap>
<select id="getGroupList" resultMap="GroupMap">
select *from t_group t1
left join t_person_group t2 on t1.gid=t2.groupid
left join t_person t3 on
t2.personid=t3.pid
</select>
</mapper>
<?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="pd.dao.TestDao">
<resultMap type="Person" id="PerBasicMap">
<id property="pid" column="pid" />
<result property="pname" column="pname" />
</resultMap>
<resultMap type="Person" id="PersonMap" extends="PerBasicMap">
<collection property="groups" ofType="Group"
resultMap="pd.dao.TestDao.GroupBasicMap"></collection>
</resultMap>
<select id="getPersonList" resultMap="PersonMap">
select *from t_person t1
left join t_person_group t2 on t1.pid=t2.personid
left join t_group t3
on t2.groupid=t3.gid
</select>
</mapper>
<?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="pd.dao.TestDao">
<resultMap type="Table" id="tables">
<result property="tid" />
<result property="tname" />
</resultMap>
<select id="getTable" resultMap="tables">
select *from tablename1
</select>
<select id="getTableByTid" resultMap="tables">
select *from tablename1 where
<if test="tid!=null">
tid=#{tid}
</if>
</select>
<delete id="deleteByTid" parameterType="int">
delete from tablename1
<where>
<if test="tid!=null">
tid=#{tid}
</if>
</where>
</delete>
<insert id="insertByTid" parameterType="String">
insert into tablename1 values(#{tid,jdbcType=VARCHAR},#{tname,jdbcType=VARCHAR})
</insert>
<update id="updateByTname" parameterType="String">
update tablename1
<set>
<if test="tname!=null">
tname=#{tname}
</if>
</set>
<where>
<if test="tid!=null">
tid=#{tid}
</if>
</where>
</update>
</mapper>
<?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="pd.dao.TestDao">
<select id="getUser1" resultType="User">
select *from t_user
</select>
<resultMap type="User" id="UserBasicMap">
<id property="uid" column="uid" />
<result property="uname" column="uname" />
</resultMap>
<resultMap type="User" id="UserMap" extends="UserBasicMap">
<collection property="books" ofType="Book" resultMap="pd.dao.TestDao.BookBasicMap" />
</resultMap>
<select id="getUser2" resultMap="UserMap">
select *from t_user t1 left join
t_book t2 on t1.uid=t2.userid
</select>
<select id="getUserByUid" parameterType="String" resultType="User">
select *from t_user where uid=#{uid}
</select>
</mapper>
package pd.untils;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class CopyOfPandaUntils {
private static CopyOfPandaUntils copyOfPandaUntils;
private static SqlSessionFactory factory;
private CopyOfPandaUntils() {
InputStream in = null;
String configFile = "mybatis-config.xml";
try {
in = Resources.getResourceAsStream(configFile);
factory = new SqlSessionFactoryBuilder().build(in);
} catch (Exception e) {
e.printStackTrace();
}
}
public static synchronized CopyOfPandaUntils getInstance() {
if (copyOfPandaUntils == null) {
synchronized (CopyOfPandaUntils.class) {
if (copyOfPandaUntils == null) {
copyOfPandaUntils = new CopyOfPandaUntils();
}
}
}
return copyOfPandaUntils;
}
public SqlSession getSession() {
return factory.openSession(false);
}
public static void closeSession(SqlSession session) {
if (session != null) {
session.close();
}
}
}
package test
import java.util.List
import org.apache.ibatis.session.SqlSession
import pd.dao.TestDao
import pd.entity.Book
import pd.entity.Group
import pd.entity.Person
import pd.entity.Table
import pd.entity.User
import pd.untils.CopyOfPandaUntils
public class Test {
public static void main(String[] args) {
SqlSession session=null
try {
session=CopyOfPandaUntils.getInstance().getSession()
//一对多
List<User>list=session.getMapper(TestDao.class).getUser2()
System.out.println("一对多")
for(User bb:list){
System.out.println(bb.toString())
}
//一对一
List<Book>list1=session.getMapper(TestDao.class).getBooks()
System.out.println("一对一")
for(Book bb1:list1){
System.out.println(bb1.toString())
}
//根据ID查询
// 插入
session.commit()
} catch (Exception e) {
e.printStackTrace()
session.rollback()
}finally{
CopyOfPandaUntils.closeSession(session)
}
}
}