当前位置: 首页 > news >正文

1核2g 做网站贴吧推广

1核2g 做网站,贴吧推广,投资做网易bobo一样的社区视频网站大概需要多少资金,邢台本地头条新闻目录 1 配置 MyBatis 方式 1.1 XML 配置文件 1.2 Java 注解配置 1.3. Java API 配置 2 在 MySQL 中创建一张表 3 创建一个基于 Maven 的 JavaWeb 工程 4 编写 User 实体类 5 创建 Mybatis 全局配置文件 6 编写一个 DAO 或 Mapper 接口 7 编写 SQL 映射配置文件&#…

目录

1 配置 MyBatis 方式

1.1 XML 配置文件

1.2 Java 注解配置

1.3. Java API 配置

2 在 MySQL 中创建一张表

3 创建一个基于 Maven 的 JavaWeb 工程

4 编写 User 实体类

5 创建 Mybatis 全局配置文件

6 编写一个 DAO 或 Mapper 接口

7 编写 SQL 映射配置文件(重要)

8 加载映射文件

9 导入日志文件

10 创建 MyBatisTest 测试类

11 参考文档


1 配置 MyBatis 方式

MyBatis 可以通过以下三种方式来创建和配置

1.1 XML 配置文件

        最常见的方式是使用 XML 配置文件来配置 MyBatis。在 XML 配置文件中,可以定义数据源、映射文件的位置、类型别名、插件等信息。XML 配置文件通常包括 MyBatis 的全局配置和映射文件的配置。以下是一个简单的 XML 配置文件示例:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mydatabase"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><mappers><mapper resource="com/example/mapper/ExampleMapper.xml"/></mappers>
</configuration>

1.2 Java 注解配置

        从 MyBatis 3.4.1 版本开始,MyBatis 支持使用 Java 注解来配置映射关系。可以使用 @MapperScan 注解来指定 Mapper 接口所在的包,也可以使用 @Mapper 注解来标记 Mapper 接口。以下是一个简单的 Java 注解配置示例:

@Configuration
@MapperScan("com.example.mapper")
public class MyBatisConfig {// 数据源配置// 其他配置...
}

1.3. Java API 配置

        除了使用 XML 配置文件和 Java 注解外,MyBatis 还支持使用 Java API 来进行配置。通过编写 Java 代码,可以动态地创建 SqlSessionFactory 对象,并且进行各种配置。以下是一个简单的 Java API 配置示例:

DataSource dataSource = getDataSource(); // 获取数据源
TransactionFactory transactionFactory = new JdbcTransactionFactory();
Environment environment = new Environment("development", transactionFactory, dataSource);
Configuration configuration = new Configuration(environment);
configuration.addMapper(MyMapper.class);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);

2 在 MySQL 中创建一张表

drop table if exists person; 
create table person (
id int(10) primary key auto_increment, #主键,自动增长
name varchar(14) unique not null, #该行不重复,不为空
age int,
sex char(10) default '女' # 没有插入该列,填入默认值"女"
)charset=utf8; #utf-8 编码#多行插入
insert into person(name, age, sex) values
('西施', 18, '女'),
('大乔', 32, null),
('王昭君', 24, null);insert into person(name,age) values('赵飞燕',27);
insert into person(name,age) values('虞姬', 25);
insert into person(id,name,age) values(9, '貂蝉', 26);

3 创建一个基于 Maven 的 JavaWeb 工程

可以参考以下博文:

IDEA 2023.2 配置 JavaWeb 工程-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/zjs246813/article/details/136199249?spm=1001.2014.3001.5501导入依赖

<dependencies><!-- Mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></dependency><!-- mysql驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.21</version></dependency><!-- 日志处理 --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><!-- 单元测试 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency>
</dependencies>

4 编写 User 实体类

public class User {private Integer id;private String name;private Integer age;private String sex;// Getter、Setter、toString() 方法省略
}

5 创建 Mybatis 全局配置文件

创建 mysql.properties 配置文件

study 改为自己的数据库名

root 是数据库用户名

123456 是数据库用户密码

驱动器一般为 com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/study?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
name=root
password=123456
driver=com.mysql.cj.jdbc.Driver

在 resources 目录中,创建 Mybatis 的全局配置文件 mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!-- 通过properties标签,读取java配置文件的内容 --><properties resource="mysql.properties" /><!-- 配置环境.--><environments default="development"><!-- id属性必须和上面的default一致 --><environment id="development"><!--配置事务的类型--><transactionManager type="JDBC"></transactionManager><!--dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象源 --><dataSource type="POOLED"><!--配置连接数据库的4个基本信息--><property name="url" value="${url}" /><property name="username" value="${name}" /><property name="password" value="${password}" /><property name="driver" value="${driver}" /></dataSource></environment></environments>
</configuration>

对 mybatis-config.xml 中配置项的简单说明:

  • properties用于加载外部属性文件,通过指定 resource="mysql.properties",MyBatis 会尝试从当前目录下查找名为 "mysql.properties" 的文件,并将其中的属性值应用到配置 property 中
  • environments配置当前的环境,default 属性有 development 和 work 两种选择,默认是 development 开发模式,work 是工作模式    指定当前运行环境,通过 default 属性指定某个运行环境的标识符 id 来使用该运行环境 
  • environment配置每个 environment 定义的环境,可以配置多个运行环境,但是每个 SqlSessionFactory 实例只能选择一个运行环境。其 id 属性也有 development 和 work 两种选择,并且必须和上面的 default 属性一致   配置运行环境,通过 id 属性来标识该环境。如果配置了两个相同的 environment,即它们的 id 属性值相同,MyBatis 会用后面的覆盖掉前面的
  • transactionManager配置事务管理器类型,type 属性中有 JDBC 和 MANAGED 两种,一次只能配置一个
    • JDBC 使用 JdbcTransactionFactory 工厂生成的 JdbcTransaction 对象实现,以 JDBC 的方式进行数据库的提交、回滚等操作,它依赖于从数据源得到的连接来管理事务范围
    • MANAGED 使用 ManagedTransactionFactory 工厂生成的 ManagedTransaction 对象实现,它的提交和回滚不需要任何操作,而是把事务交给容器进行处理,默认情况下会关闭连接,如果不希望默认关闭,只要将其中的 closeConnection 属性设置为 false 即可
  • dataSource配置数据源类型,type属性有 UNPOOLED、POOLED 和 JNDI 三种选择:
    • UNPOOLED (UnpooledDataSourceFactory):采用非数据库池的管理方式,每次请求都会新建一个连接,并用完后关闭它,所以性能不是很高。该方式适用于只有小规模数量并发用户的简单应用程序
    • POOLED (PooledDataSourceFactory):采用连接池的概念将数据库链接对象 Connection 组织起来,可以在初始化时创建多个连接,使用时直接从连接池获取,避免了重复创建连接所需的初始化和认证时间,从而提升了效率,所以这种方式比较适合对性能要求高的应用中。在开发或测试环境中经常用到此方式
    • JNDI (JndiDataSourceFactory):数据源 JNDI 的实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的引用。在生产环境中优先考虑这种方式
  • property:dataSource 中的 property 元素就是数据库相关的配置信息

6 编写一个 DAO 或 Mapper 接口

在 com.mapper 目录下创建一个 UserMapper 接口

package com.mapper;import com.entity.User;
import org.apache.ibatis.annotations.Param;import java.util.List;public interface UserMapper {// 查询所有用户List<User> selectAllUser();// 通过 id 查询一个用户User selectUserById(int id);// 模糊查询,根据 name 字段查询用户List<User> selectUserByName(String name);// insert、update、delete的返回值都是int(影响行数)// 添加用户// 带两个参数,需要在接口中通过@Param注解指定名称(因为编译时参数名不会保留)int insertUser(@Param("name") String name,@Param("age") int age,@Param("sex") String sex);// 根据 id 更新用户int updateUser(@Param("id") int id,@Param("name") String name,@Param("age") int age,@Param("sex") String sex);// 根据 id 删除用户int deleteUsesr(int id);
}

7 编写 SQL 映射配置文件(重要)

        在目录 resources 创建 mapper 目录,然后在 mapper 目录下创建一个 UserMapper.xml 文件。Mybatis 中所有数据库的操作都基于 SQL 映射配置文件中配置的SQL语句,在 SQL 映射配置文件中可以配置任何类型的 SQL 语句。框架会根据配置文件中的参数配置,完成对 SQL 语句输入输出参数的映射配置。

相关属性
描述
namespace表示命名空间,用来设定当前 Mapper 配置文件的唯一标识,将来在 Java 程序中通过 namespace 属性值来定位到这个配置文件,namespace 属性值可以随意命名,建议使用 Mapper 接口的全类名命名,如 com.mapper.UserMapper
idSQL 映射语句的唯一标识
parameterType用来指定 SQL 语句中的参数类型,可以是一个简单类型,也可以是一个复杂对象类型
resultType 和 resultMap

用来指定 SQL 语句的返回值类型,resultType 用于指定返回的单一结果类型,而 resultMap 用于指定返回结果的映射关系,通常用于复杂的查询结果映射

parameterMap用来指定参数映射关系
sql用于定义可重用的 SQL 片段,可以在不同的 SQL 语句中重复使用,从而减少重复编写相同的 SQL 代码
include用于引用外部的 SQL 片段,可以在 SQL 映射文件中引用其他 SQL 片段,从而实现模块化的 SQL 代码编写
cache用于配置结果缓存,可以指定 SQL 语句的查询结果是否需要被缓存
#{}#{} 表示 SQL 语句的占位符
${}${} 表示 SQL 语句的拼接符

#{} 和 ${} 介绍

  • #{}SQL 语句的占位符,相当于JDBC中的 "?",它会自动进行 Java 类型和 JDBC 类型转换,可以防止 SQL 注入攻击。#{} 接受的输入参数的类型可以是简单类型、普通 JavaBean 或者 HashMap 。当接受简单类型时,#{} 中可以写 value 或者其他任意名称。如果接受的是JavaBean,它会通过 OGNL 读取对象中的属性值,例如,一个JavaBean user,它有一个属性 name,在映射文件中可以使用 #{user.name} 来引用这个属性值
  • ${}: SQL 语句的拼接符,会将接收到的参数在不进行 JDBC 类型转换的情况下拼接在 SQL 语句中,${} 里面必须要写参数,不然会报错。${} 接受输入参数的类型可以是简单类型、普通 JavaBean 或者 HashMap 。当接受简单类型时,${} 中只能写 value,而不能写其他任意名称。如果接受的是 JavaBean,它会通过 OGNL 读取对象中的属性值,同上
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--namespace-绑定一个对应dao/mapper接口-->
<mapper namespace="com.mapper.UserMapper"><!-- 查询所有用户 --><!--通过 resultType 指定查询的结果是 User 类型的数据只需要指定 resultType 的类型,MyBatis 会自动将查询的结果映射成 JavaBean 中的属性--><!-- id 和 com.mapper.UserMapper.selectAllUser 对应 --><select id="selectAllUser" resultType="com.entity.User">select * from person;</select><!-- 通过id查询一个用户 --><!-- 带一个简单类型的参数, 这种情况下parameterType属性可以省略,mybatis可以自动推断出类型 --><select id="selectUserById" parameterType="int" resultType="com.entity.User">select * from person where id = #{id};</select><!-- 模糊查询,根据name字段查询用户--><select id="selectUserByName" parameterType="String" resultType="com.entity.User">select * from person where name like '%${value}%';</select><!-- 添加用户--><!-- 带两个参数,需要在接口中通过@Param注解指定名称(因为编译时参数名不会保留) --><!-- insert、update、delete的返回值都是int(影响行数) --><insert id="insertUser" parameterType="com.entity.User">insert into person(name, age, sex)values (#{name}, #{age}, #{sex});</insert><!-- 根据id更新用户 --><update id="updateUser" parameterType="com.entity.User">update person set name = #{name},age = #{age},sex = #{sex} where id = #{id}</update><!-- 根据id删除用户 --><delete id="deleteUser" parameterType="int">delete from person where id = #{id}</delete>
</mapper>

8 加载映射文件

将上面创建的 UserMapper.xml 文件配置到全局配置文件 mybatis-config.xml 中

<!--指定映射配置文件的位置,这个映射配置文件指的是每个业务独立的配置文件-->
<mappers><mapper resource="mapper/UserMapper.xml"/>
</mappers>

9 导入日志文件

导入日志文件,在 resources 目录下创建 log4j.properties 配置文件,并且导入如下配置(如果log报错则以管理员的方式启动 Eclipse 或 IDEA)

# 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

10 创建 MyBatisTest 测试类

使用 JDBC 的事务管理在进行增删改操作时,需要进行提交事务,也就是 sqlSession.commit(),否则数据不会操作成功

public class MybatisTest {//定义 SqlSessionSqlSession sqlSession = null;@Beforepublic void getSqlSession() throws IOException {//加载 mybatis 全局配置文件 Resources// 原 InputStream is = MybatisTest.class.getClassLoader().getResourceAsStream("mybatis-config.xml");InputStream is = Resources.getResourceAsStream("mybatis-config.xml");//创建 SqlSessionFactory 对象SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);//根据 sqlSessionFactory 产生 sessionsqlSession = sqlSessionFactory.openSession();}//查询所有用户数据@Testpublic void testSelectAllUser() {/*** 注意:这个字符串由 UserMapper.xml 文件中的两个部分构成(namespace + id)* <mapper namespace="com.mapper.UserMapper">中 namespace 的值* <select id="selectAllUser" > 中的 id 值* 这样Mybatis才能找到需要的SQL*/String statement = "com.mapper.UserMapper.selectAllUser";List<User> listUser = sqlSession.selectList(statement);for (User user : listUser) {System.out.println(user);}sqlSession.close();}//根据Id查询一个用户数据@Testpublic void testSelectUserById() {String statement = "com.mapper.UserMapper.selectUserById";User user = sqlSession.selectOne(statement, 1);System.out.println(user);sqlSession.close();}//模糊查询:根据 person 表的 name 字段@Testpublic void testSelectUserByName() {String statement = "com.mapper.UserMapper.selectUserByName";List<User> listUser = sqlSession.selectList(statement, "大");for (User user : listUser) {System.out.println(user);}sqlSession.close();}//添加一个用户数据@Testpublic void testInsertUser() {String statement = "com.mapper.UserMapper.insertUser";User user = new User();user.setName("嫦娥");user.setAge(24);user.setSex("女");int i = sqlSession.insert(statement, user);System.out.println( (i>0)? "添加成功!":"添加失败!");//提交插入的数据sqlSession.commit();sqlSession.close();}//根据id修改用户数据@Testpublic void testUpdateUser(){//如果设置的 id不存在,那么数据库没有数据更改String statement = "com.mapper.UserMapper.updateUser";User user = new User();user.setId(10);user.setName("王红");user.setAge(26);user.setSex("女");int i = sqlSession.update(statement, user);System.out.println( (i>0)? "修改成功!":"修改失败!");//提交数据sqlSession.commit();sqlSession.close();}//根据id删除用户数据@Testpublic void testDeleteUser(){String statement = "com.mapper.UserMapper.deleteUser";int i = sqlSession.delete(statement, 10);System.out.println( (i>0)? "删除成功!":"删除失败!");sqlSession.commit();sqlSession.close();}
}

部分执行结果

执行过程(添加一个用户)

11 参考文档

Mybatis3详解(二)----Mybatis的第一个入门实例 - 唐浩荣 - 博客园 (cnblogs.com)

MyBatis中#{}占位符与${}拼接符的用法说明_java_脚本之家 (jb51.net)


文章转载自:
http://dinncoweldment.ydfr.cn
http://dinncoreins.ydfr.cn
http://dinncojuxtapose.ydfr.cn
http://dinncocrystallography.ydfr.cn
http://dinncoliturgist.ydfr.cn
http://dinncoapraxia.ydfr.cn
http://dinncolatinization.ydfr.cn
http://dinncononnitrogenous.ydfr.cn
http://dinncolifelikeness.ydfr.cn
http://dinncomouchoir.ydfr.cn
http://dinncopeadeutics.ydfr.cn
http://dinncostrigil.ydfr.cn
http://dinncoequiponderant.ydfr.cn
http://dinncoacrocarpous.ydfr.cn
http://dinncobooty.ydfr.cn
http://dinncosolaria.ydfr.cn
http://dinncounalienated.ydfr.cn
http://dinncozeitgeist.ydfr.cn
http://dinncobreathlessly.ydfr.cn
http://dinncosoothly.ydfr.cn
http://dinncostrophulus.ydfr.cn
http://dinncoacaleph.ydfr.cn
http://dinncothiomersal.ydfr.cn
http://dinncotreaty.ydfr.cn
http://dinncoexorcise.ydfr.cn
http://dinncorectus.ydfr.cn
http://dinncofrusta.ydfr.cn
http://dinncomastership.ydfr.cn
http://dinncoatheistical.ydfr.cn
http://dinncolaryngology.ydfr.cn
http://dinncocyclostome.ydfr.cn
http://dinncoxerophil.ydfr.cn
http://dinncorespond.ydfr.cn
http://dinncoellipsoid.ydfr.cn
http://dinncoreflexed.ydfr.cn
http://dinncoyaup.ydfr.cn
http://dinncoaddressograph.ydfr.cn
http://dinncopudency.ydfr.cn
http://dinncolanai.ydfr.cn
http://dinncovarisized.ydfr.cn
http://dinncodock.ydfr.cn
http://dinncoundisturbed.ydfr.cn
http://dinncoflocculous.ydfr.cn
http://dinncodoctorand.ydfr.cn
http://dinncorendu.ydfr.cn
http://dinncospritsail.ydfr.cn
http://dinncopanhellenism.ydfr.cn
http://dinncodisjection.ydfr.cn
http://dinncosophism.ydfr.cn
http://dinncohopbine.ydfr.cn
http://dinncoforced.ydfr.cn
http://dinncobodywork.ydfr.cn
http://dinncojillaroo.ydfr.cn
http://dinncoyum.ydfr.cn
http://dinncobatt.ydfr.cn
http://dinncowhare.ydfr.cn
http://dinncouniate.ydfr.cn
http://dinncoarrondissement.ydfr.cn
http://dinncoamphicar.ydfr.cn
http://dinncobrushwood.ydfr.cn
http://dinncoconserve.ydfr.cn
http://dinncojumar.ydfr.cn
http://dinncoswashbuckle.ydfr.cn
http://dinncoredundantly.ydfr.cn
http://dinncosumph.ydfr.cn
http://dinncoaccumulative.ydfr.cn
http://dinncoearphone.ydfr.cn
http://dinncoflounderingly.ydfr.cn
http://dinncoaurar.ydfr.cn
http://dinncoclisthenes.ydfr.cn
http://dinncosofthearted.ydfr.cn
http://dinncoargillite.ydfr.cn
http://dinncomcm.ydfr.cn
http://dinncoembow.ydfr.cn
http://dinncointerlay.ydfr.cn
http://dinncostylobate.ydfr.cn
http://dinncoimpropriation.ydfr.cn
http://dinncodownpress.ydfr.cn
http://dinncocusec.ydfr.cn
http://dinncorenationalization.ydfr.cn
http://dinncootp.ydfr.cn
http://dinncoguaranty.ydfr.cn
http://dinncopropulsory.ydfr.cn
http://dinncobookstack.ydfr.cn
http://dinncoknightly.ydfr.cn
http://dinncowhimper.ydfr.cn
http://dinncoconfiture.ydfr.cn
http://dinncoboredom.ydfr.cn
http://dinncobewildering.ydfr.cn
http://dinncopirogue.ydfr.cn
http://dinncokoza.ydfr.cn
http://dinncoanorthite.ydfr.cn
http://dinncoweld.ydfr.cn
http://dinncolebanese.ydfr.cn
http://dinncodinoflagellate.ydfr.cn
http://dinncoganefo.ydfr.cn
http://dinnconapless.ydfr.cn
http://dinncofrunze.ydfr.cn
http://dinncopalatably.ydfr.cn
http://dinncofixer.ydfr.cn
http://www.dinnco.com/news/141923.html

相关文章:

  • 沈阳做微网站的公司最新新闻热点事件
  • 网站开发工资百度招商加盟
  • 用什么做网站更快捷方便网站制作的流程是什么
  • 如何做网站平台备案查询平台官网
  • 哪些网站可以接工程做google关键词搜索工具
  • 怎么做网站支付营销策略有哪些内容
  • 淘宝网卖家中心入口北京外贸网站优化
  • java都是做网站吗千锋教育郑州校区
  • 蓝色科技网站建设野狼seo团队
  • 国外可以做非法网站吗长沙疫情最新情况
  • 网站推广策划案关键词北京网络推广优化公司
  • 公司网站建设推广词长沙企业关键词优化
  • 玉树北京网站建设百度推广优化师培训
  • 金融行业网站模板小游戏推广接单平台
  • 连云港权威网站建设价格石家庄seo排名外包
  • 做招聘信息的网站有哪些长沙网站建站模板
  • 网站模板内容怎么改网络安全培训
  • 网站通常用什么编程做松松软文平台
  • 工信网备案网站俄罗斯搜索引擎yandex推广入口
  • 最浪漫的编程代码广州seo软件
  • 工商 经营性网站备案重庆seo整站优化方案范文
  • 海口小微企业网站建设长沙网站优化培训
  • wordpress安装502seo网站推广方案
  • 淘宝联盟怎么建设网站桔子seo工具
  • 做网站干嘛淘宝搜索词排名查询
  • 外贸网站制作推广赚佣金的平台
  • 新闻网站怎么做缓存seo是搜索引擎优化
  • 注册上海公司福建键seo排名
  • 可视化编辑器wordpress临沂seo代理商
  • wordpress升级注意事项seo优化推广软件