mybatis的增删改查代码如下demo:
User.java

package com.rookie.bigdata.domain; import lombok.Data; import java.io.Serializable; /** * @author * @date 2018/10/21 */ //Data注解可以省略get和set方法 @Data public class User implements Serializable{ // 用户标识 private Integer id; // 用户姓名 private String name; // 用户性别 private String sex; // 用户年龄 private Integer age; // 无参数构造器 public User() { super(); } // 有参数构造器 public User( String name, String sex, Integer age) { super(); this.name = name; this.sex = sex; this.age = age; } }
UserMapper.java
package com.rookie.bigdata.mapper; import com.rookie.bigdata.domain.User; /** * @author * @date 2018/10/21 */ public interface UserMapper { void save(User user); void saveUser(User user); User selectUser(Integer id); void updateUser(User user); void deleteUser(Integer id); }
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="com.rookie.bigdata.mapper.UserMapper"> <insert id="save" parameterType="com.rookie.bigdata.domain.User" useGeneratedKeys="true"> INSERT INTO BS_USER(name,sex,age) VALUES(#{name},#{sex},#{age}) </insert> <!-- parameterType="user"表示该插入语句需要一个user对象作为参数 useGeneratedKeys="true"表示使用自动增长的主键,即使用JDBC的getGeeratedKeys方法获取由数据库生疮内部生成的主键,默认为false keyProperty唯一标记的一个属性,mybatis会通过getGerneratedKeys的返回值设置它的键值--> <insert id="saveUser" parameterType="com.rookie.bigdata.domain.User" useGeneratedKeys="true" keyProperty="id"> INSERT INTO BS_USER(name,sex,age) VALUES(#{name},#{sex},#{age}) </insert> <!-- select操作 parameterType="int"表示该查询语句需要一个int类型的参数 resultType="com.rookie.bigdata.domain.User"表示返回的是一个user对象 --> <select id="selectUser" parameterType="int" resultType="com.rookie.bigdata.domain.User"> SELECT * FROM BS_USER WHERE id = #{id} </select> <!-- update操作 parameterType="com.rookie.bigdata.domain.User"表示该更新语句需要一个user对象作为参数--> <update id="updateUser" parameterType="com.rookie.bigdata.domain.User"> UPDATE BS_USER SET name = #{name},sex = #{sex},age = #{age} WHERE id = #{id} </update> <!-- delete操作 parameterType="int"表示该查询语句需要一个int类型的参数--> <delete id="deleteUser" parameterType="int"> DELETE FROM BS_USER WHERE id = #{id} </delete> </mapper>
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"> <!-- XML 配置文件包含对 MyBatis 系统的核心设置 --> <configuration> <!-- <typeAliases> <typeAlias alias="user" type="com.rookie.bigdata.domain.User"/> </typeAliases>--> <environments default="mysql"> <!-- 环境配置,即连接的数据库。 --> <environment id="mysql"> <!-- 指定事务管理类型,type="JDBC"指直接简单使用了JDBC的提交和回滚设置 --> <transactionManager type="JDBC"/> <!-- dataSource指数据源配置,POOLED是JDBC连接对象的数据源连接池的实现。 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <!-- mappers告诉了MyBatis去哪里找持久化类的映射文件 --> <mappers> <mapper resource="mapper/UserMapper.xml"/> </mappers> </configuration>
测试代码UserMapperTest.java
package com.rookie.bigdata.mapper; import com.rookie.bigdata.domain.User; import org.apache.ibatis.annotations.Mapper; 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 java.io.IOException; import java.io.InputStream; /** * @author * @date 2018/10/21 */ public class UserMapperTest { public SqlSession session; @Before public void before() throws IOException { // 读取mybatis-config.xml文件 InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); // 初始化mybatis,创建SqlSessionFactory类的实例 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder() .build(inputStream); // 创建Session实例 session = sqlSessionFactory.openSession(); } @Test public void saveUser() throws Exception { UserMapper mapper = session.getMapper(UserMapper.class); mapper.saveUser(new User("zhangsan","男",23)); session.commit(); // 关闭Session session.close(); } @Test public void selectUser() throws Exception { UserMapper mapper = session.getMapper(UserMapper.class); User user = mapper.selectUser(5); // 提交事务 session.commit(); // 关闭Session session.close(); System.out.println(user); } @Test public void updateUser() throws Exception { UserMapper mapper = session.getMapper(UserMapper.class); User user = mapper.selectUser(5); user.setAge(21); mapper.updateUser(user); // 提交事务 session.commit(); // 关闭Session session.close(); System.out.println(user); } @Test public void deleteUser() throws Exception { UserMapper mapper = session.getMapper(UserMapper.class); mapper.deleteUser(5); session.commit(); // 关闭Session session.close(); } }
关联查询的代码如下:
Staff.java

package com.rookie.bigdata.domain; import lombok.Data; /** * @author * @date 2018/10/21 */ @Data public class Staff { private Integer id; private String name; private String sex; private Integer age; private Department department; }
Department.java

package com.rookie.bigdata.domain; import lombok.Data; import java.util.List; /** * @author liuxili * @date 2018/10/21 */ @Data public class Department { private Integer id; private String code; private List<Staff> staffs; }
CompanyMapper.java
package com.rookie.bigdata.mapper; import com.rookie.bigdata.domain.Department; import com.rookie.bigdata.domain.Staff; import java.util.List; /** * @author * @date 2018/10/21 */ public interface CompanyMapper { List<Staff> selectStaff(); List<Department> selectDepartment(); }
CompanyMapper.java
<?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.rookie.bigdata.mapper.CompanyMapper"> <!--职工映射对象--> <resultMap id="staffResultMap" type="com.rookie.bigdata.domain.Staff"> <id property="id" column="id"/> <result property="name" column="name"/> <result property="sex" column="sex"/> <result property="age" column="age"/> <!--进行关联映射--> <association property="department" column="depart_id" javaType="com.rookie.bigdata.domain.Department" select="selectID"/> </resultMap> <!--根据ID查询相关部门--> <select id="selectID" resultType="com.rookie.bigdata.domain.Department"> select * from bs_department WHERE id=#{id}; </select> <select id="selectStaff" resultMap="staffResultMap"> SELECT * FROM bs_staff; </select> <resultMap id="departResultMap" type="com.rookie.bigdata.domain.Department"> <id property="id" column="id"/> <result property="code" column="code"/>
<!--javaType:属性对应的类型
ofType:表示集合当中的类型--> <collection property="staffs" javaType="ArrayList" column="id" ofType="com.rookie.bigdata.domain.Staff" select="selectStaffByID"/> </resultMap> <select id="selectStaffByID" resultType="com.rookie.bigdata.domain.Staff"> SELECT * FROM bs_staff WHERE depart_id=#{id} </select> <select id="selectDepartment" resultMap="departResultMap"> select * from bs_department; </select> </mapper>
测试代码CompanyMapperTest.java
package com.rookie.bigdata.mapper; import com.rookie.bigdata.domain.Department; import com.rookie.bigdata.domain.Staff; 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 java.io.IOException; import java.io.InputStream; import java.util.List; import static org.junit.Assert.*; /** * @author * @date 2018/10/21 */ public class CompanyMapperTest { public SqlSession session; @Before public void before() throws IOException { // 读取mybatis-config.xml文件 InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); // 初始化mybatis,创建SqlSessionFactory类的实例 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder() .build(inputStream); // 创建Session实例 session = sqlSessionFactory.openSession(); } @Test public void selectStaff() throws Exception { CompanyMapper mapper = session.getMapper(CompanyMapper.class); List<Staff> staff = mapper.selectStaff(); for (Staff staff1 : staff) { System.out.println(staff1); } session.commit(); session.close(); } @Test public void selectDepartment(){ CompanyMapper mapper = session.getMapper(CompanyMapper.class); List<Department> departments = mapper.selectDepartment(); for (Department department : departments) { List<Staff> staffs = department.getStaffs(); for (Staff staff : staffs) { System.out.println(department); System.out.println(staff); } } } }