标签:
1.建表
DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `gender` varchar(1) NOT NULL, `name` varchar(255) NOT NULL, `id` int(11) NOT NULL AUTO_INCREMENT, `birthday` date DEFAULT NULL, `classesid` varchar(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1;
DROP TABLE IF EXISTS `alias`; CREATE TABLE `alias` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `userid` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1;
DROP TABLE IF EXISTS `classes`; CREATE TABLE `classes` ( `id` int(11) NOT NULL AUTO_INCREMENT, `cname` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
2.po,vo类
package cn.edu.cqupt.mybatis.po; import java.io.Serializable; import java.util.Date; import java.util.List; public class User implements Serializable{ private Integer id; private String gender; private String name; private Date birthday; private Classes classes; private List<Alias> aliasList; }
package cn.edu.cqupt.mybatis.po; import java.io.Serializable; public class Alias implements Serializable{ private Integer id; private String name; }
package cn.edu.cqupt.mybatis.po; public class Classes { private Integer id; private String cname; }
目录结构
3.单表操作 一对多 一对一
1)/testMybatis/src/cn/edu/cqupt/mybatis/mapper/UserMapper.xml
/testMybatis/src/cn/edu/cqupt/mybatis/mapper/UserMapper.java
package cn.edu.cqupt.mybatis.mapper; import cn.edu.cqupt.mybatis.po.User; import cn.edu.cqupt.mybatis.po.UserClasses; import cn.edu.cqupt.mybatis.po.UserExample; import java.util.List; import org.apache.ibatis.annotations.Param; public interface UserMapper { int countByExample(UserExample example); int deleteByExample(UserExample example); int deleteByPrimaryKey(Integer id); int insert(User record); int insertSelective(User record); List<User> selectByExample(UserExample example); User selectByPrimaryKey(Integer id); int updateByExampleSelective(@Param("record") User record, @Param("example") UserExample example); int updateByExample(@Param("record") User record, @Param("example") UserExample example); int updateByPrimaryKeySelective(User record); int updateByPrimaryKey(User record); UserClasses selectUserByClasses(Integer classesid); User selectUserClass2(Integer classesid); User selectUserByAlias(Integer userid); }
<?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="cn.edu.cqupt.mybatis.mapper.UserMapper" >
<resultMap id="BaseResultMap" type="cn.edu.cqupt.mybatis.po.User" >
<id column="id" property="id" jdbcType="INTEGER" />
<result column="gender" property="gender" jdbcType="VARCHAR" />
<result column="name" property="name" jdbcType="VARCHAR" />
<result column="birthday" property="birthday" jdbcType="DATE" />
</resultMap>
<sql id="Example_Where_Clause" >
<where >
<foreach collection="oredCriteria" item="criteria" separator="or" >
<if test="criteria.valid" >
<trim prefix="(" suffix=")" prefixOverrides="and" >
<foreach collection="criteria.criteria" item="criterion" >
<choose >
<when test="criterion.noValue" >
and ${criterion.condition}
</when>
<when test="criterion.singleValue" >
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue" >
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue" >
and ${criterion.condition}
<foreach collection="criterion.value" item="listItem" open="(" close=")" separator="," >
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Update_By_Example_Where_Clause" >
<where >
<foreach collection="example.oredCriteria" item="criteria" separator="or" >
<if test="criteria.valid" >
<trim prefix="(" suffix=")" prefixOverrides="and" >
<foreach collection="criteria.criteria" item="criterion" >
<choose >
<when test="criterion.noValue" >
and ${criterion.condition}
</when>
<when test="criterion.singleValue" >
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue" >
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue" >
and ${criterion.condition}
<foreach collection="criterion.value" item="listItem" open="(" close=")" separator="," >
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Base_Column_List" >
id, gender, name, birthday
</sql>
<select id="selectByExample" resultMap="BaseResultMap" parameterType="cn.edu.cqupt.mybatis.po.UserExample" >
select
<if test="distinct" >
distinct
</if>
<include refid="Base_Column_List" />
from user
<if test="_parameter != null" >
<include refid="Example_Where_Clause" />
</if>
<if test="orderByClause != null" >
order by ${orderByClause}
</if>
</select>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select
<include refid="Base_Column_List" />
from user
where id = #{id,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
delete from user
where id = #{id,jdbcType=INTEGER}
</delete>
<delete id="deleteByExample" parameterType="cn.edu.cqupt.mybatis.po.UserExample" >
delete from user
<if test="_parameter != null" >
<include refid="Example_Where_Clause" />
</if>
</delete>
<insert id="insert" parameterType="cn.edu.cqupt.mybatis.po.User" >
insert into user (id, gender, name,
birthday)
values (#{id,jdbcType=INTEGER}, #{gender,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR},
#{birthday,jdbcType=DATE})
</insert>
<insert id="insertSelective" parameterType="cn.edu.cqupt.mybatis.po.User" >
insert into user
<trim prefix="(" suffix=")" suffixOverrides="," >
<if test="id != null" >
id,
</if>
<if test="gender != null" >
gender,
</if>
<if test="name != null" >
name,
</if>
<if test="birthday != null" >
birthday,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
<if test="id != null" >
#{id,jdbcType=INTEGER},
</if>
<if test="gender != null" >
#{gender,jdbcType=VARCHAR},
</if>
<if test="name != null" >
#{name,jdbcType=VARCHAR},
</if>
<if test="birthday != null" >
#{birthday,jdbcType=DATE},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="cn.edu.cqupt.mybatis.po.UserExample" resultType="java.lang.Integer" >
select count(*) from user
<if test="_parameter != null" >
<include refid="Example_Where_Clause" />
</if>
</select>
<update id="updateByExampleSelective" parameterType="map" >
update user
<set >
<if test="record.id != null" >
id = #{record.id,jdbcType=INTEGER},
</if>
<if test="record.gender != null" >
gender = #{record.gender,jdbcType=VARCHAR},
</if>
<if test="record.name != null" >
name = #{record.name,jdbcType=VARCHAR},
</if>
<if test="record.birthday != null" >
birthday = #{record.birthday,jdbcType=DATE},
</if>
</set>
<if test="_parameter != null" >
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByExample" parameterType="map" >
update user
set id = #{record.id,jdbcType=INTEGER},
gender = #{record.gender,jdbcType=VARCHAR},
name = #{record.name,jdbcType=VARCHAR},
birthday = #{record.birthday,jdbcType=DATE}
<if test="_parameter != null" >
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByPrimaryKeySelective" parameterType="cn.edu.cqupt.mybatis.po.User" >
update user
<set >
<if test="gender != null" >
gender = #{gender,jdbcType=VARCHAR},
</if>
<if test="name != null" >
name = #{name,jdbcType=VARCHAR},
</if>
<if test="birthday != null" >
birthday = #{birthday,jdbcType=DATE},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="cn.edu.cqupt.mybatis.po.User" >
update user
set gender = #{gender,jdbcType=VARCHAR},
name = #{name,jdbcType=VARCHAR},
birthday = #{birthday,jdbcType=DATE}
where id = #{id,jdbcType=INTEGER}
</update>
<resultMap type="cn.edu.cqupt.mybatis.po.UserClasses" id="user_classes_resultmap">
<id column="id" property="id"/>
<result column="gender" property="gender"/>
<result column="name" property="name"/>
<result column="birthday" property="birthday"/>
<association property="classes" javaType="cn.edu.cqupt.mybatis.po.Classes">
<id column="classesid" property="id"/>
<result column="cname" property="cname"/>
</association>
</resultMap>
<select id="selectUserByClasses" parameterType="java.lang.Integer" resultMap="user_classes_resultmap">
select user.*,classes.cname from user
left join classes on user.classesId=classes.id
where user.classesId=#{classedid}
</select>
<resultMap type="cn.edu.cqupt.mybatis.po.User" id="user_class_resultMap2">
<id column="id" property="id"/>
<result column="gender" property="gender"/>
<result column="name" property="name"/>
<result column="birthday" property="birthday"/>
<result column="classesid" property="classesId"/>
</resultMap>
<select id="selectUserClass2" parameterType="java.lang.Integer" resultMap="user_class_resultMap2">
select id,name,gender,birthday,classesid from user
where classesid=#{classedid}
</select>
<resultMap type="cn.edu.cqupt.mybatis.po.User" id="user_alias_resultMap">
<id column="id" property="id"/>
<result column="gender" property="gender"/>
<result column="name" property="name"/>
<result column="birthday" property="birthday"/>
<collection property="aliasList" ofType="cn.edu.cqupt.mybatis.po.Alias">
<id column="aid" property="id"/>
<result column="aname" property="name"/>
</collection>
</resultMap>
<select id="selectUserByAlias" parameterType="java.lang.Integer" resultMap="user_alias_resultMap">
select u.*,a.id aid,a.name aname from user u
left join alias a on a.userid=u.id
where u.id=#{userid}
</select>
</mapper>
2)配置 /testMybatis/src/config/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> <!-- 加载属性文件 --> <properties resource="config/db.properties"> <!--properties中还可以配置一些属性名和属性值 --> <!-- <property name="jdbc.driver" value=""/> --> </properties> <environments default="development"> <environment id="development"> <!-- 使用jdbc事务管理,事务控制由mybatis--> <transactionManager type="JDBC" /> <!-- 数据库连接池,由mybatis管理--> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> <!-- 加载 映射文件 --> <mappers> <package name="cn.edu.cqupt.mybatis.mapper"/> </mappers> </configuration>
3)测试
package cn.edu.cqupt.mybatis.test; import java.io.InputStream; import java.util.ArrayList; import java.util.Date; 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 cn.edu.cqupt.mybatis.mapper.UserMapper; import cn.edu.cqupt.mybatis.po.User; import cn.edu.cqupt.mybatis.po.UserClasses; import cn.edu.cqupt.mybatis.po.UserExample; public class UserMapperTest { private SqlSessionFactory sqlSessionFactory; @Before public void setUp() throws Exception { String resource = "config/SqlMapConfig.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder() .build(inputStream); } @Test public void testSelectByPrimaryKey() throws Exception { SqlSession sqlSession = sqlSessionFactory.openSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); User user = userMapper.selectByPrimaryKey(6); System.out.println(user); } @Test public void testSelectByExample()throws Exception{ SqlSession sqlSession = sqlSessionFactory.openSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); UserExample example = new UserExample(); example.createCriteria().andNameLike("cherry"); List<User> lists = userMapper.selectByExample(example); System.out.println(lists.size()); } @Test public void testUpdateByPrimaryKey()throws Exception{ SqlSession sqlSession = sqlSessionFactory.openSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); User user = userMapper.selectByPrimaryKey(3); user.setName("aa"); user.setBirthday(new Date()); userMapper.updateByPrimaryKey(user); sqlSession.commit(); sqlSession.close(); } @Test public void testInsert()throws Exception{ SqlSession sqlSession = sqlSessionFactory.openSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); User user = new User(); user.setName("lll"); user.setGender("2"); user.setBirthday(new Date()); int count = userMapper.insert(user); sqlSession.commit(); sqlSession.close(); } @Test public void selectUserByClasses(){ SqlSession sqlSession = sqlSessionFactory.openSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); UserClasses uc=userMapper.selectUserByClasses(new Integer(1)); System.out.println(uc.toString()); } @Test public void selectUserClass2(){ SqlSession sqlSession = sqlSessionFactory.openSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); userMapper.selectUserClass2(new Integer(1)); } @Test public void selectUserByAlias(){ SqlSession sqlSession = sqlSessionFactory.openSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); User user = userMapper.selectUserByAlias(new Integer(2)); System.out.println(user.getAliasList().size()); } }
标签:
原文地址:http://www.cnblogs.com/sunshine052697/p/4836121.html