Mybatis学习笔记(六)

mac2025-08-03  3

Mybatis注解开发CURD

一、Mybatis注解开发的环境搭建

pojo类

package com.how2java.pojo; import java.io.Serializable; import java.util.Date; public class User implements Serializable{ private Integer id; private String username; private Date birthday; private String sex; private String address; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "User{" + "id=" + id + ", username='" + username + '\'' + ", birthday=" + birthday + ", sex='" + sex + '\'' + ", address='" + address + '\'' + '}'; } }

dao接口

package com.how2java.dao; import com.how2java.pojo.User; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; import java.util.List; /** * 在Mybatis中CURD有四个注解 * @Sslect, @Insert, @Update, @Delete */ public interface IUserDao { /** * 查询所有用户信息 * @return */ @Select("select * from user") List<User> findAll(); /** * 保存用户信息 * @param user */ @Insert("insert into user(username, birthday, sex, address) values(#{username}, #{birthday}, #{sex}, #{address})") void save(User user); /** * 更新用户信息 * @param user */ @Update("update user set username = #{username}, birthday = #{birthday}, sex = #{sex}, address = #{address} where id = #{id}") void update(User user); /** * 根据id删除用户信息 * @param id */ @Delete("delete from user where id = #{id}") void delete(Integer id); /** * 根据id查询用户信息 * @param id * @return */ @Select("select * from user where id = #{id}") User findById(Integer id); /** * 根据名称模糊查询用户信息 * @param name * @return */ // @Select("select * from user where username like #{username}") @Select("select * from user where username like '%${value}%'") List<User> findByName(String name); /** * 查询用户总记录条数 * @return */ @Select("select count(*) from user") int findTotal(); }

jdbcConfig.properties

jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF-8 jdbc.username=root jdbc.password=admin

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="jdbcConfig.properties"></properties> <!--配置别名--> <typeAliases> <package name="com.how2java.pojo"></package> </typeAliases> <!--配置环境--> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"></property> <property name="url" value="${jdbc.url}"></property> <property name="username" value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"></property> </dataSource> </environment> </environments> <!--引入指定带有注解的dao接口所在位置--> <mappers> <package name="com.how2java.dao"></package> </mappers> </configuration>

二、Mybatis注解开发的测试

TestAnnotationCRUD

package com.how2java; import com.how2java.dao.IUserDao; import com.how2java.pojo.User; 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 java.io.InputStream; import java.util.List; public class TestAnnotationCRUD { private InputStream in; private SqlSessionFactory factory; private SqlSession sqlSession; private IUserDao userDao; @Before public void init() throws Exception { in = Resources.getResourceAsStream("SqlMapConfig.xml"); factory = new SqlSessionFactoryBuilder().build(in); sqlSession = factory.openSession(); userDao = sqlSession.getMapper(IUserDao.class); } @After public void destory() throws Exception { sqlSession.commit(); sqlSession.close(); in.close(); } @Test public void testFindAll() throws Exception { List<User> users = userDao.findAll(); for(User user : users) { System.out.println(user); } } @Test public void testSave() throws Exception { User user = new User(); user.setUsername("赵六"); user.setAddress("山西省太原市"); userDao.save(user); } @Test public void testUpdate() throws Exception { User user = new User(); user.setId(6); user.setUsername("赵一"); userDao.update(user); } @Test public void delete() throws Exception { userDao.delete(11); } @Test public void findById() throws Exception { User user = userDao.findById(2); System.out.println(user); } @Test public void findByName() throws Exception { // List<User> users = userDao.findByName("%一%"); List<User> users = userDao.findByName("一"); for(User user : users) { System.out.println(user); } } @Test public void findTotal() throws Exception { int total = userDao.findTotal(); System.out.println(total); } }

Mybatis注解建立实体类属性和数据库表列的对应关系

User.java

package com.how2java.pojo; import java.io.Serializable; import java.util.Date; public class User implements Serializable{ private Integer userId; private String userName; private Date userBirthday; private String userSex; private String userAddress; public Integer getUserId() { return userId; } public void setUserId(Integer userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public Date getUserBirthday() { return userBirthday; } public void setUserBirthday(Date userBirthday) { this.userBirthday = userBirthday; } public String getUserSex() { return userSex; } public void setUserSex(String userSex) { this.userSex = userSex; } public String getUserAddress() { return userAddress; } public void setUserAddress(String userAddress) { this.userAddress = userAddress; } @Override public String toString() { return "User{" + "userId=" + userId + ", userName='" + userName + '\'' + ", userBirthday=" + userBirthday + ", userSex='" + userSex + '\'' + ", userAddress='" + userAddress + '\'' + '}'; } }

IUserDao.java

package com.how2java.dao; import com.how2java.pojo.User; import org.apache.ibatis.annotations.*; import java.util.List; public interface IUserDao { /** * 查询所有用户信息 * @return */ @Select("select * from user") @Results(id = "userMap", value={ @Result(id = true, column = "id", property = "userId"), @Result(column = "username", property = "userName"), @Result(column = "birthday", property = "userBirthday"), @Result(column = "sex", property = "userSex"), @Result(column = "address", property = "userAddress"), }) List<User> findAll(); /** * 根据id查询用户信息 * @param id * @return */ @Select("select * from user where id = #{id}") // @ResultMap(value = {"userMap"}) @ResultMap("userMap") User findById(Integer id); /** * 根据名称模糊查询用户信息 * @param name * @return */ @Select("select * from user where username like #{username}") @ResultMap("userMap") List<User> findByName(String name); }

TestAnnotation.java

package com.how2java; import com.how2java.dao.IUserDao; import com.how2java.pojo.User; 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 java.io.InputStream; import java.util.List; public class TestAnnotation { private InputStream in; private SqlSessionFactory factory; private SqlSession sqlSession; private IUserDao userDao; @Before public void init() throws Exception { in = Resources.getResourceAsStream("SqlMapConfig.xml"); factory = new SqlSessionFactoryBuilder().build(in); sqlSession = factory.openSession(); userDao = sqlSession.getMapper(IUserDao.class); } @After public void destory() throws Exception { sqlSession.commit(); sqlSession.close(); in.close(); } @Test public void findAll() throws Exception { List<User> users = userDao.findAll(); for(User user : users) { System.out.println(user); } } @Test public void findById() throws Exception { User user = userDao.findById(2); System.out.println(user); } @Test public void findByName() throws Exception { List<User> users = userDao.findByName("%一%"); for(User user : users) { System.out.println(user); } } }
最新回复(0)