<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.3.0</version> </dependency> </dependencies>
1.框架结构
[img]
[/img]
2.创建User实体
private int id; private String name; private String password; private String telPhone; private String email;
set,get方法省略。。。
3.mybatis-config.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,settings,typeAliases,typeHandlers,objectFactory,objectWrapperFactory,plugins,environments,databaseIdProvider,mappers --> <!-- 方式一 --> <!-- <typeAliases> <typeAlias type="com.yxhweb.entity.User" alias="user" /> </typeAliases> --> <!-- 方式二(开发使用) --> <typeAliases> <package name="com.yxhweb.entity"/> </typeAliases> <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:3308/db_mybatis" /> <property name="username" value="root" /> <property name="password" value="root" /> </dataSource> </environment> </environments> <mappers> <mapper resource="com/yxhweb/mappers/UserMapper.xml" /> <!-- <package name="com.yxhweb.mappers" /> --> </mappers> </configuration>
4.编写UserMapper.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"> <!-- 添加 --> <insert id="add" useGeneratedKeys="true" keyColumn="id" keyProperty="id" parameterType="user"> INSERT INTO t_user(NAME,PASSWORD,telPhone,email) VALUES(#{name},#{password},#{telPhone},#{email}) </insert> <!-- 删除 --> <insert id="deleteById" parameterType="int" > delete from t_user where id=#{id} </insert> <!-- 根据id查询 --> <!-- 当传入的参数为一个是id的名称随便写,如#{xxxxx} resultType:使用了别名的方式,如果使用package的方式,对应实体的名称,首字母小写 --> <select id="getById" parameterType="int" resultType="user"> select id,name,password,telPhone,email from t_user where id=#{id} </select> <!-- resultMap:若表的列名(别名)与实体类的属性名不一致,就不能使用resultType,此时使用resultMap元素来做列名与属性名之间的映射 --> <!-- 学生实体的属性与学生列表名的映射 --> <resultMap id="UserResultMap" type="user"> <id property="id" column="id"/> <result property="name" column="name"/> <result property="password" column="password"/> <result property="telPhone" column="telPhone"/> <result property="email" column="email"/> </resultMap> <select id="getById2" parameterType="int" resultMap="UserResultMap"> select id,name,password,telPhone,email from t_user where id=#{id} </select> <!-- 根据id修改 --> <update id="update" parameterType="user"> update t_user set name=#{name},password=#{password},telPhone=#{telPhone},email=#{email} where id=#{id} </update> </mapper>
5.编写测试方法
package com.yxhweb.test; import java.io.Reader; 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.After; import org.junit.Before; import org.junit.Test; import com.yxhweb.entity.User; public class UserTest { SqlSession session=null; @Before public void setUp() throws Exception { Reader reader=Resources.getResourceAsReader("mybatis-config.xml"); SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader); session=factory.openSession(); } @After public void tearDown() throws Exception { session.close(); } /** * 添加测试 */ @Test public void add() { User user=new User("dd", "dd", "12345678912", "[email protected]"); //调用sql语句时,使用 “命名空间.SQL语句id” 的形式 int count=session.insert("user.add",user); session.commit();//提交事务 System.out.println("受影响的条数----->"+count+"返回插入的userId----->"+user.getId()); } /** * 删除测试 */ @Test public void delete() { //调用sql语句时,使用 “命名空间.SQL语句id” 的形式 int count=session.delete("user.deleteById",8); session.commit();//提交事务 System.out.println("受影响的条数----->"+count); } /** *根据id查询测试 */ @Test public void getById() { //调用sql语句时,使用 “命名空间.SQL语句id” 的形式 User user=session.selectOne("user.getById",1); System.out.println("查询到的结果"+user.getName()); } /** * 使用resultMap的方式 */ @Test public void getById2() { //调用sql语句时,使用 “命名空间.SQL语句id” 的形式 User user=session.selectOne("user.getById2",1); System.out.println("查询到的结果"+user.getName()); } /** * 修改测试 */ @Test public void update() { User user=session.selectOne("user.getById2",1); user.setName("aa1"); int count=session.update("user.update",user); session.commit(); System.out.println("查询到的结果"+count); } }
源码地址:链接:http://pan.baidu.com/s/1jHrcPWq 密码:v45h