mybatis04(注解实现一对一动态sql 的增删改查)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ITw333/article/details/79517765

注:在此文章中加了 jdbc.properties文件,用于设置连接数据库时的一些变量的值

1.javaBean


 

package com.bean;

public class User {



 private Integer id;
 private String username;
 private String password;
 private Integer phone;
 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 String getPassword() {
  return password;
 }
 public void setPassword(String password) {
  this.password = password;
 }
 public Integer getPhone() {
  return phone;
 }
 public void setPhone(Integer phone) {
  this.phone = phone;
 }
 
}

2.log4j.properties

 

# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.com.mapper=DEBUG
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

3.jdbc.properties(对一些变量的设置)

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/mybatis
username=root
password=123456

4.mybatis配置文件

<?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">
   
    <!--1.配置环境 ,默认的环境id为mysql-->
 <configuration>
 
  <!-- 导入 jdbc.properties 引用里面的值-->
  <properties resource="jdbc.properties"/>
  
  <!-- 1.指定mybatis所用日志的具体实现 -->
  <settings>
   <setting name="logImpl" value="LOG4j"/>
  </settings>
  <!-- 起别名  -->
  <typeAliases>
   <typeAlias type="com.bean.User" alias="User"/>
   <!-- 自动在包名下搜索javabean并起别名为 类名的首字母小写 -->
   <!--  <package name="com.bean"/> -->
  </typeAliases>
  <!--2.配置环境 ,默认的环境id为mysql-->
  <environments default="mysql">
   <!--2.2.配置id为mysql的数据库环境 -->
   <environment id="mysql">
    <!-- 2.2.1使用JDBC的事务管理   使用了JDBC的提交和回滚设置-->
    <transactionManager type="JDBC"></transactionManager>
    <!--2.2.2数据库连接池   POOLED是JDBC连接对象的数据源连接池的实现 -->
    <dataSource type="POOLED">
     <property name="driver" value="${driver}"/>
     <property name="url" value="${url}"/>
     <property name="username" value="${username}"/>
     <property name="password" value="${password}"/>
    </dataSource>
   </environment>
  </environments>
  
  <!--3.配置Mapper的位置 -->
  <mappers>
   <mapper class="com.mapper.UserMapper"/>
   <!-- 使用本地文件 -->
   <!-- <mapper url="file:///D:/java/workspaces/mybatis0/src/com/mapper/UserMapper.xml"/> -->
  </mappers>
 </configuration>

5.数据库操作的

package com.mapper;

import java.net.PasswordAuthentication;
import java.util.List;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.DeleteProvider;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.InsertProvider;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.ResultMap;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.SelectProvider;
import org.apache.ibatis.annotations.Update;
import org.apache.ibatis.annotations.UpdateProvider;

import com.bean.User;

public interface UserMapper {

 @InsertProvider(type=UserMapperProvider.class,method="insertUser")
 int addUser(User user);
 
 @DeleteProvider(type=UserMapperProvider.class,method="deleteUser")
 int deleteUserById(@Param("index")int id);
 
 @UpdateProvider(type=UserMapperProvider.class,method="updateUser")
 int updateById(User user);
 
 @SelectProvider(type=UserMapperProvider.class,method="selectAll")
 List<User> selectUser(User user);
 
 @SelectProvider(type=UserMapperProvider.class,method="selectLikeUser")
 List<User> selectUsersBylike(@Param("name")String username);
 
 //如果传递两个参数,就需要使用@Param对参数命名,其中@Param("")括号中的值必须跟sql语句中的一致
 @Select("select * from user where username=#{username} and password=#{password}")
 User selectUserBytwo(@Param("username")String username1,@Param("password")String password1);
}

6.数据库操作时关联的类

package com.mapper;

import java.util.Map;

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.jdbc.SQL;
import org.apache.tools.ant.types.CommandlineJava.SysProperties;

import com.bean.User;

public class UserMapperProvider {



 public String insertUser(final User user) {
  return new SQL(){
   {
    INSERT_INTO("user");
    if (user.getUsername()!=null && user.getUsername()!="")
    {
     VALUES("username",user.getUsername());
    }
    if (user.getPassword()!=null && user.getPassword()!="")
    {
     VALUES("password",user.getPassword());
    }
    if (user.getPhone()!=null && user.getPhone().toString()!="")
    {
     VALUES("phone",user.getPhone().toString());
    }
   }
  }.toString();
 }
 public String deleteUser(final Map<String,Integer> para) {
  SQL sql=new SQL(){
   {
    DELETE_FROM("user");
    WHERE("id=#{index}");
   }
  };
  System.out.println(sql);
  return sql.toString();
 }
 public String updateUser(final User user) {
  SQL sql=new SQL(){
   {
    UPDATE("user");
    if(user.getUsername()!=null&&user.getUsername()!="")
     SET("username=#{username}");
    if(user.getPassword()!=null && user.getPassword()!="")
     SET("password=#{password}");
   }
  };
  return sql.toString();
 }
 public String selectAll(final User user) {
  return new SQL(){
   {
    SELECT("*");
    FROM("user");
    if (user.getUsername()!=null && user.getUsername()!="")
    {
     WHERE("username=#{username}");
    }
   }
  }.toString();
  //另一种写法:
  /*String sql="";
  sql+="select * from user where 1=1 ";
  if (user.getUsername()!=null && user.getUsername()!="")
  {
   sql+="and username=#{username}";
  }
  return sql;*/
 }
 public String selectLikeUser(final Map<String,String> username) {
  return new SQL(){
   {
    SELECT("*");
    FROM("user");
    if(username.get("name")!=null &&username.get("name")!="")
     WHERE("username like concat('%',#{name},'%')");
   }
  }.toString();
 }
}

 

7.增

package com.test;

import java.io.IOException;
import java.io.InputStream;

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.apache.tools.ant.types.CommandlineJava.SysProperties;
import org.junit.Test;

import com.bean.User;
import com.mapper.UserMapper;

public class Test1 {

 @Test
 public void add() throws IOException {
  
  //第一步 读取配置文件mybatis-config.xml
  InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
  //第二步 创建会话工厂
  SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
  //第三步 生成会话
  SqlSession session = sessionFactory.openSession();
  //第四步代理映射(获取mapper接口的代理对象)
  UserMapper userMapper=session.getMapper(UserMapper.class);
  
  User user=new User();
  user.setUsername("'二狗子'");
  user.setPassword("'123456'");
  user.setPhone(110);
  
  int i=userMapper.addUser(user);
  
  if(i>0)
   System.out.println("插入成功");
  else
   System.out.println("插入失败");
  session.commit();
  
  session.close();
 }
}

8.删

package com.test;

import java.io.IOException;
import java.io.InputStream;

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.Test;

import com.mapper.UserMapper;

public class Test2 {

 @Test
 public void delete() throws IOException
 {
  InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
  SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
  SqlSession session = sessionFactory.openSession();
  UserMapper userMapper=session.getMapper(UserMapper.class);
  
  int i=userMapper.deleteUserById(3);
  
  if(i>0)
   System.out.println("删除成功");
  else
   System.out.println("删除失败");
  session.commit();
  session.close();
 }
}

9.改

package com.test;

import java.io.IOException;
import java.io.InputStream;

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.Test;

import com.bean.User;
import com.mapper.UserMapper;

import javassist.expr.NewArray;

public class Test3 {



 @Test
 public void update() throws IOException
 {
  InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
  SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
  SqlSession session = sessionFactory.openSession();
  UserMapper userMapper=session.getMapper(UserMapper.class);
  
  User user=new User();
  user.setId(4);
  user.setUsername("哈哈哈哈");
  user.setPassword("111111");
  int i=userMapper.updateById(user);
  
  if(i>0)
   System.out.println("修改成功");
  else
   System.out.println("修改失败");
  session.commit();
  session.close();
 }
 
}

10.查

package com.test;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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.Test;

import com.bean.User;
import com.mapper.UserMapper;

public class Test4 {

 @Test
 public void select() throws IOException
 {
  InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
  SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 
  SqlSession session = sessionFactory.openSession();
  //第四步代理映射
  UserMapper userMapper=session.getMapper(UserMapper.class);
  User user2=new User();
  user2.setUsername("哈哈哈哈");
  List<User> users=userMapper.selectUser(user2);
  for(User user:users)
  {
   System.out.print(user.getId()+"\t");
   System.out.print(user.getUsername()+"\t");
   System.out.print(user.getPassword()+"\t");
   System.out.println(user.getPhone());
  }
 }
 @Test
 public void selectUserByLike() throws IOException
 {
  InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
  SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 
  SqlSession session = sessionFactory.openSession();
  UserMapper userMapper=session.getMapper(UserMapper.class);
  
  List<User> users=userMapper.selectUsersBylike("玉");
  for(User user:users)
  {
   System.out.print(user.getId()+"\t");
   System.out.print(user.getUsername()+"\t");
   System.out.print(user.getPassword()+"\t");
   System.out.println(user.getPhone());
  }
 }
 @Test
 public void selectUserBytwo() throws IOException
 {
  InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
  SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 
  SqlSession session = sessionFactory.openSession();
  UserMapper userMapper=session.getMapper(UserMapper.class);
  
  User user=userMapper.selectUserBytwo("二狗子", "1111111");
  
  System.out.print(user.getId()+"\t");
  System.out.print(user.getUsername()+"\t");
  System.out.print(user.getPassword()+"\t");
  System.out.println(user.getPhone());
 }
}

猜你喜欢

转载自blog.csdn.net/ITw333/article/details/79517765