select * from `user` where username = #{username} and `password` = #{password};
3.1.4:UserDao
public interface UserDao {
//登录
public User getUserByUsernameAndPassword(String username, String password)throws Exception;
public User getUserbyUid(Integer uid)throws Exception;
}
3.1.5 : UserDaoImpl
public class UserDaoImpl implements UserDao{
@Override
public User getUserByUsernameAndPassword(String username, String password) throws Exception{
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
User user = new User();
user.setUsername(username);
user.setPassword(password);
Object obj = sqlSession.selectOne("haha.getUser", user);
//关闭资源
SqlSessionUtil.close(sqlSession);
return (User)obj;
}
@Override
public User getUserbyUid(Integer uid) throws Exception {
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
Object obj = sqlSession.selectOne("haha.getOne", uid);
SqlSessionUtil.close(sqlSession);
return (User)obj;
}
}
3.1.6 : Test
public class TestMybatis {
@Test
public void test2() throws Exception {
UserDao userDao = new UserDaoImpl();
User user = userDao.getUserbyUid(2);
System.out.println(user);
}
@Test
public void test1() throws Exception {
UserDao userDao = new UserDaoImpl();
User user = userDao.getUserByUsernameAndPassword("张三", "123");
System.out.println(user);
}
}
UserDao:
public int insertUser(User user)throws Exception;
UserDaoImpl:
@Override
public int insertUser(User user) throws Exception {
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
int a = sqlSession.insert("user.insertUser", user);
//手动提交
sqlSession.commit();
//关闭资源
SqlSessionUtil.close(sqlSession);
return a;
}
//user.xml
insert into `user`(uid,username,password,address)
values(null,#{username},#{password},#{address})
3.2.1.2 修改
UserDao:
public int updateUserById(User user)throws Exception;
UserDaoImpl:
@Override
public int updateUserById(User user) throws Exception {
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
int a = sqlSession.update("user.updateUserByUid", user);
//手动提交
sqlSession.commit();
SqlSessionUtil.close(sqlSession);
return a;
//user,xml
update `user` set
username = #{username} , `password` = #{password} , address = #{address}
where uid = #{uid}
}
3.2.1.3 删除
UserDao:
public int deleteUserById(Integer id)throws Exception;
UserDaoImpl:
@Override
public int deleteUserById(Integer id) throws Exception {
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
int a = sqlSession.delete("user.deleteUserByUid", id);
//手动提交
sqlSession.commit();
SqlSessionUtil.close(sqlSession);
return a;
//user,xml
delete from `user` where uid = #{uid}
}
3.2.1.4 分页查询
UserDao:
public List getUserByLimit(Map map)throws Exception;
UserDaoImpl:
@Override
public List getUserByLimit(Map map) throws Exception {
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
List list = sqlSession.selectList("user.getUserByLimit", map);
return list;
//user,xml
测试类:
@Test
public void test7() throws Exception {
Map map = new HashMap<>();
Integer pageNo = 2;
Integer pageSize = 5;
//map集合的key 是 #{名} value是具体值
map.put("startRow",(pageNo-1)*pageSize);
map.put("pageSize",pageSize);
List list = userDao.getUserByLimit(map);
for (User user : list) {
System.out.println(user);
}
}
public interface UserMapper {
//模糊查询带分页
public List getUserByLikeWithLimit(@Param("like") String like ,
@Param("startRow") Integer startRow,
@Param("pageSize") Integer pageSize);
//模拟登录
public User getUserByUserNameAndPassword(@Param("username") String username,
@Param("password") String password);
//根据id查询
public User getUserByUid(Integer uid)throws Exception;
;
//根据id删除
public int deleteUserByUid(Integer uid)throws Exception;
//根据id修改
public int updateUserByUid(User user)throws Exception;
//插入
public int insertUser(User user)throws Exception;
//模糊查询
public List getUserByLike(String like)throws Exception;
}
UserMapper.xml
Test.java
public class TestUserMapper {
@Test
public void test5() throws Exception {
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//调用自己的方法
int startRow = (2-1)*2;
List list = mapper.getUserByLikeWithLimit("张",startRow,2);
for (User user : list) {
System.out.println(user);
}
sqlSession.close();
}
}
select
from `user`
and username =#{username}
and password = #{password}
作用2:级联查询(表关联查询) 一对一查询: mapper接口:
public interface CardMapper {
public Card getUserByCode(String code)throws Exception;
}
CardMapper.xml:
select cid,number,uid from card where number = #{number}
UserMapper.xml:
select * from `user` where uid = #{uid}
单元测试:
@Test
public void test() throws Exception {
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
CardMapper mapper = sqlSession.getMapper(CardMapper.class);
Card card = mapper.getUserByCode("110");
System.out.println(card);
User user = card.getUser();
System.out.println(user);
}
一对多级联查询: UserMapper:
//根据用户id 查询订单
public User getOrdersByUid(Integer uid)throws Exception;
UserMapper.xml
select * from `user` where uid = #{uid}
OrderMapper.xml
select * from `order` where uid = #{uid}
测试类:
@Test
public void test9() throws Exception {
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.getOrdersByUid(14);
List orders = user.getOrders();
for (Order order : orders) {
System.out.println(order);
}
}
根据订单编号找人: OrderMapper接口:
public interface OrderMapper {
//根据订单找人
public Order getUserByCode(String code)throws Exception;
}
OrderMapper.xml
select * from `order` where uid = #{uid}
UserMapper.xml
select * from `user` where uid = #{uid}
测试类:
@Test
public void test1() throws Exception {
1
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
OrderMapper orderMapper = sqlSession.getMapper(OrderMapper.class);
Order order = orderMapper.getUserByCode("DFJ23");
User user = order.getUser();
System.out.println(user);
}
多对多: OrderMapper.java
//根据订单编号查询商品
public Order getProductByCode(String code)throws Exception;
OrderMapper.xml
//根据订单编号查询订单oid 再根据多表itms查对应的pid
select * from `order` where code =#{code}
//根据多个oid找多个订单
select * from order_product_item opi inner join `order` o on opi.oid = o.oid
where opi.pid =#{pid}
ProductMapper.java
//跟据商品名字查订单
public Product getOrderByProductName(String productName)throws Exception;
ProductMapper.xml
//根据多个pid找多个商品
select * from order_product_item opi inner join product p on opi.pid = p.pid
where oid=#{oid}
//根据商品名称查询订单pid 再根据多表itms查对应的oid
select * from `product` where produceName=#{productName}
3.3 注解开发(不太推荐,耦合度高)
public interface UserMapper {
@Select("select * from `user` where username =#{username} and password = #{password}")
public User getUserByUserNameAndPassword(@Param("username") String username,
@Param("password") String password)throws Exception;
@Insert("insert into user(uid,username,password,address) values(null,#{username},#{password},#{address})")
@SelectKey(statement = "select LAST_INSERT_ID()",keyProperty="nameId", before=true, resultType=int.class)
public void insertUser(User user)throws Exception;
}
public interface UserService {
public User login(String username,String password);
public void insertUser(User user);
public void deleteUserById(Integer uid);
public void deletesUsersByUid(int[] ids);
public void updateUserByUid(User user);
public List getAll();
public List getUserByLikeWithLimit(String like ,Integer paegNo,Integer pageSize);
}
serviceImpl实现类:
public class UserServiceImpl implements UserService {
@Override
public User login(String username, String password) {
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
UserQuery example = new UserQuery();
//参数赋值
Criteria c = example.createCriteria();
c.andUsernameEqualTo(username);
c.andPasswordEqualTo(password);
List list = mapper.selectByExample(example);
return list.get(0);
}
@Override
public void insertUser(User user) {
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int a = mapper.insertSelective(user);
sqlSession.commit();
sqlSession.close();
}
@Override
public void deleteUserById(Integer uid) {
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int a = mapper.deleteByPrimaryKey(uid);
}
@Override
public void deletesUsersByUid(int[] ids) {
}
@Override
public void updateUserByUid(User user) {
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.updateByPrimaryKeySelective(user);
}
@Override
public List getAll() {
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
UserQuery example = new UserQuery();
List list = mapper.selectByExample(example);
return list;
}
@Override
public List getUserByLikeWithLimit(String like, Integer pageNo, Integer pageSize) {
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
UserQuery example = new UserQuery();
//赋值页码 和 页大小即可
example.setPageNo(pageNo);
example.setPageSize(pageSize);
//设置条件
Criteria c = example.createCriteria();
c.andUsernameLike("%" + like +"%");
List list = mapper.selectByExample(example);
return list;
}
}
单元测试:
public class TestUser {
UserService userService = new UserServiceImpl();
@Test
public void test7(){
String like = "呵";
Integer pageNo = 1;
Integer pageSize = 5;
List list = userService.getUserByLikeWithLimit(like, pageNo, pageSize);
for (User user : list) {
System.out.println(user);
}
}
@Test
public void test6(){
List list = userService.getAll();
for (User user : list) {
System.out.println(user);
}
}
@Test
public void test5(){
User user =new User();
user.setUid(102);
user.setAddress("小草屋");
userService.updateUserByUid(user);
}
@Test
public void test4(){
userService.deleteUserById(15);
}
@Test
public void test2(){
User user = new User();
user.setUsername("诸葛亮");
user.setPassword("111");
userService.insertUser(user);
}
@Test
public void test1(){
User user = userService.login("关羽", "123");
System.out.println(user);
}
}