上一篇:1、第一个Mybatis程序
@Before
注解(表示在测试方法执行之前执行);@After
注解(表示在测试方法执行之后执行);private SqlSession sqlSession;
private UserDao userDao;
@Before
public void init() {
// 1、获取SqlSession对象
sqlSession = MybatisUtils.getSqlSession();
// 2、获取UserDao的代理对象
userDao = sqlSession.getMapper(UserDao.class);
}
@After
public void destroy() {
// 1、提交事务(Mybatis的插入、删除、更新等采用了事务管理)
sqlSession.commit();
// 2、释放资源
sqlSession.close();
}
编写Dao/Mapper接口对应的方法
// 1、增加用户
int addUser(User user);
编写方法对应的Mapper.xml中的SQL语句
<insert id="addUser" parameterType="com.mybatis.pojo.User">
insert into user (username, password, sex, birthday, address) values (#{username}, #{password}, #{sex}, #{birthday}, #{address})
insert>
编写测试方法及进行测试
@Test
public void addUser() {
// 1、执行添加方法
userDao.addUser(new User(null,"黄瑾晨","h321456","男",new Date(),"遵义市-红花岗区"));
}
编写Dao/Mapper接口对应的方法
// 2、根据id删除用户
int deleteUser(int id);
编写方法对应的Mapper.xml中的SQL语句
<delete id="deleteUser" parameterType="int">
delete from user where id = #{id}
delete>
编写测试方法及进行测试
@Test
public void deleteUser() {
// 1、执行根据id删除用户方法
userDao.deleteUser(5);
}
编写Dao/Mapper接口对应的方法
// 3、更改用户信息
int updateUser(User user);
编写方法对应的Mapper.xml中的SQL语句
<update id="updateUser" parameterType="com.mybatis.pojo.User">
update user set username=#{username},password=#{password},sex=#{sex},birthday=#{birthday},address=#{address} where id=#{id}
update>
编写测试方法及进行测试
@Test
public void updateUser() {
User user = new User();
user.setId(4);
user.setUsername("苏安然");
user.setPassword("s778855");
user.setSex("男");
user.setBirthday(new Date());
user.setAddress("贵阳市-观山湖区");
// 执行更新用户信息方法
userDao.updateUser(user);
}
编写Dao/Mapper接口对应的方法
// 4、查询所有用户信息
List<User> findAll();
// 5、根据id查找用户信息
User findById(int id);
编写方法对应的Mapper.xml中的SQL语句
<select id="findAll" resultType="com.mybatis.pojo.User">
select * from user
select>
<select id="findById" parameterType="int" resultType="com.mybatis.pojo.User">
select * from user where id = #{id}
select>
编写测试方法及进行测试
@Test
public void findAll() {
// 1、执行查询所有方法
List<User> users = userDao.findAll();
// 2、打印查询结果
for(User user: users) {
System.out.println(user);
}
}
@Test
public void findById() {
// 1、执行根据id查询用户方法
User users = userDao.findById(3);
// 2、打印查询结果
System.out.println(users);
}
当实体类参数过多、数据库表字段过多时,我们可以考虑使用Map;
编写Dao/Mapper接口
// 6、使用Map传参查询用户
User findByNameAndPwd(Map<String, Object> map);
编写Mapper.xml
<select id="findByNameAndPwd" parameterType="map" resultType="com.mybatis.pojo.User">
select * from user where username = #{name} and password = #{pwd}
select>
编写测试方法及进行测试
@Test
public void findByNameAndPwd() {
Map<String, Object> map = new HashMap<String, Object>();
map.put("name", "苏瑞韩");
map.put("pwd", "s653249");
User user = userDao.findByNameAndPwd(map);
System.out.println(user);
}
Java代码执行时,传入通配符% %
List<User> users = userDao.findLike("%苏%");
<select id="findLike" parameterType="string" resultType="com.mybatis.pojo.User">
select * from user where username like #{value}
select>
在SQL拼接中使用通配符(不安全,存在SQL注入问题)
List<User> users = userDao.findLike("苏");
<select id="findLike" parameterType="string" resultType="com.mybatis.pojo.User">
select * from user where username like "%"#{value}"%"
select>
执行findLike()模糊查询
@Test
public void findLike() {
List<User> users = userDao.findLike("%苏%");
// List users = userDao.findLike("苏");
for (User user:users) {
System.out.println(user);
}
}
UserDao.java
/**
* 用户持久层
*/
public interface UserDao {
// 1、增加用户
int addUser(User user);
// 2、根据id删除用户
int deleteUser(int id);
// 3、更改用户信息
int updateUser(User user);
// 4、查询所有用户信息
List<User> findAll();
// 5、根据id查找用户信息
User findById(int id);
// 6、使用Map传参查询用户
User findByNameAndPwd(Map<String, Object> map);
// 7、模糊查询
List<User> findLike(String value);
}
UserMapper.xml
<mapper namespace="com.mybatis.dao.UserDao">
<insert id="addUser" parameterType="com.mybatis.pojo.User">
insert into user (username, password, sex, birthday, address) values (#{username}, #{password}, #{sex}, #{birthday}, #{address})
insert>
<delete id="deleteUser" parameterType="int">
delete from user where id = #{id}
delete>
<update id="updateUser" parameterType="com.mybatis.pojo.User">
update user set username=#{username},password=#{password},sex=#{sex},birthday=#{birthday},address=#{address} where id=#{id}
update>
<select id="findAll" resultType="com.mybatis.pojo.User">
select * from user
select>
<select id="findById" parameterType="int" resultType="com.mybatis.pojo.User">
select * from user where id = #{id}
select>
<select id="findByNameAndPwd" parameterType="map" resultType="com.mybatis.pojo.User">
select * from user where username = #{name} and password = #{pwd}
select>
<select id="findLike" parameterType="string" resultType="com.mybatis.pojo.User">
select * from user where username like #{value}
select>
mapper>
UserDaoTest.java
public class UserDaoTest {
private SqlSession sqlSession;
private UserDao userDao;
@Before
public void init() {
// 1、获取SqlSession对象
sqlSession = MybatisUtils.getSqlSession();
// 2、获取UserDao的代理对象
userDao = sqlSession.getMapper(UserDao.class);
}
@After
public void destroy() {
// 1、提交事务(Mybatis的插入、删除、更新等采用了事务管理)
sqlSession.commit();
// 2、释放资源
sqlSession.close();
}
@Test
public void addUser() {
// 1、执行添加方法
userDao.addUser(new User(null,"黄瑾晨","h321456","男",new Date(),"遵义市-红花岗区"));
}
@Test
public void deleteUser() {
// 1、执行根据id删除用户方法
userDao.deleteUser(5);
}
@Test
public void updateUser() {
User user = new User();
user.setId(4);
user.setUsername("苏安然");
user.setPassword("s778855");
user.setSex("男");
user.setBirthday(new Date());
user.setAddress("贵阳市-观山湖区");
// 执行更新用户信息方法
userDao.updateUser(user);
}
@Test
public void findAll() {
// 1、执行查询所有方法
List<User> users = userDao.findAll();
// 2、打印查询结果
for(User user: users) {
System.out.println(user);
}
}
@Test
public void findById() {
// 1、执行根据id查询用户方法
User users = userDao.findById(3);
// 2、打印查询结果
System.out.println(users);
}
@Test
public void findByNameAndPwd() {
Map<String, Object> map = new HashMap<String, Object>();
map.put("name", "苏瑞韩");
map.put("pwd", "s653249");
User user = userDao.findByNameAndPwd(map);
System.out.println(user);
}
@Test
public void findLike() {
List<User> users = userDao.findLike("%苏%");
// List users = userDao.findLike("苏");
for (User user:users) {
System.out.println(user);
}
}
}
以上为Mybatis简单的CRUD操作!