小言_互联网的博客

Mybatis 基于 xml 的简单增删改查

264人阅读  评论(0)

Mybatis 基于xml的简单增删改查

准备

1. 创建一个Maven工程

2. 添加pom依赖

<dependencies>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.47</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.2.6</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-core</artifactId>
        <version>1.3.2</version>
    </dependency>
</dependencies>

3. 在src/main/resources下创建log4j.properties文件,内容如下

# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE            debug   info   warn error fatal
log4j.rootCategory=debug, CONSOLE, LOGFILE

# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE

# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d:\axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

4. 在src/main/resources下创建mydbconfig.properties 文件,内容如下

db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/你的数据库名
db.username=root
db.password=root

5. 在src/main/java/下的com.beans包创建实体类 UserBean

public class UserBean {
	private Integer id;
	private String name;
	private String email;
	private Integer age;
    <!-- getset方法自行实现 -->
}

6. 在src/main/java/下的com.mapper包创建持久层接口 UserMapper

public interface UserMapper {
	  
}

7. 在src/main/resources/mapping下创建持久层接口UserMapper的映射文件UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper  
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace 中填写持久层接口的全限定类名-->
<mapper namespace="com.mapper.UserMapper">
	
</mapper>

8. 在src/main/resources下创建mydbconfig.propertiesmybatis-config.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="mydbconfig.properties" />	
	 <environments default="development">    
	       <environment id="development">  
	           <transactionManager type="JDBC"/>  
	           <dataSource type="POOLED">   
	               <property name="driver" value="${db.driver}"/>  
	               <property name="url" value="${db.url}"/>  
	               <property name="username" value="${db.username}" />  
	               <property name="password" value="${db.password}" />  
	           </dataSource>  
	       </environment>  
	  </environments> 	
     <!---->
	 <mappers>
	  	<mapper resource="mapping/UserMapper.xml"></mapper> 
	 </mappers>	
</configuration>

一、 增加

持久层接口中增加 insertUser 方法

//持久层接口中增加 insertUser 方法
public interface UserMapper {
    //返回一个true or false 添加成功为true,失败为false
	public boolean insertUser(UserBean ub); 
}

映射文件UserMapper.xml实现持久层接口中的方法 insertUser

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper  
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace 中填写持久层接口的全限定类名-->
<mapper namespace="com.mapper.UserMapper">
    <!-- 实现持久层接口中的方法 insertUser id为方法名-->
	<insert id="insertUser" parameterType="com.beans.UserBean">
        insert into user (name,age,email) values (#{name},#{age},#{email})
    </insert>
</mapper>

二、 删除

持久层接口中增加 deleteUserById方法

//持久层接口中增加 insertUser 方法
public interface UserMapper {
    //返回一个true or false 添加成功为true,失败为false
	public boolean insertUser(UserBean ub); 
    //返回一个true or false 删除成功为true,失败为false
    public boolean deleteUserById(Integer id);
}

映射文件UserMapper.xml中实现持久层接口中的方法 deleteUserById

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper  
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace 中填写持久层接口的全限定类名-->
<mapper namespace="com.mapper.UserMapper">
     <!-- 实现持久层接口中的方法 insertUser id为方法名-->
	<insert id="insertUser" parameterType="com.beans.UserBean">
        insert into user (name,age,email) values (#{name},#{age},#{email})
    </insert>
     <!-- 实现持久层接口中的方法 deleteUserById id为方法名--> 
    <delete id="deleteUserById" parameterType="Integer">
        delete from user where id = #{id}
    </delete>
</mapper>

三、修改

持久层接口中增加 updateUser方法

//持久层接口中增加 updateUser 方法
public interface UserMapper {
    //返回一个true or false 添加成功为true,失败为false
	public boolean insertUser(UserBean ub); 
    //返回一个true or false 删除成功为true,失败为false
    public boolean deleteUserById(Integer id);
    //返回一个true or false 修改成功为true,失败为false
    public boolean updateUser(UserBean ub);
}

映射文件UserMapper.xml实现持久层接口中的方法 updateUser

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper  
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace 中填写持久层接口的全限定类名-->
<mapper namespace="com.mapper.UserMapper">
     <!-- 实现持久层接口中的方法 insertUser id为方法名-->
	<insert id="insertUser" parameterType="com.beans.UserBean">
        insert into user (name,age,email) values (#{name},#{age},#{email})
    </insert>
     <!-- 实现持久层接口中的方法 deleteUserById id为方法名--> 
    <delete id="deleteUserById" parameterType="Integer">
        delete from user where id = #{id}
    </delete>
    <!-- 实现持久层接口中的方法 updateUser id为方法名-->
    <update id="updateUser" parameterType="com.beans.UserBean">
		update user set name = #{name},age = #{age},email = #{email} where id = #{id}
	</update>
</mapper>

四、查询

基础查询

持久层接口中增加 getAllUser方法
//持久层接口中增加 updateUser 方法
public interface UserMapper {
    //返回一个true or false 添加成功为true,失败为false
	public boolean insertUser(UserBean ub); 
    //返回一个true or false 删除成功为true,失败为false
    public boolean deleteUserById(Integer id);
    //返回一个true or false 修改成功为true,失败为false
    public boolean updateUser(UserBean ub);
    //返回一个集合,元素为 UserBean
    public List<UserBean> getAllUser();
}
映射文件UserMapper.xml实现持久层接口中的方法 getAllUser
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper  
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace 中填写持久层接口的全限定类名-->
<mapper namespace="com.mapper.UserMapper">
     <!-- 实现持久层接口中的方法 insertUser id为方法名-->
	<insert id="insertUser" parameterType="com.beans.UserBean">
        insert into user (name,age,email) values (#{name},#{age},#{email})
    </insert>
     <!-- 实现持久层接口中的方法 deleteUserById id为方法名--> 
    <delete id="deleteUserById" parameterType="Integer">
        delete from user where id = #{id}
    </delete>
    <!-- 实现持久层接口中的方法 updateUser id为方法名-->
    <update id="updateUser" parameterType="com.beans.UserBean">
		update user set name = #{name},age = #{age},email = #{email} where id = #{id}
	</update>
    <!-- 实现持久层接口中的方法 getAllUser id为方法名-->
    <select id="getAllUser" resultType="com.beans.UserBean">
        select * from user
    </select>
</mapper>

模糊查询

持久层接口中增加 getListUserLikeName方法
//持久层接口中增加 updateUser 方法
public interface UserMapper {
    //返回一个true or false 添加成功为true,失败为false
	public boolean insertUser(UserBean ub); 
    //返回一个true or false 删除成功为true,失败为false
    public boolean deleteUserById(Integer id);
    //返回一个true or false 修改成功为true,失败为false
    public boolean updateUser(UserBean ub);
    //返回一个集合,元素为 UserBean
    public List<UserBean> getAllUser();
    //返回一个集合 参数为姓名 实现模糊查找
    public List<UserBean> getListUserLikeName(String name);
}
映射文件UserMapper.xml实现持久层接口中的方法 getAllUser
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper  
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mapper.UserMapper">
	 <!-- 实现持久层接口中的方法 insertUser id为方法名-->
	<insert id="insertUser" parameterType="com.beans.UserBean">
        insert into user (name,age,email) values (#{name},#{age},#{email})
    </insert>
     <!-- 实现持久层接口中的方法 deleteUserById id为方法名--> 
    <delete id="deleteUserById" parameterType="Integer">
        delete from user where id = #{id}
    </delete>
    <!-- 实现持久层接口中的方法 updateUser id为方法名-->
    <update id="updateUser" parameterType="com.beans.UserBean">
		update user set name = #{name},age = #{age},email = #{email} where id = #{id}
	</update>
    <!-- 实现持久层接口中的方法 getAllUser id为方法名-->
    <select id="getAllUser" resultType="com.beans.UserBean">
        select * from user
    </select>
     <!-- 实现持久层接口中的方法 getListUserLikeName id为方法名 利用concat函数防止sql注入 -->
    <select id="getListUserLikeName" parameterType="String"   		          resultType="com.beans.UserBean">
		select * from user where name like concat('%',#{name},'%')
	</select>
</mapper>

五、测试

public class JunitTest {
	SqlSession sqlSession = null;
	UserMapper userMapper = null;
	@Before
	public void init() {
		// 1.加载类路径下的配置文件
		// 2.InputStream in= Resources.getResourceAsStream("mybatis-config.xml");
		InputStream in = Test.class.getClassLoader().getResourceAsStream("mybatis-config.xml");
		// 3.创建SqlSessionFactory的构建者对象
		SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
		// 4.使用构建者对象创建工厂对象SqlSessionFactory
		SqlSessionFactory factory = builder.build(in);
		// 5.使用SqlSessionFactory产生sqlSession对象
		sqlSession = factory.openSession();
		// 6.使用sqlSession创建接口userMapper的代理对象
		userMapper = sqlSession.getMapper(UserMapper.class);
	}
	@After
	public void destory() {
        // 提交事务
		sqlSession.commit();
        // 关闭
		sqlSession.close();
	}
	@Test
	public void testInsert() {
		UserBean ub = new UserBean();
		ub.setName("ttt");
		ub.setAge(12);
		ub.setEmail("ttt@qq.com");
		Integer res = userMapper.insertUser(ub); ///调用方法
		if (res < 0) {
			System.out.println("添加失败");
		} else {
			System.out.println("添加成功");
			System.out.println("自增Id为:" + res);
		}
	}
    // 其他方法自行实现吧
}

本人公众号,欢迎交流


转载:https://blog.csdn.net/hwy499/article/details/104851219
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场