在mybatis中,在较简单且不易产生变更(即更改sql)时,使用注解比xml要简单许多,接下来演示一下如何使用注解对单表进行简单的增删改查操作。
1、项目结构
2、配置文件
resources下的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>
<!--配置别名-->
<typeAliases>
<package name="com.cph.domain"/>
</typeAliases>
<!--配置环境-->
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.driver"/>
//此处b_mybatis为数据库名
<property name="url" value="jdbc:mysql://localhost:3306/b_mybatis"/>
//username,password根据自己数据库填写
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!--指定带有注解的dao接口所在位置-->
<mappers>
<package name="com.cph.dao"/>
</mappers>
</configuration>
3、
- domain下的user实体类
- dao下的IUserDao接口
package com.cph.dao;
import com.cph.domain.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;
public interface IUserDao {
/**
* 查询所有
*/
@Select("select * from user")
List<User> findAll();
/**
* 模糊查询
*/
@Select("Select * from user where username like '%${value}%'")
List<User> findAllByName(String username);
/**
* 查询单个
*/
@Select("select * from user where id = #{id}")
User findOne(Integer userId);
/**
* 查询数量
*/
@Select("select count(*) from user")
int findCount();
/**
* 增加数据
*/
@Insert("insert into user (username,address,sex,birthday) values (#{username},#{address},#{sex},#{birthday})")
void addUser(User user);
/**
* 更新数据
* 此处只写了username和address
*/
@Update("update user set username = #{username},address = #{address} where id = #{id}")
void updateUser(User user);
/**
* 删除数据
*/
@Delete("delete from user where id = #{id}")
void delete(Integer userId);
}
- 测试类
package com.cph.test; import com.cph.dao.IUserDao; import com.cph.domain.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.IOException; import java.io.InputStream; import java.util.Date; import java.util.List; public class TestCrud { private InputStream in; private SqlSessionFactory factory; private SqlSession session; private IUserDao userDao; @Before public void init() throws Exception{ in = Resources.getResourceAsStream("SqlMapConfig.xml"); factory = new SqlSessionFactoryBuilder().build(in); session = factory.openSession(); userDao = session.getMapper(IUserDao.class); } @After public void destroy() throws IOException { session.commit(); session.close(); in.close(); } //查询所有 @Test public void testFindAll(){ List<User> users= userDao.findAll(); for(User user : users){ System.out.println(user); } } //模糊查询 @Test public void testFindAllByName(){ List<User> users = userDao.findAllByName("王"); for(User user : users){ System.out.println(user); } } //查单个 @Test public void testFindOne(){ User user = userDao.findOne(41); System.out.println(user); } //查数量 @Test public void testFindCount(){ int count = userDao.findCount(); System.out.println(count); } //增加 @Test public void testAddUser(){ User user = new User(); user.setUsername("wudii"); user.setAddress("江苏省吴迪市"); user.setBirthday(new Date()); user.setSex("男"); userDao.addUser(user); } //删除 @Test public void testDeleteUser(){ userDao.delete(43); } //更新 @Test public void testUpdateUser(){ User user = new User(); user.setId(41); user.setUsername("沙雕"); user.setAddress("海定区"); userDao.updateUser(user); } }